[FFmpeg-cvslog] avformat/matroskadec: support parsing Chroma Location elements
James Almer
git at videolan.org
Wed Oct 19 02:40:48 EEST 2016
ffmpeg | branch: master | James Almer <jamrial at gmail.com> | Mon Oct 17 23:50:14 2016 -0300| [47ee6f1a59b1f345f4f9d8e79c30d66df12b72e7] | committer: James Almer
avformat/matroskadec: support parsing Chroma Location elements
Reviewed-by: Michael Niedermayer <michael at niedermayer.cc>
Signed-off-by: James Almer <jamrial at gmail.com>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=47ee6f1a59b1f345f4f9d8e79c30d66df12b72e7
---
libavformat/matroska.h | 14 ++++++++++++++
libavformat/matroskadec.c | 8 ++++++++
2 files changed, 22 insertions(+)
diff --git a/libavformat/matroska.h b/libavformat/matroska.h
index 8ad89da..13155e5 100644
--- a/libavformat/matroska.h
+++ b/libavformat/matroska.h
@@ -317,6 +317,20 @@ typedef enum {
MATROSKA_VIDEO_DISPLAYUNIT_UNKNOWN = 4,
} MatroskaVideoDisplayUnit;
+typedef enum {
+ MATROSKA_COLOUR_CHROMASITINGHORZ_UNDETERMINED = 0,
+ MATROSKA_COLOUR_CHROMASITINGHORZ_LEFT = 1,
+ MATROSKA_COLOUR_CHROMASITINGHORZ_HALF = 2,
+ MATROSKA_COLOUR_CHROMASITINGHORZ_NB
+} MatroskaColourChromaSitingHorz;
+
+typedef enum {
+ MATROSKA_COLOUR_CHROMASITINGVERT_UNDETERMINED = 0,
+ MATROSKA_COLOUR_CHROMASITINGVERT_TOP = 1,
+ MATROSKA_COLOUR_CHROMASITINGVERT_HALF = 2,
+ MATROSKA_COLOUR_CHROMASITINGVERT_NB
+} MatroskaColourChromaSitingVert;
+
/*
* Matroska Codec IDs, strings
*/
diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c
index a5d3c0e..13a8196 100644
--- a/libavformat/matroskadec.c
+++ b/libavformat/matroskadec.c
@@ -1827,6 +1827,14 @@ static int mkv_parse_video_color(AVStream *st, const MatroskaTrack *track) {
if (track->video.color.range != AVCOL_RANGE_UNSPECIFIED &&
track->video.color.range <= AVCOL_RANGE_JPEG)
st->codecpar->color_range = track->video.color.range;
+ if (track->video.color.chroma_siting_horz != MATROSKA_COLOUR_CHROMASITINGHORZ_UNDETERMINED &&
+ track->video.color.chroma_siting_vert != MATROSKA_COLOUR_CHROMASITINGVERT_UNDETERMINED &&
+ track->video.color.chroma_siting_horz < MATROSKA_COLOUR_CHROMASITINGHORZ_NB &&
+ track->video.color.chroma_siting_vert < MATROSKA_COLOUR_CHROMASITINGVERT_NB) {
+ st->codecpar->chroma_location =
+ avcodec_chroma_pos_to_enum((track->video.color.chroma_siting_horz - 1) << 7,
+ (track->video.color.chroma_siting_vert - 1) << 7);
+ }
if (has_mastering_primaries || has_mastering_luminance) {
// Use similar rationals as other standards.
More information about the ffmpeg-cvslog
mailing list