You've already forked FFmpeg
mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-08-15 14:13:16 +02:00
avformat/matroskadec: support parsing Chroma Location elements
Reviewed-by: Michael Niedermayer <michael@niedermayer.cc> Signed-off-by: James Almer <jamrial@gmail.com>
This commit is contained in:
@@ -317,6 +317,20 @@ typedef enum {
|
|||||||
MATROSKA_VIDEO_DISPLAYUNIT_UNKNOWN = 4,
|
MATROSKA_VIDEO_DISPLAYUNIT_UNKNOWN = 4,
|
||||||
} MatroskaVideoDisplayUnit;
|
} 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
|
* Matroska Codec IDs, strings
|
||||||
*/
|
*/
|
||||||
|
@@ -1827,6 +1827,14 @@ static int mkv_parse_video_color(AVStream *st, const MatroskaTrack *track) {
|
|||||||
if (track->video.color.range != AVCOL_RANGE_UNSPECIFIED &&
|
if (track->video.color.range != AVCOL_RANGE_UNSPECIFIED &&
|
||||||
track->video.color.range <= AVCOL_RANGE_JPEG)
|
track->video.color.range <= AVCOL_RANGE_JPEG)
|
||||||
st->codecpar->color_range = track->video.color.range;
|
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) {
|
if (has_mastering_primaries || has_mastering_luminance) {
|
||||||
// Use similar rationals as other standards.
|
// Use similar rationals as other standards.
|
||||||
|
Reference in New Issue
Block a user