diff options
author | Niklas Haas <git@haasn.dev> | 2024-04-03 17:10:04 +0200 |
---|---|---|
committer | Niklas Haas <git@haasn.dev> | 2024-04-22 12:17:56 +0200 |
commit | 69e45a627c975df4195421946ea14dac83c5ea04 (patch) | |
tree | 5d65bfcf133073e1d1e0f29f0d7ee52c56eaf008 | |
parent | 3306766608839572c0ad9584bfb453f0b271e369 (diff) | |
download | ffmpeg-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.c | 15 |
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) { |