Re: [FFmpeg-devel] [PATCH] avformat/mxfenc: AVC Intra support
On Wed, Oct 29, 2014 at 10:27:25AM +0100, tomas.har...@codemill.se wrote: > On 2014-10-28 23:38, Thomas Mundt wrote: > >Carl Eugen, I changed the indentations and attached a unified diff. > >Since I´m on windows I used turtoise git. I hope that´s okay. > > > >Regards, > >Thomas > > Looks good to me applied thanks [...] -- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB The real ebay dictionary, page 1 "Used only once"- "Some unspecified defect prevented a second use" "In good condition" - "Can be repaird by experienced expert" "As is" - "You wouldnt want it even if you were payed for it, if you knew ..." signature.asc Description: Digital signature ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] [PATCH] avformat/mxfenc: AVC Intra support
On 2014-10-28 23:38, Thomas Mundt wrote: Carl Eugen, I changed the indentations and attached a unified diff. Since I´m on windows I used turtoise git. I hope that´s okay. Regards, Thomas Looks good to me /Tomas ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] [PATCH] avformat/mxfenc: AVC Intra support
Carl Eugen, I changed the indentations and attached a unified diff. Since I´m on windows I used turtoise git. I hope that´s okay. Regards, Thomas avci_mxf.diff Description: Binary data ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] [PATCH] avformat/mxfenc: AVC Intra support
Okay. I will do so next patch. ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] [PATCH] avformat/mxfenc: AVC Intra support
On Tuesday 28 October 2014 03:36:05 pm Thomas Mundt wrote: > -mxf_write_cdci_common(s, st, mxf_mpegvideo_descriptor_key, 8+5); > -// bit rate > -mxf_write_local_tag(pb, 4, 0x8000); > -avio_wb32(pb, sc->video_bit_rate); > - > -// profile and level > -mxf_write_local_tag(pb, 1, 0x8007); > -if (!st->codec->profile) > -profile_and_level |= 0x80; // escape bit > -avio_w8(pb, profile_and_level); It makes reviewing your patch much easier if you do not re-indent these lines: Just leave them unchanged, consider sending a followup to fix the indentation. (Or leave it to the committer.) > +} > +else > +mxf_write_cdci_common(s, st, mxf_mpegvideo_descriptor_key, 0); While here, please make this: } else { mxf_write_cdci_common(=; } to follow the preferred coding style. And please consider to commit your patch locally, create a patchfile with "git format-patch HEAD^" and attach it to your mail. Thank you, Carl Eugen ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] [PATCH] avformat/mxfenc: AVC Intra support
I´m not happy with the for-loop I coded yesterday night, so I made a new patch. Regards, Thomas --- a/libavformat/mxfenc.c +++ b/libavformat/mxfenc.c @@ -42,6 +42,8 @@ #include "libavutil/time_internal.h" #include "libavcodec/bytestream.h" #include "libavcodec/dnxhddata.h" +#include "libavcodec/h264.h" +#include "libavcodec/internal.h" #include "audiointerleave.h" #include "avformat.h" #include "avio_internal.h" @@ -98,6 +100,7 @@ { AV_CODEC_ID_DVVIDEO, 15 }, { AV_CODEC_ID_DNXHD, 24 }, { AV_CODEC_ID_JPEG2000, 34 }, +{ AV_CODEC_ID_H264, 35 }, { AV_CODEC_ID_NONE } }; @@ -274,6 +277,11 @@ { 0x06,0x0e,0x2b,0x34,0x01,0x02,0x01,0x01,0x0d,0x01,0x03,0x01,0x15,0x01,0x08,0x00 }, { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x07,0x04,0x01,0x02,0x02,0x03,0x01,0x01,0x00 }, mxf_write_cdci_desc }, +// H.264 +{ { 0x06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x0a,0x0D,0x01,0x03,0x01,0x02,0x10,0x60,0x01 }, + { 0x06,0x0E,0x2B,0x34,0x01,0x02,0x01,0x01,0x0D,0x01,0x03,0x01,0x15,0x01,0x05,0x00 }, + { 0x06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x0a,0x04,0x01,0x02,0x02,0x01,0x00,0x00,0x00 }, + mxf_write_mpegvideo_desc }, { { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }, { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }, { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }, @@ -989,17 +997,21 @@ MXFStreamContext *sc = st->priv_data; int profile_and_level = (st->codec->profile<<4) | st->codec->level; -mxf_write_cdci_common(s, st, mxf_mpegvideo_descriptor_key, 8+5); +if (st->codec->codec_id != AV_CODEC_ID_H264) { +mxf_write_cdci_common(s, st, mxf_mpegvideo_descriptor_key, 8+5); -// bit rate -mxf_write_local_tag(pb, 4, 0x8000); -avio_wb32(pb, sc->video_bit_rate); - -// profile and level -mxf_write_local_tag(pb, 1, 0x8007); -if (!st->codec->profile) -profile_and_level |= 0x80; // escape bit -avio_w8(pb, profile_and_level); +// bit rate +mxf_write_local_tag(pb, 4, 0x8000); +avio_wb32(pb, sc->video_bit_rate); + +// profile and level +mxf_write_local_tag(pb, 1, 0x8007); +if (!st->codec->profile) +profile_and_level |= 0x80; // escape bit +avio_w8(pb, profile_and_level); +} +else +mxf_write_cdci_common(s, st, mxf_mpegvideo_descriptor_key, 0); } static void mxf_write_generic_sound_common(AVFormatContext *s, AVStream *st, const UID key, unsigned size) @@ -1572,6 +1584,96 @@ return 1; } +static const struct { +UID uid; +int frame_size; +int profile; +uint8_t interlaced; +} mxf_h264_codec_uls[] = { +{{ 0x06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x0a,0x04,0x01,0x02,0x02,0x01,0x32,0x20,0x01 }, 0, 110, 0 }, // AVC High 10 Intra +{{ 0x06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x0a,0x04,0x01,0x02,0x02,0x01,0x32,0x21,0x01 }, 232960, 0, 1 }, // AVC Intra 50 1080i60 +{{ 0x06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x0a,0x04,0x01,0x02,0x02,0x01,0x32,0x21,0x02 }, 281088, 0, 1 }, // AVC Intra 50 1080i50 +{{ 0x06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x0a,0x04,0x01,0x02,0x02,0x01,0x32,0x21,0x03 }, 232960, 0, 0 }, // AVC Intra 50 1080p30 +{{ 0x06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x0a,0x04,0x01,0x02,0x02,0x01,0x32,0x21,0x04 }, 281088, 0, 0 }, // AVC Intra 50 1080p25 +{{ 0x06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x0a,0x04,0x01,0x02,0x02,0x01,0x32,0x21,0x08 }, 116736, 0, 0 }, // AVC Intra 50 720p60 +{{ 0x06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x0a,0x04,0x01,0x02,0x02,0x01,0x32,0x21,0x09 }, 140800, 0, 0 }, // AVC Intra 50 720p50 +{{ 0x06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x0a,0x04,0x01,0x02,0x02,0x01,0x32,0x30,0x01 }, 0, 122, 0 }, // AVC High 422 Intra +{{ 0x06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x0a,0x04,0x01,0x02,0x02,0x01,0x32,0x31,0x01 }, 472576, 0, 1 }, // AVC Intra 100 1080i60 +{{ 0x06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x0a,0x04,0x01,0x02,0x02,0x01,0x32,0x31,0x02 }, 568832, 0, 1 }, // AVC Intra 100 1080i50 +{{ 0x06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x0a,0x04,0x01,0x02,0x02,0x01,0x32,0x31,0x03 }, 472576, 0, 0 }, // AVC Intra 100 1080p30 +{{ 0x06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x0a,0x04,0x01,0x02,0x02,0x01,0x32,0x31,0x04 }, 568832, 0, 0 }, // AVC Intra 100 1080p25 +{{ 0x06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x0a,0x04,0x01,0x02,0x02,0x01,0x32,0x31,0x08 }, 236544, 0, 0 }, // AVC Intra 100 720p60 +{{ 0x06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x0a,0x04,0x01,0x02,0x02,0x01,0x32,0x31,0x09 }, 284672, 0, 0 }, // AVC Intra 100 720p50 +}; + +static int mxf_parse_h264_frame(AVFormatContext *s, AVStream *st, +AVPacket *pkt, MXFIndexEntry *e) +{ +MXFContext *mxf = s->priv_data; +MXFStreamContext *sc = st->priv_data; +static const int mxf_h264_num_codec_uls = sizeof(mxf_h264_codec_uls)/sizeof(mxf_h264_codec_uls[0]);
Re: [FFmpeg-devel] [PATCH] avformat/mxfenc: AVC Intra support
@ Michael: Sorry, I`m subscribed now. CODEC_ID_H264 changed. @ Kieran: Maybe this would make sense as an option. But in a future step. :-) @ Tomas:Thanks for your suggestions!The component_depth part was taken from Michael´s patch last month. But it also can be changed to 10 bit fixed for AVCI. Here is the new patch: --- a/libavformat/mxfenc.c +++ b/libavformat/mxfenc.c @@ -42,6 +42,8 @@ #include "libavutil/time_internal.h" #include "libavcodec/bytestream.h" #include "libavcodec/dnxhddata.h" +#include "libavcodec/h264.h" +#include "libavcodec/internal.h" #include "audiointerleave.h" #include "avformat.h" #include "avio_internal.h" @@ -98,6 +100,7 @@ { AV_CODEC_ID_DVVIDEO, 15 }, { AV_CODEC_ID_DNXHD, 24 }, { AV_CODEC_ID_JPEG2000, 34 }, +{ AV_CODEC_ID_H264, 35 }, { AV_CODEC_ID_NONE } }; @@ -274,6 +277,11 @@ { 0x06,0x0e,0x2b,0x34,0x01,0x02,0x01,0x01,0x0d,0x01,0x03,0x01,0x15,0x01,0x08,0x00 }, { 0x06,0x0e,0x2b,0x34,0x04,0x01,0x01,0x07,0x04,0x01,0x02,0x02,0x03,0x01,0x01,0x00 }, mxf_write_cdci_desc }, +// H.264 +{ { 0x06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x0a,0x0D,0x01,0x03,0x01,0x02,0x10,0x60,0x01 }, + { 0x06,0x0E,0x2B,0x34,0x01,0x02,0x01,0x01,0x0D,0x01,0x03,0x01,0x15,0x01,0x05,0x00 }, + { 0x06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x0a,0x04,0x01,0x02,0x02,0x01,0x00,0x00,0x00 }, + mxf_write_mpegvideo_desc }, { { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }, { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }, { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 }, @@ -989,17 +997,21 @@ MXFStreamContext *sc = st->priv_data; int profile_and_level = (st->codec->profile<<4) | st->codec->level; -mxf_write_cdci_common(s, st, mxf_mpegvideo_descriptor_key, 8+5); +if (st->codec->codec_id != AV_CODEC_ID_H264) { +mxf_write_cdci_common(s, st, mxf_mpegvideo_descriptor_key, 8+5); -// bit rate -mxf_write_local_tag(pb, 4, 0x8000); -avio_wb32(pb, sc->video_bit_rate); - -// profile and level -mxf_write_local_tag(pb, 1, 0x8007); -if (!st->codec->profile) -profile_and_level |= 0x80; // escape bit -avio_w8(pb, profile_and_level); +// bit rate +mxf_write_local_tag(pb, 4, 0x8000); +avio_wb32(pb, sc->video_bit_rate); + +// profile and level +mxf_write_local_tag(pb, 1, 0x8007); +if (!st->codec->profile) +profile_and_level |= 0x80; // escape bit +avio_w8(pb, profile_and_level); +} +else +mxf_write_cdci_common(s, st, mxf_mpegvideo_descriptor_key, 0); } static void mxf_write_generic_sound_common(AVFormatContext *s, AVStream *st, const UID key, unsigned size) @@ -1572,6 +1584,88 @@ return 1; } +static const struct { +UID uid; +int frame_size; +int profile; +uint8_t interlaced; +} mxf_h264_codec_uls[] = { +{{ 0x06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x0a,0x04,0x01,0x02,0x02,0x01,0x32,0x21,0x01 }, 232960, 0, 1 }, // AVC Intra 50 1080i60 +{{ 0x06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x0a,0x04,0x01,0x02,0x02,0x01,0x32,0x21,0x02 }, 281088, 0, 1 }, // AVC Intra 50 1080i50 +{{ 0x06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x0a,0x04,0x01,0x02,0x02,0x01,0x32,0x21,0x03 }, 232960, 0, 0 }, // AVC Intra 50 1080p30 +{{ 0x06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x0a,0x04,0x01,0x02,0x02,0x01,0x32,0x21,0x04 }, 281088, 0, 0 }, // AVC Intra 50 1080p25 +{{ 0x06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x0a,0x04,0x01,0x02,0x02,0x01,0x32,0x21,0x08 }, 116736, 0, 0 }, // AVC Intra 50 720p60 +{{ 0x06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x0a,0x04,0x01,0x02,0x02,0x01,0x32,0x21,0x09 }, 140800, 0, 0 }, // AVC Intra 50 720p50 +{{ 0x06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x0a,0x04,0x01,0x02,0x02,0x01,0x32,0x31,0x01 }, 472576, 0, 1 }, // AVC Intra 100 1080i60 +{{ 0x06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x0a,0x04,0x01,0x02,0x02,0x01,0x32,0x31,0x02 }, 568832, 0, 1 }, // AVC Intra 100 1080i50 +{{ 0x06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x0a,0x04,0x01,0x02,0x02,0x01,0x32,0x31,0x03 }, 472576, 0, 0 }, // AVC Intra 100 1080p30 +{{ 0x06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x0a,0x04,0x01,0x02,0x02,0x01,0x32,0x31,0x04 }, 568832, 0, 0 }, // AVC Intra 100 1080p25 +{{ 0x06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x0a,0x04,0x01,0x02,0x02,0x01,0x32,0x31,0x08 }, 236544, 0, 0 }, // AVC Intra 100 720p60 +{{ 0x06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x0a,0x04,0x01,0x02,0x02,0x01,0x32,0x31,0x09 }, 284672, 0, 0 }, // AVC Intra 100 720p50 +{{ 0x06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x0a,0x04,0x01,0x02,0x02,0x01,0x32,0x20,0x01 }, 0, 110, 0 }, // AVC High 10 Intra +{{ 0x06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x0a,0x04,0x01,0x02,0x02,0x01,0x32,0x30,0x01 }, 0, 122, 0 }, // AVC High 422 Intra +}; + +static int mxf_parse_h264_frame(AVFormatContext *s, AVStream *st, +
Re: [FFmpeg-devel] [PATCH] avformat/mxfenc: AVC Intra support
On Mon, Oct 27, 2014 at 05:21:12PM +, Thomas Mundt wrote: > Hi, I´ve seen that there has been approach last month to implement AVC Intra > mxf muxing. I tested the patches, but it didn´t work with any of my samples. > Since there also has been discussions about the gpl restriction, I rewrote > the patch. I had some basics, because I had written a working patch for > myself some time ago, which was more of a hack and only worked with AVCI100 > 1080i50. > I hope this could be licenced to lgpl, because I got all labels from libmxf > and libbmx and only used code snippets from avcodec/h264_parser.c > To keep h264 parsing simple and fast, I used the framesize for selecting the > right Panasonic codec label. The framesize is fixed for Panasonic AVC Intra. > > This patch only supports AVCI50/100. But in all flavours, i.e. with no > SPS/PPS in header. > > http://pastebin.com/v7gF1vDq -AVIOContext *pb = s->pb; -MXFStreamContext *sc = st->priv_data; -int profile_and_level = (st->codec->profile<<4) | st->codec->level; +if (st->codec->codec_id != CODEC_ID_H264) { this should be AV_CODEC_ID_H264 also i suggest you subscribe to the mailing list, so your mails arent held in the moderation que and you see replies (there where several already) Thanks [...] -- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB What does censorship reveal? It reveals fear. -- Julian Assange signature.asc Description: Digital signature ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] [PATCH] avformat/mxfenc: AVC Intra support
On 27 October 2014 17:21, Thomas Mundt wrote: > Hi, I´ve seen that there has been approach last month to implement AVC Intra > mxf muxing. I tested the patches, but it didn´t work with any of my samples. > Since there also has been discussions about the gpl restriction, I rewrote > the patch. I had some basics, because I had written a working patch for > myself some time ago, which was more of a hack and only worked with AVCI100 > 1080i50. Hi, I'm wondering whether you should add headers yourself. It would of course be nicer but does it change compatibility? Regards, Kieran Kunhya ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Re: [FFmpeg-devel] [PATCH] avformat/mxfenc: AVC Intra support
On Mon, 2014-10-27 at 17:21 +, Thomas Mundt wrote: > Hi, I´ve seen that there has been approach last month to implement AVC Intra > mxf muxing. I tested the patches, but it didn´t work with any of my samples. > Since there also has been discussions about the gpl restriction, I rewrote > the patch. I had some basics, because I had written a working patch for > myself some time ago, which was more of a hack and only worked with AVCI100 > 1080i50. > I hope this could be licenced to lgpl, because I got all labels from libmxf > and libbmx and only used code snippets from avcodec/h264_parser.c > To keep h264 parsing simple and fast, I used the framesize for selecting the > right Panasonic codec label. The framesize is fixed for Panasonic AVC Intra. > > This patch only supports AVCI50/100. But in all flavours, i.e. with no > SPS/PPS in header. > > http://pastebin.com/v7gF1vDq > > Thomas Could you rewrite it so you don't mix functional changes with indentation changes? See mxf_write_mpegvideo_desc() > > +switch (pkt->size + extrasize) { > +case 116736: // AVCI50 720p60 > +sc->codec_ul = &mxf_h264_codec_uls[5]; > +break; > +case 140800: // AVCI50 720p50 > +sc->codec_ul = &mxf_h264_codec_uls[6]; > +break; The magic values here stink. You should stick them next to mxf_h264_codec_uls, perhaps using a struct like so: static const struct { UID uid; int packet_size; int profile; uint8_t interlaced; } mxf_h264_codec_uls[] = { {{ 0x06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x0a,0x04,0x01,0x02,0x02,0x01,0x32,0x20,0x01 }, 0, 110, 0}, // AVC Intra 50 High 10 {{ 0x06,0x0E,0x2B,0x34,0x04,0x01,0x01,0x0a,0x04,0x01,0x02,0x02,0x01,0x32,0x21,0x01 }, 232960, 0, 1}, // AVC Intra 50 1080i60 //etc etc }; static const int mxf_h264_num_codec_uls = sizeof(mxf_h264_codec_uls)/sizeof(mxf_h264_codec_uls[0]); Then use a little for loop in mxf_parse_h264_frame() to find the matching entry. > +if (desc) > +sc->component_depth = desc->comp[0].depth_minus1 + 1; Seems unrelated? In general I didn't check how similar this patch is to the GPL'd version, so I'm going to trust that this doesn't share anything (except the ULs, which come from the standards). /Tomas signature.asc Description: This is a digitally signed message part ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
[FFmpeg-devel] [PATCH] avformat/mxfenc: AVC Intra support
Hi, I´ve seen that there has been approach last month to implement AVC Intra mxf muxing. I tested the patches, but it didn´t work with any of my samples. Since there also has been discussions about the gpl restriction, I rewrote the patch. I had some basics, because I had written a working patch for myself some time ago, which was more of a hack and only worked with AVCI100 1080i50. I hope this could be licenced to lgpl, because I got all labels from libmxf and libbmx and only used code snippets from avcodec/h264_parser.c To keep h264 parsing simple and fast, I used the framesize for selecting the right Panasonic codec label. The framesize is fixed for Panasonic AVC Intra. This patch only supports AVCI50/100. But in all flavours, i.e. with no SPS/PPS in header. http://pastebin.com/v7gF1vDq Thomas ffmpeg avci mxf patch - Pastebin.com --- a/libavformat/mxfenc.c +++ b/libavformat/mxfenc.c @@ -40,8 +40,11 @@ #include "libavutil/timecode.h" #include "libavutil/avassert.h" #include "libavutil/ti... Auf pastebin.com anzeigen Vorschau nach Yahoo ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel