Skip to content

Commit

Permalink
contrib: Add libav colr patch to support new color signaling in mov.
Browse files Browse the repository at this point in the history
Needed for BT.2020, etc.
  • Loading branch information
bradleysepos authored and jstebbins committed Dec 17, 2016
1 parent bece9c2 commit 66af016
Showing 1 changed file with 57 additions and 0 deletions.
57 changes: 57 additions & 0 deletions contrib/ffmpeg/A02-mov-colr.patch
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");

0 comments on commit 66af016

Please sign in to comment.