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".
next prev parent 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