diff options
author | Vittorio Giovara <vittorio.giovara@gmail.com> | 2016-10-18 18:21:31 -0400 |
---|---|---|
committer | Vittorio Giovara <vittorio.giovara@gmail.com> | 2016-10-21 17:15:04 -0400 |
commit | 4b07ebf1eb13561492f7e3c30a67f34415016b3e (patch) | |
tree | 7aebf2906246d5c478f899b64f6e748401ad4717 | |
parent | 0d9b9bd37f43ee29ad9f709d85c8f3be9db71104 (diff) | |
download | ffmpeg-4b07ebf1eb13561492f7e3c30a67f34415016b3e.tar.gz |
mov: Update colr values
For 'nclx', the latest edition of the standard switched from JPEG XR
to 23001-8, which matches the current order of our entries. Bounds
are preserved as a sanity check.
For 'nclc', qtff edition 2016-09-13 introduced a few new entries.
Signed-off-by: Vittorio Giovara <vittorio.giovara@gmail.com>
-rw-r--r-- | libavformat/mov.c | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/libavformat/mov.c b/libavformat/mov.c index 36e75d5c38..fee9f36382 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"); |