mpv/video/decode
wm4 ac266da658 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.
2013-06-28 21:20:41 +02:00
..
dec_video.c osdep: remove shmem wrapper 2013-06-18 02:19:15 +02:00
dec_video.h video: rename VDCTRL_RESET_ASPECT to VDCTRL_REINIT_VO 2013-05-18 17:32:37 +02:00
lavc.h video: add a new method to configure filters and VOs 2013-06-28 20:34:46 +02:00
lavc_dr1.c vd_lavc: make non-reference frames writeable 2013-01-13 20:04:10 +01:00
vd.c video: add a new method to configure filters and VOs 2013-06-28 20:34:46 +02:00
vd.h video: add a new method to configure filters and VOs 2013-06-28 20:34:46 +02:00
vd_lavc.c vo_opengl: handle chroma location 2013-06-28 21:20:41 +02:00