summaryrefslogtreecommitdiffstats
path: root/video/mp_image.h
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2013-06-08 02:15:24 +0200
committerwm4 <wm4@nowhere>2013-06-28 21:20:41 +0200
commitac266da6588f25a449a739f7a6a3d2c69ca80e19 (patch)
tree6fc863452bec6fd07b05d057d093946772ba96c7 /video/mp_image.h
parent3382a6f6e48c7e093c2b7e0e4a0e28b60a084358 (diff)
downloadmpv-ac266da6588f25a449a739f7a6a3d2c69ca80e19.tar.bz2
mpv-ac266da6588f25a449a739f7a6a3d2c69ca80e19.tar.xz
vo_opengl: handle chroma location
Use the video decoder chroma location flags and render chroma locations other than centered. Until now, we've always used the intuitive and obvious centered chroma location, but H.264 uses something else. FFmpeg provides a small overview in libavcodec/avcodec.h: ----------- /** * X X 3 4 X X are luma samples, * 1 2 1-6 are possible chroma positions * X X 5 6 X 0 is undefined/unknown position */ enum AVChromaLocation{ AVCHROMA_LOC_UNSPECIFIED = 0, AVCHROMA_LOC_LEFT = 1, ///< mpeg2/4, h264 default AVCHROMA_LOC_CENTER = 2, ///< mpeg1, jpeg, h263 AVCHROMA_LOC_TOPLEFT = 3, ///< DV AVCHROMA_LOC_TOP = 4, AVCHROMA_LOC_BOTTOMLEFT = 5, AVCHROMA_LOC_BOTTOM = 6, AVCHROMA_LOC_NB , ///< Not part of ABI }; ----------- The visual difference is literally minimal, but since videophiles apparently consider this detail as quality mark of a video renderer, support it anyway. We don't bother with chroma locations other than centered and left, though. Not sure about correctness, but it's probably ok.
Diffstat (limited to 'video/mp_image.h')
-rw-r--r--video/mp_image.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/video/mp_image.h b/video/mp_image.h
index 643b70b949..96b980039d 100644
--- a/video/mp_image.h
+++ b/video/mp_image.h
@@ -43,6 +43,7 @@ struct mp_image_params {
int d_w, d_h; // define display aspect ratio (never 0/0)
enum mp_csp colorspace;
enum mp_csp_levels colorlevels;
+ enum mp_chroma_location chroma_location;
};
/* Memory management:
@@ -90,6 +91,8 @@ typedef struct mp_image {
enum mp_csp colorspace;
enum mp_csp_levels levels;
+ enum mp_chroma_location chroma_location;
+
/* only inside filter chain */
double pts;
/* memory management */