Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
 help / color / mirror / Atom feed
From: "Martin Storsjö" <martin@martin.st>
To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org>
Subject: Re: [FFmpeg-devel] av_fopen_utf8 and cross-DLL CRT object sharing issue on Windows
Date: Mon, 9 May 2022 12:41:39 +0300 (EEST)
Message-ID: <51bd257e-1466-66b5-7130-c05a50979b2b@martin.st> (raw)
In-Reply-To: <DM8P223MB036545C0B5609796883406D1BAC69@DM8P223MB0365.NAMP223.PROD.OUTLOOK.COM>

On Mon, 9 May 2022, Soft Works wrote:

>
>
>> -----Original Message-----
>> From: ffmpeg-devel <ffmpeg-devel-bounces@ffmpeg.org> On Behalf Of
>> Martin Storsjö
>> Sent: Sunday, May 8, 2022 10:12 PM
>> To: FFmpeg development discussions and patches <ffmpeg-
>> devel@ffmpeg.org>
>> Subject: Re: [FFmpeg-devel] av_fopen_utf8 and cross-DLL CRT object
>> sharing issue on Windows
>>
>> On Sat, 7 May 2022, Soft Works wrote:
>>
>>> Ah yes of course, thanks for the explanation. I still wonder whether
>>> there aren't any other issues when multiple CRTs are being used?
>>>
>>> Or are the file IO APIs the only "weak" point with regards to
>>> multiple CRTs being used?
>>
>> In the case of ffmpeg, yes.
>>
>> For generic library design, you'd have an issue anywhere where you
>> pass
>> CRT resources around - file descriptors from open, FILE*, and indeed
>> as
>> you mentioned - allocating and freeing memory with malloc/free in
>> different DLLs. But as long as the library design is such that you
>> don't
>> hand over ownership of allocations and don't pass such objects across
>> DLL
>> boundaries, there's no issue.
>
> Yup, understood. I thought there would be many more, but I realized
> that those "many more" I thought about are all C++ things, not C.
>
> So, putting this all together, I agree that the existence of
> av_fopen_utf8 (as a public API!) is rather unfortunate. To make this
> consistent, it would be necessary to provide av_ equivalents to
> all the file APIs as well (but there are quite a few).

Indeed - for the fopen family of functions, we would need to duplicate all 
of fopen/fclose/fprintf/fwrite/fputs and whatever might happen to be used. 
So that doesn't seem worthwhile.

> So I wonder whether it wouldn't make sense to deprecate this as
> a public API member?

I agree that it probably would be the best way forward, to deprecate it as 
a public API, without any suggested replacement. A quick googling didn't 
find any real use of the function outside of ffmpeg itself, I only found 
hits in language wrappers (which try to map every single function to the 
other language). So I think that would have minimal impact on others.

We could then adjust the function to be a header inline function (which 
takes care of the duplication into all libraries), just like the other 
wchar<->utf8 functions we have in libavutil/wchar_filename.h, so we safely 
could use them within fftools too.

// Martin
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".

  reply	other threads:[~2022-05-09  9:41 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-04-20 12:47 Martin Storsjö
2022-05-07  4:22 ` Soft Works
2022-05-07  4:32   ` Andreas Rheinhardt
2022-05-07  5:02     ` Soft Works
2022-05-08 20:11       ` Martin Storsjö
2022-05-09  0:30         ` Soft Works
2022-05-09  9:41           ` Martin Storsjö [this message]
2022-05-09 10:38             ` Soft Works
2022-05-09 10:47               ` Martin Storsjö
2022-05-09 10:53                 ` Soft Works
2022-05-08 20:01   ` Martin Storsjö
2022-05-09  0:28     ` Soft Works
2022-05-09  9:36       ` Martin Storsjö
2022-05-09 10:59         ` Soft Works

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=51bd257e-1466-66b5-7130-c05a50979b2b@martin.st \
    --to=martin@martin.st \
    --cc=ffmpeg-devel@ffmpeg.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \
		ffmpegdev@gitmailbox.com
	public-inbox-index ffmpegdev

Example config snippet for mirrors.


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git