[FFmpeg-devel] [PATCH 3/4] avformat/movenc: set XDCAM codec tag correctly

Michael Niedermayer michaelni at gmx.at
Sat Oct 12 01:56:45 CEST 2013


On Mon, Oct 07, 2013 at 04:24:39PM -0400, Timothy Gu wrote:
> On Monday, October 7, 2013, Michael Niedermayer wrote:
> 
> > Signed-off-by: Michael Niedermayer <michaelni at gmx.at <javascript:;>>
> > ---
> >  libavformat/movenc.c |   63
> > ++++++++++++++++++++++++++++++++++++++++++++++++++
> >  1 file changed, 63 insertions(+)
> >
> > diff --git a/libavformat/movenc.c b/libavformat/movenc.c
> > index f3058bd..cc8800b 100644
> > --- a/libavformat/movenc.c
> > +++ b/libavformat/movenc.c
> > @@ -897,6 +897,66 @@ static AVRational find_fps(AVFormatContext *s,
> > AVStream *st)
> >      return rate;
> >  }
> >
> > +static int mov_get_mpeg2_xdcam_codec_tag(AVFormatContext *s, MOVTrack
> > *track)
> > +{
> > +    int tag = MKTAG('m', '2', 'v', '1'); //fallback tag
> > +    int interlaced = track->enc->field_order != AV_FIELD_UNKNOWN
> > +                  && track->enc->field_order != AV_FIELD_PROGRESSIVE;
> > +    AVStream *st = track->st;
> > +    int rate = av_q2d(find_fps(s, st));
> > +
> > +    if (track->enc->pix_fmt == AV_PIX_FMT_YUV420P) {
> > +        if (track->enc->width == 1280 && track->enc->height == 720) {
> > +            if (!interlaced) {
> 
> 
> 
> > +                if      (rate == 24) tag = MKTAG('x','d','v','4');
> > +                else if (rate == 25) tag = MKTAG('x','d','v','5');
> > +                else if (rate == 30) tag = MKTAG('x','d','v','1');
> > +                else if (rate == 50) tag = MKTAG('x','d','v','a');
> > +                else if (rate == 60) tag = MKTAG('x','d','v','9');
> > +            }
> > +        } else if (track->enc->width == 1440 && track->enc->height ==
> > 1080) {
> > +            if (!interlaced) {
> > +                if      (rate == 24) tag = MKTAG('x','d','v','6');
> > +                else if (rate == 25) tag = MKTAG('x','d','v','7');
> > +                else if (rate == 30) tag = MKTAG('x','d','v','8');
> > +            } else {
> > +                if      (rate == 25) tag = MKTAG('x','d','v','3');
> > +                else if (rate == 30) tag = MKTAG('x','d','v','2');
> > +            }
> > +        } else if (track->enc->width == 1920 && track->enc->height ==
> > 1080) {
> > +            if (!interlaced) {
> > +                if      (rate == 24) tag = MKTAG('x','d','v','d');
> > +                else if (rate == 25) tag = MKTAG('x','d','v','e');
> > +                else if (rate == 30) tag = MKTAG('x','d','v','f');
> > +            } else {
> > +                if      (rate == 25) tag = MKTAG('x','d','v','c');
> > +                else if (rate == 30) tag = MKTAG('x','d','v','b');
> > +            }
> > +        }
> > +    } else if (track->enc->pix_fmt == AV_PIX_FMT_YUV422P) {
> > +        if (track->enc->width == 1280 && track->enc->height == 720) {
> > +            if (!interlaced) {
> > +                if      (rate == 24) tag = MKTAG('x','d','5','4');
> > +                else if (rate == 25) tag = MKTAG('x','d','5','5');
> > +                else if (rate == 30) tag = MKTAG('x','d','5','1');
> > +                else if (rate == 50) tag = MKTAG('x','d','5','a');
> > +                else if (rate == 60) tag = MKTAG('x','d','5','9');
> > +            }
> > +        } else if (track->enc->width == 1920 && track->enc->height ==
> > 1080) {
> > +            if (!interlaced) {
> > +                if      (rate == 24) tag = MKTAG('x','d','5','d');
> > +                else if (rate == 25) tag = MKTAG('x','d','5','e');
> > +                else if (rate == 30) tag = MKTAG('x','d','5','f');
> > +            } else {
> > +                if      (rate == 25) tag = MKTAG('x','d','5','c');
> > +                else if (rate == 30) tag = MKTAG('x','d','5','b');
> > +            }
> > +        }
> > +    }
> 
> 
> Feel free to ignore: shouldn't switch case be simpler here?

feel free to change it to switch/case, iam happy with either

applied

[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Opposition brings concord. Out of discord comes the fairest harmony.
-- Heraclitus
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20131012/5e1f8579/attachment.asc>


More information about the ffmpeg-devel mailing list