From: Nicolas George <george@nsup.org> To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org> Subject: [FFmpeg-devel] What is FFmpeg and what should it be Date: Sun, 30 Jul 2023 15:04:35 +0200 Message-ID: <ZMZf4wqwbOhSyO18@phare.normalesup.org> (raw) In-Reply-To: <CABGuwE=7P_zGLySY5dc1wLiAxiC0fp_HOvuv1-OpXK2Zuq=Cjw@mail.gmail.com> [-- Attachment #1.1: Type: text/plain, Size: 4734 bytes --] Kieran Kunhya (12023-07-28): > FFmpeg doesn't implement TCP in userspace, it doesn't implement the > WiFi protocol etc etc. Different layers are delegated to different > programs. Hi. You seem to be discussing this in more good faith than I previously imagined, so I will try to tone done the irritation in my mails. I am also changing the subject of the mail, so that more people will have a look at it. I have already posted about my conception of what FFmpeg is and should be in the previous mail: http://ffmpeg.org/pipermail/ffmpeg-devel/2023-July/312735.html There are at least two necessary conditions for something to go into FFmpeg: that it is useful to users, at least a few of them, and that somebody bothered to write the code. FFmpeg is designed to run under an operating system, where a network stack is usually available whenever network hardware exists, so there is absolutely no need for that in FFmpeg. But if people started to routinely use FFmpeg on some kind of bare-metal microcontroller where network hardware exists but the official network stack is too big to share the space with FFmpeg, and if somebody were to propose a limited network stack based on lavu's cryptographic primitives, then it would totally make sense to accept it. Yes, this example is far-fetched, because you chose a case where only a far-fetched example works. You insist on having different layers, and I agree it is somewhat relevant. But remember: the Internet is not built on the nice theoretical layers of the OSI model. The protocols of Internet are much more messy, because they insist more on pragmatism than aesthetics, and that is what made their success. If there are well-defined layers, then probably the others layers are already implemented, the “different programs” exist, are very satisfactory and very widely available. Then FFmpeg does not need to have them natively. But if these “different programs” for different layers do not exist, or are not satisfactory, or are not widely available, then we have to develop them. And if that happens, it would be idiot to force them to be separate projects. Maybe later, when they have become stable, and other programs use them, it will make sense to split them into their own separate project. But in the beginning, it is a waste of effort. > Is FFmpeg going to implement HTTP3 (QUIC) in full? QUIC is a layered protocol. I do not know. I have followed things from afar, does HTTP3 brings benefits from users, apart from more efficient tracking and faster delivery of ads? Anyway, your sentence brigs a point that is very important: *** IT DOES NOT HAVE TO BE COMPLETE TO BE USEFUL. *** See below for more about it. > All of your examples are small and self-contained. SDR is definitely > not small and self-contained. It's a field bigger than multimedia and > there are many layers of framing inside. Michael's code seems pretty self-contained to me. And once again: *** IT DOES NOT HAVE TO BE COMPLETE TO BE USEFUL. *** As far as I understand it, if I bought the hardware tomorrow, the code that Michael already wrote, and that is a tiny little bit of the whole field of SDR, would already bring me features that are not available in any other piece of Libre Software, or possibly at the cost of fragile plumbing. This is enough of an argument to warrant inclusion. And it does not make sense to insist that one of our most talented developers waste his time with the trouble of maintaining a separate project just to satisfy aesthetic considerations of “proper layering”. I have another example of “it does not have to be complete to be useful”: XML. The whole XML standard is quite complex, it involves DVD and schema validation, loading external entities, etc. But the use of XML in multimedia is much more limited, it only involves parsing “<foo bar="qux">”-style text. Now, “proper layering” dictates using a real XML library. But real XML libraries are designed to support most of the standard, and that affects their design as a whole. That means every time we use a real XML library to parse “<foo bar="qux">”, we pay the price for the complexity of the whole language, in terms of efficiency, reliability, security exposure. If we had our own parser for “<foo bar="qux">”, we would have to pay a price only once. “Proper layering” has benefits, but it also has costs. Therefore it is a bad idea to adhere to it dogmatically. FFmpeg has been successful because it relied on pragmatism rather than dogmatic adherence to principles. Let us continue that way. Regards, -- Nicolas George [-- Attachment #1.2: signature.asc --] [-- Type: application/pgp-signature, Size: 833 bytes --] [-- Attachment #2: Type: text/plain, Size: 251 bytes --] _______________________________________________ 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:[~2023-07-30 13:04 UTC|newest] Thread overview: 84+ messages / expand[flat|nested] mbox.gz Atom feed top 2023-07-22 19:29 [FFmpeg-devel] [PATCH 1/6] configure: libavradio support Michael Niedermayer 2023-07-22 19:29 ` [FFmpeg-devel] [PATCH 2/6] avutil/log: Add AV_CLASS_CATEGORY_RADIO_INPUT Michael Niedermayer 2023-07-22 20:30 ` Paul B Mahol 2023-07-22 19:29 ` [FFmpeg-devel] [PATCH 3/6] avformat: add support for demuxers/inputs from avradio Michael Niedermayer 2023-07-22 20:35 ` Paul B Mahol 2023-07-22 19:29 ` [FFmpeg-devel] [PATCH 4/6] avdevice/utils: add test for AV_CLASS_CATEGORY_RADIO_INPUT Michael Niedermayer 2023-07-22 19:29 ` [FFmpeg-devel] [PATCH 5/6] fftools: avradio support Michael Niedermayer 2023-07-22 21:39 ` Lynne 2023-07-23 15:23 ` Michael Niedermayer 2023-07-23 18:49 ` Tomas Härdin 2023-07-23 19:01 ` James Almer 2023-07-23 22:56 ` Michael Niedermayer 2023-07-24 8:19 ` Nicolas George 2023-07-24 15:57 ` Michael Niedermayer 2023-07-24 22:30 ` Tomas Härdin 2023-07-25 14:17 ` Tomas Härdin 2023-07-24 20:19 ` Tomas Härdin 2023-07-25 9:37 ` Nicolas George 2023-07-26 10:37 ` Michael Niedermayer 2023-07-27 13:05 ` Tomas Härdin 2023-07-27 18:36 ` Michael Niedermayer 2023-07-27 18:48 ` Nicolas George [not found] ` <CC2992B9-B047-4724-8DE5-01C02CBE31FD@cosmin.at> 2023-08-01 19:51 ` Cosmin Stejerean 2023-08-01 20:06 ` Paul B Mahol 2023-08-02 12:46 ` Michael Niedermayer 2023-08-02 13:00 ` Paul B Mahol 2023-08-02 13:01 ` Michael Niedermayer 2023-07-24 8:13 ` Nicolas George 2023-07-24 20:22 ` Tomas Härdin 2023-07-25 9:33 ` Nicolas George 2023-07-25 9:51 ` Kieran Kunhya 2023-07-25 9:56 ` Nicolas George 2023-07-25 10:16 ` Kieran Kunhya 2023-07-25 13:55 ` Nicolas George 2023-07-25 14:37 ` Kieran Kunhya 2023-07-27 17:56 ` Nicolas George 2023-07-28 11:07 ` Kieran Kunhya 2023-07-30 13:04 ` Nicolas George [this message] 2023-07-30 17:07 ` [FFmpeg-devel] What is FFmpeg and what should it be Andrey Turkin 2023-07-30 18:29 ` Kieran Kunhya 2023-07-30 18:54 ` Nicolas George 2023-08-01 7:48 ` Rémi Denis-Courmont 2023-07-31 13:56 ` Tomas Härdin 2023-08-03 13:25 ` Nicolas George 2023-08-03 20:50 ` Tomas Härdin 2023-08-02 1:44 ` Vittorio Giovara 2023-08-02 12:55 ` Michael Niedermayer 2023-08-02 12:59 ` Jean-Baptiste Kempf 2023-08-02 14:12 ` Brad Isbell 2023-08-02 14:19 ` Nicolas George 2023-08-02 14:26 ` Michael Niedermayer 2023-08-02 14:30 ` Nicolas George [not found] ` <A3B35B92-8333-4637-B4AA-FA9D9750E784@cosmin.at> 2023-08-02 15:46 ` Cosmin Stejerean 2023-08-03 15:40 ` Michael Niedermayer 2023-08-02 14:20 ` Michael Niedermayer 2023-08-02 14:44 ` Jean-Baptiste Kempf 2023-08-03 17:45 ` Michael Niedermayer 2023-08-03 18:24 ` Kieran Kunhya 2023-08-03 19:25 ` Michael Niedermayer 2023-08-03 20:04 ` Kieran Kunhya 2023-08-04 17:09 ` Michael Niedermayer 2023-08-04 17:35 ` Nicolas George 2023-08-04 23:17 ` Kieran Kunhya 2023-08-05 18:55 ` Michael Niedermayer 2023-08-05 19:17 ` Paul B Mahol 2023-08-05 23:32 ` Vittorio Giovara 2023-08-06 8:28 ` Tomas Härdin 2023-08-06 19:53 ` Michael Niedermayer 2023-08-07 15:39 ` Rémi Denis-Courmont 2023-08-08 15:22 ` Michael Niedermayer 2023-08-08 15:37 ` Paul B Mahol 2023-08-08 18:53 ` Rémi Denis-Courmont 2023-08-09 15:59 ` Michael Niedermayer 2023-08-09 16:24 ` Paul B Mahol 2023-08-10 12:39 ` Nicolas George 2023-08-10 14:58 ` Vittorio Giovara 2023-08-12 17:12 ` Michael Niedermayer 2023-08-10 15:01 ` James Almer 2023-08-10 15:43 ` Jean-Baptiste Kempf 2023-08-10 18:39 ` Tomas Härdin 2023-08-03 11:38 ` Tomas Härdin 2023-08-03 13:29 ` Nicolas George 2023-07-25 12:02 ` [FFmpeg-devel] [PATCH 5/6] fftools: avradio support Tomas Härdin 2023-07-22 19:29 ` [FFmpeg-devel] [PATCH 6/6] tools/uncoded_frame: " Michael Niedermayer
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=ZMZf4wqwbOhSyO18@phare.normalesup.org \ --to=george@nsup.org \ --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