[FFmpeg-devel] [PATCH v3 2/2] libavformat/mxfenc: add missing dnxhr mxfcontainer essence ULs

Tomas Härdin tjoppen at acc.umu.se
Sat Sep 8 17:43:36 EEST 2018


fre 2018-09-07 klockan 16:40 +0200 skrev Carl Eugen Hoyos:
> > 2018-09-07 10:54 GMT+02:00, Tomas Härdin <tjoppen at acc.umu.se>:
> > fre 2018-09-07 klockan 01:03 -0700 skrev Jason Stevens:
> > > Add missing dnxhr mxf container essence ULs to the mxf encoder.
> > > set proper mxf frame size for dnxhr using libavformat/dnxhd's get dnxhr
> > > size function.
> > > 
> > > This fixes dnxhr mxf files being quarantined by Avid Media Composer.
> > > 
> > > > Signed-off-by: Jason Stevens <jay at wizardofthenet.com>
> > > 
> > > ---
> > >  libavformat/mxfenc.c | 53 +++++++++++++++++++++++++++++++++++++++++++-
> > >  1 file changed, 52 insertions(+), 1 deletion(-)
> > > 
> > > @@ -1959,7 +1989,11 @@ AVPacket *pkt)
> > >      header_cid = pkt->data + 0x28;
> > >      cid = header_cid[0] << 24 | header_cid[1] << 16 | header_cid[2] << 8
> > > > header_cid[3];
> > > 
> > > -    if ((frame_size = avpriv_dnxhd_get_frame_size(cid)) < 0)
> > > +    if ((frame_size = avpriv_dnxhd_get_frame_size(cid)) ==
> > > DNXHD_VARIABLE) {
> > > +        frame_size = avpriv_dnxhd_get_hr_frame_size(cid,
> > > st->codecpar->width, st->codecpar->height);
> > > +    }
> > > +
> > > +    if (frame_size < 0)
> > >          return -1;
> > >      if ((sc->interlaced = avpriv_dnxhd_get_interlaced(cid)) < 0)
> > >          return AVERROR_INVALIDDATA;
> > > @@ -1998,6 +2032,23 @@ AVPacket *pkt)
> > >      case 1253:
> > >          sc->index = INDEX_DNXHD_720p_8bit_LOW;
> > >          break;
> > > +    case 1274:
> > > +        sc->index = INDEX_DNXHR_LB;
> > > +        break;
> > > +    case 1273:
> > > +        sc->index = INDEX_DNXHR_SQ;
> > > +        break;
> > > +    case 1272:
> > > +        sc->index = INDEX_DNXHR_HQ;
> > > +        break;
> > > +    case 1271:
> > > +        sc->index = INDEX_DNXHR_HQX;
> > > +        sc->component_depth = 10;
> > > +        break;
> > > +    case 1270:
> > > +        sc->index = INDEX_DNXHR_444;
> > > +        sc->component_depth = 10;
> > > +        break;
> > 
> > Is there some spec one can reference to for these magic constants?
> 
> Which magic constants?

The "case" values. Not that I'm suggesting adding #defines for them or
anything, just a comment for where one might look up potential future
values

/Tomas


More information about the ffmpeg-devel mailing list