diff options
author | Luca Barbato <lu_zero@gentoo.org> | 2014-06-07 01:38:00 +0200 |
---|---|---|
committer | Luca Barbato <lu_zero@gentoo.org> | 2014-07-01 16:43:20 +0200 |
commit | 48e6432407a73d5006d84609456e6e0bc3dd8fc4 (patch) | |
tree | 2e30e79c42835b7b8c3047a31a2172d7585792a6 /libavformat | |
parent | b75a1f9892b5b715397edbf837e4d4cda337907b (diff) | |
download | ffmpeg-streaming-48e6432407a73d5006d84609456e6e0bc3dd8fc4.zip ffmpeg-streaming-48e6432407a73d5006d84609456e6e0bc3dd8fc4.tar.gz |
matroska: Factor out mkv_write_stereo_mode
Diffstat (limited to 'libavformat')
-rw-r--r-- | libavformat/matroskaenc.c | 39 |
1 files changed, 22 insertions, 17 deletions
diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c index 6916d34..b55ad35 100644 --- a/libavformat/matroskaenc.c +++ b/libavformat/matroskaenc.c @@ -624,6 +624,27 @@ static int mkv_write_codecprivate(AVFormatContext *s, AVIOContext *pb, return ret; } +static void mkv_write_stereo_mode(AVIOContext *pb, uint8_t stereo_fmt, + int mode) +{ + int valid_fmt = 0; + + switch (mode) { + case MODE_WEBM: + if (stereo_fmt <= MATROSKA_VIDEO_STEREOMODE_TYPE_TOP_BOTTOM || + stereo_fmt == MATROSKA_VIDEO_STEREOMODE_TYPE_RIGHT_LEFT) + valid_fmt = 1; + break; + case MODE_MATROSKAv2: + if (stereo_fmt <= MATROSKA_VIDEO_STEREOMODE_TYPE_BOTH_EYES_BLOCK_RL) + valid_fmt = 1; + break; + } + + if (valid_fmt) + put_ebml_uint (pb, MATROSKA_ID_VIDEOSTEREOMODE, stereo_fmt); +} + static int mkv_write_track(AVFormatContext *s, MatroskaMuxContext *mkv, int i, AVIOContext *pb) { @@ -723,23 +744,7 @@ static int mkv_write_track(AVFormatContext *s, MatroskaMuxContext *mkv, put_ebml_uint (pb, MATROSKA_ID_VIDEOPIXELWIDTH , codec->width); put_ebml_uint (pb, MATROSKA_ID_VIDEOPIXELHEIGHT, codec->height); if ((tag = av_dict_get(s->metadata, "stereo_mode", NULL, 0))) { - uint8_t stereo_fmt = atoi(tag->value); - int valid_fmt = 0; - - switch (mkv->mode) { - case MODE_WEBM: - if (stereo_fmt <= MATROSKA_VIDEO_STEREOMODE_TYPE_TOP_BOTTOM || - stereo_fmt == MATROSKA_VIDEO_STEREOMODE_TYPE_RIGHT_LEFT) - valid_fmt = 1; - break; - case MODE_MATROSKAv2: - if (stereo_fmt <= MATROSKA_VIDEO_STEREOMODE_TYPE_BOTH_EYES_BLOCK_RL) - valid_fmt = 1; - break; - } - - if (valid_fmt) - put_ebml_uint (pb, MATROSKA_ID_VIDEOSTEREOMODE, stereo_fmt); + mkv_write_stereo_mode(pb, atoi(tag->value), mkv->mode); } if (st->sample_aspect_ratio.num) { int d_width = codec->width*av_q2d(st->sample_aspect_ratio); |