forked from HandBrake/HandBrake
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
contrib: Add libav colr patch to support new color signaling in mov.
Needed for BT.2020, etc.
- Loading branch information
1 parent
bece9c2
commit 66af016
Showing
1 changed file
with
57 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,57 @@ | ||
diff --git a/libavformat/mov.c b/libavformat/mov.c | ||
index 36e75d5..fee9f36 100644 | ||
--- a/libavformat/mov.c | ||
+++ b/libavformat/mov.c | ||
@@ -36,6 +36,7 @@ | ||
#include "libavutil/avstring.h" | ||
#include "libavutil/dict.h" | ||
#include "libavutil/opt.h" | ||
+#include "libavutil/pixdesc.h" | ||
#include "libavcodec/ac3tab.h" | ||
#include "avformat.h" | ||
#include "internal.h" | ||
@@ -1083,16 +1084,14 @@ static int mov_read_colr(MOVContext *c, AVIOContext *pb, MOVAtom atom) | ||
st->codecpar->color_range = AVCOL_RANGE_JPEG; | ||
else | ||
st->codecpar->color_range = AVCOL_RANGE_MPEG; | ||
- /* 14496-12 references JPEG XR specs (rather than the more complete | ||
- * 23001-8) so some adjusting is required */ | ||
- if (color_primaries >= AVCOL_PRI_FILM) | ||
+ | ||
+ if (!av_color_primaries_name(color_primaries)) | ||
color_primaries = AVCOL_PRI_UNSPECIFIED; | ||
- if ((color_trc >= AVCOL_TRC_LINEAR && | ||
- color_trc <= AVCOL_TRC_LOG_SQRT) || | ||
- color_trc >= AVCOL_TRC_BT2020_10) | ||
+ if (!av_color_transfer_name(color_trc)) | ||
color_trc = AVCOL_TRC_UNSPECIFIED; | ||
- if (color_matrix >= AVCOL_SPC_BT2020_NCL) | ||
+ if (!av_color_space_name(color_matrix)) | ||
color_matrix = AVCOL_SPC_UNSPECIFIED; | ||
+ | ||
st->codecpar->color_primaries = color_primaries; | ||
st->codecpar->color_trc = color_trc; | ||
st->codecpar->color_space = color_matrix; | ||
@@ -1102,17 +1101,22 @@ static int mov_read_colr(MOVContext *c, AVIOContext *pb, MOVAtom atom) | ||
case 1: st->codecpar->color_primaries = AVCOL_PRI_BT709; break; | ||
case 5: st->codecpar->color_primaries = AVCOL_PRI_SMPTE170M; break; | ||
case 6: st->codecpar->color_primaries = AVCOL_PRI_SMPTE240M; break; | ||
+ case 9: st->codecpar->color_primaries = AVCOL_PRI_BT2020; break; | ||
+ case 10: st->codecpar->color_primaries = AVCOL_PRI_SMPTE431; break; | ||
+ case 11: st->codecpar->color_primaries = AVCOL_PRI_SMPTE432; break; | ||
} | ||
/* color transfer, Table 4-5 */ | ||
switch (color_trc) { | ||
case 1: st->codecpar->color_trc = AVCOL_TRC_BT709; break; | ||
case 7: st->codecpar->color_trc = AVCOL_TRC_SMPTE240M; break; | ||
+ case 17: st->codecpar->color_trc = AVCOL_TRC_SMPTE428; break; | ||
} | ||
/* color matrix, Table 4-6 */ | ||
switch (color_matrix) { | ||
case 1: st->codecpar->color_space = AVCOL_SPC_BT709; break; | ||
case 6: st->codecpar->color_space = AVCOL_SPC_BT470BG; break; | ||
case 7: st->codecpar->color_space = AVCOL_SPC_SMPTE240M; break; | ||
+ case 9: st->codecpar->color_space = AVCOL_SPC_BT2020_NCL; break; | ||
} | ||
} | ||
av_log(c->fc, AV_LOG_TRACE, "\n"); |