aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNiklas Haas <git@haasn.dev>2024-04-03 17:10:04 +0200
committerNiklas Haas <git@haasn.dev>2024-04-22 12:17:56 +0200
commit69e45a627c975df4195421946ea14dac83c5ea04 (patch)
tree5d65bfcf133073e1d1e0f29f0d7ee52c56eaf008
parent3306766608839572c0ad9584bfb453f0b271e369 (diff)
downloadffmpeg-69e45a627c975df4195421946ea14dac83c5ea04.tar.gz
avformat/movenc: warn if dovi cfg ignored
Since this is guarded behind strict unofficial, we should warn if the user feeds a dolby vision stream to this muxer, as it will otherwise result in a broken file.
-rw-r--r--libavformat/movenc.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/libavformat/movenc.c b/libavformat/movenc.c
index 6ede5119f0..1a0502bbb1 100644
--- a/libavformat/movenc.c
+++ b/libavformat/movenc.c
@@ -2526,16 +2526,21 @@ static int mov_write_video_tag(AVFormatContext *s, AVIOContext *pb, MOVMuxContex
const AVPacketSideData *spherical_mapping = av_packet_side_data_get(track->st->codecpar->coded_side_data,
track->st->codecpar->nb_coded_side_data,
AV_PKT_DATA_SPHERICAL);
- const AVPacketSideData *dovi = av_packet_side_data_get(track->st->codecpar->coded_side_data,
- track->st->codecpar->nb_coded_side_data,
- AV_PKT_DATA_DOVI_CONF);
-
if (stereo_3d)
mov_write_st3d_tag(s, pb, (AVStereo3D*)stereo_3d->data);
if (spherical_mapping)
mov_write_sv3d_tag(mov->fc, pb, (AVSphericalMapping*)spherical_mapping->data);
- if (dovi)
+ }
+
+ if (track->mode == MODE_MP4) {
+ const AVPacketSideData *dovi = av_packet_side_data_get(track->st->codecpar->coded_side_data,
+ track->st->codecpar->nb_coded_side_data,
+ AV_PKT_DATA_DOVI_CONF);
+ if (dovi && mov->fc->strict_std_compliance <= FF_COMPLIANCE_UNOFFICIAL) {
mov_write_dvcc_dvvc_tag(s, pb, (AVDOVIDecoderConfigurationRecord *)dovi->data);
+ } else if (dovi) {
+ av_log(mov->fc, AV_LOG_WARNING, "Not writing 'dvcC'/'dvvC' box. Requires -strict unofficial.\n");
+ }
}
if (track->par->sample_aspect_ratio.den && track->par->sample_aspect_ratio.num) {