[FFmpeg-devel] [PATCH 8/10] GXF Encoder Fixes and HD support (patch broken up)

Reuben Martin reuben.m
Tue Sep 14 01:52:42 CEST 2010


Yo, back on Thursday, September 09, 2010 Baptiste Coudurier was all like:
> On 09/08/2010 06:40 PM, Reuben Martin wrote:
> > Yo, back on Wednesday, September 08, 2010 Reuben Martin was all like:
> >> 08-gxf__HD_support.patch
> >>
> >> FEATURE: Adds support for HD MPEG2 content and to a lesser extent DVCPROHD.  Also makes changes in setting the frame/field rates depending on the time base rather than line-height. This is the patch needed the most input since I'm not sure how best to deal with detecting interlaced video streams.
> >>
> >>
> >
> >
> > 08-gxf__HD_support.patch
> >
> >
> > --- ffmpeg-old/libavformat/gxfenc.c	2010-09-08 17:12:41.777000111 -0500
> > +++ ffmpeg-new/libavformat/gxfenc.c	2010-09-08 17:23:48.446000108 -0500
> > @@ -81,6 +81,8 @@
> >   static const AVCodecTag gxf_media_types[] = {
> >       { CODEC_ID_MJPEG     ,   3 }, /* NTSC */
> >       { CODEC_ID_MJPEG     ,   4 }, /* PAL */
> > +    //{ CODEC_ID_NONE,   ,   7 }, /* TimeCode-525 */
> > +    //{ CODEC_ID_NONE,   ,   8 }, /* TimeCode-625 */
> >       { CODEC_ID_PCM_S24LE ,   9 },
> >       { CODEC_ID_PCM_S16LE ,  10 },
> >       { CODEC_ID_MPEG2VIDEO,  11 }, /* NTSC */
> > @@ -91,9 +93,14 @@
> >       { CODEC_ID_DVVIDEO   ,  16 }, /* 50M PAL */
> >       { CODEC_ID_AC3       ,  17 },
> >       //{ CODEC_ID_NONE,  ,   18 }, /* Non compressed 24 bit audio */
> > +    //{ CODEC_ID_NONE,   ,  19 }, /* Non compressed 32 bit audio */
> >       { CODEC_ID_MPEG2VIDEO,  20 }, /* MPEG HD */
> > +    //{ CODEC_ID_NONE,   ,  21 }, /* Ancillary Data (track_type=8, meida_info='N') */
> >       { CODEC_ID_MPEG1VIDEO,  22 }, /* NTSC */
> >       { CODEC_ID_MPEG1VIDEO,  23 }, /* PAL */
> > +    //{ CODEC_ID_NONE,   ,  24 }, /* TimeCode */
> > +    { CODEC_ID_DVVIDEO   ,  25 }, /* 100M DVCPROHD */
> > +    //{ CODEC_ID_H264    ,  26 }, /* AVCi 50 / 100 (H264 Intra) */
> >       { CODEC_ID_NONE,         0 },
> >   };
> 
> I don't think we really need all the unused definitions.
> 
>  > [...]
>  >
> > +
> > +            if (fabs(av_q2d(st->codec->time_base) - 1/60.0) == 0.0) {
> 
> < 0.0001 like the other checks.
> 
>  > [...]
>  >
> > +            } else if (fabs(av_q2d(st->codec->time_base) - 1/30.0) == 0.0) {
> > +                sc->frame_rate_index = 4;
> > +                if (sc->fields == 1) {
> > +                    sc->sample_rate = 30;
> > +                    gxf->time_base = (AVRational){ 1, 30 };
> > +                    gxf->flags |= 0x00000400;
> > +                } else {
> > +                    sc->sample_rate = 60;
> > +                    gxf->time_base = (AVRational){ 1, 60 };
> > +                    gxf->flags |= 0x00000080;
> > +                }
> > +            } else if (fabs(av_q2d(st->codec->time_base) - 1001/30000.0)<  0.0001) {
> > +                sc->frame_rate_index = 5;
> > +                if (sc->fields == 1) {
> > +                    sc->sample_rate = 30;
> > +                    gxf->time_base = (AVRational){ 1001, 30000 };
> > +                    gxf->flags |= 0x00000400;
> > +                } else {
> > +                    sc->sample_rate = 60;
> > +                    gxf->time_base = (AVRational){ 1001, 60000 };
> > +                    gxf->flags |= 0x00000080;
> > +                }
> > +            } else if (fabs(av_q2d(st->codec->time_base) - 1/25.0)<  0.0001) {
> > +                sc->frame_rate_index = 6;
> > +                sc->media_type++;
> > +                if (sc->fields == 1) {
> > +                    sc->sample_rate = 25;
> > +                    gxf->time_base = (AVRational){ 1, 25 };
> > +                    gxf->flags |= 0x00000200;
> > +                } else {
> > +                    sc->sample_rate = 50;
> > +                    gxf->time_base = (AVRational){ 1, 50 };
> > +                    gxf->flags |= 0x00000040;
> > +                }
> 
> Humm you are changing the values for NTSC and PAL.
> IIRC GXF always count the field rate even if video is progressive 
> according to specs. This might need double check though.
> 
> [...]
> 
> 

Updated. Removed unused defs. 

-------------- next part --------------
A non-text attachment was scrubbed...
Name: 08-gxf__HD_support.patch
Type: text/x-patch
Size: 9549 bytes
Desc: not available
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20100913/79006ab8/attachment.bin>



More information about the ffmpeg-devel mailing list