ffmpeg | branch: master | James Almer <jamr...@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 <mich...@niedermayer.cc>
Signed-off-by: James Almer <jamr...@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.

_______________________________________________
ffmpeg-cvslog mailing list
ffmpeg-cvslog@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog

Reply via email to