[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