summaryrefslogtreecommitdiff
path: root/libavformat
diff options
context:
space:
mode:
authorMichael Bradshaw <mjbshaw@google.com>2020-03-30 12:23:38 -0600
committerMichael Bradshaw <mjbshaw@google.com>2020-04-13 10:04:19 -0600
commit9842fd3aaf18cd8bda82e03f099a6cea7234bbcf (patch)
tree681e8c83c1fb95be9baf6b56b2e3741644446db9 /libavformat
parentb1699f4ac38cedef79f565ba3b8f9fdec952f412 (diff)
avformat/movenc: stop guessing colr atom values
Diffstat (limited to 'libavformat')
-rw-r--r--libavformat/movenc.c33
1 files changed, 3 insertions, 30 deletions
diff --git a/libavformat/movenc.c b/libavformat/movenc.c
index 3042e3ccd2..af5f12a415 100644
--- a/libavformat/movenc.c
+++ b/libavformat/movenc.c
@@ -1893,36 +1893,6 @@ static int mov_write_colr_tag(AVIOContext *pb, MOVTrack *track, int prefer_icc)
}
}
- if (track->par->color_primaries == AVCOL_PRI_UNSPECIFIED &&
- track->par->color_trc == AVCOL_TRC_UNSPECIFIED &&
- track->par->color_space == AVCOL_SPC_UNSPECIFIED) {
- if ((track->par->width >= 1920 && track->par->height >= 1080)
- || (track->par->width == 1280 && track->par->height == 720)) {
- av_log(NULL, AV_LOG_WARNING, "color primaries unspecified, assuming bt709\n");
- track->par->color_primaries = AVCOL_PRI_BT709;
- } else if (track->par->width == 720 && track->height == 576) {
- av_log(NULL, AV_LOG_WARNING, "color primaries unspecified, assuming bt470bg\n");
- track->par->color_primaries = AVCOL_PRI_BT470BG;
- } else if (track->par->width == 720 &&
- (track->height == 486 || track->height == 480)) {
- av_log(NULL, AV_LOG_WARNING, "color primaries unspecified, assuming smpte170\n");
- track->par->color_primaries = AVCOL_PRI_SMPTE170M;
- } else {
- av_log(NULL, AV_LOG_WARNING, "color primaries unspecified, unable to assume anything\n");
- }
- switch (track->par->color_primaries) {
- case AVCOL_PRI_BT709:
- track->par->color_trc = AVCOL_TRC_BT709;
- track->par->color_space = AVCOL_SPC_BT709;
- break;
- case AVCOL_PRI_SMPTE170M:
- case AVCOL_PRI_BT470BG:
- track->par->color_trc = AVCOL_TRC_BT709;
- track->par->color_space = AVCOL_SPC_SMPTE170M;
- break;
- }
- }
-
/* We should only ever be called by MOV or MP4. */
av_assert0(track->mode == MODE_MOV || track->mode == MODE_MP4);
@@ -1932,6 +1902,9 @@ static int mov_write_colr_tag(AVIOContext *pb, MOVTrack *track, int prefer_icc)
ffio_wfourcc(pb, "nclx");
else
ffio_wfourcc(pb, "nclc");
+ // Do not try to guess the color info if it is AVCOL_PRI_UNSPECIFIED.
+ // e.g., Dolby Vision for Apple devices should be set to AVCOL_PRI_UNSPECIFIED. See
+ // https://developer.apple.com/av-foundation/High-Dynamic-Range-Metadata-for-Apple-Devices.pdf
avio_wb16(pb, track->par->color_primaries);
avio_wb16(pb, track->par->color_trc);
avio_wb16(pb, track->par->color_space);