[FFmpeg-devel] avformat/mxfenc: SMPTE RDD 48:2018 Amd 1:2022 (FFV1 in MXF) support

Jerome Martinez jerome at mediaarea.net
Wed Apr 5 00:37:54 EEST 2023


On 04/04/2023 19:32, Michael Niedermayer wrote:
> On Tue, Apr 04, 2023 at 04:57:03PM +0200, Jerome Martinez wrote:
>> On 04/04/2023 16:43, Michael Niedermayer wrote:
>>> On Mon, Apr 03, 2023 at 12:07:06AM +0200, Jerome Martinez wrote:
>>>> On 02/04/2023 22:07, Michael Niedermayer wrote:
>>>>
>>>> +        if (f->version == 4 && f->micro_version > 2) {
>>>> +            av_log(f->avctx, AV_LOG_ERROR, "unsupported version 4 micro_version %d\n",
>>>> +                f->micro_version);
>>>> +            return AVERROR_PATCHWELCOME;
>>>> +        }
>>>>        }
>>>>        f->ac = get_symbol(c, state, 0);
>>> you do not know if the decoder will have any problem with these files
>>
>> But you don't don't if the decoder will have no problem, it seems safer to
>> me to reject something we are not sure to support.
> "each new micro-version after this first stable variant is compatible with the previous micro-version: decoders **SHOULD NOT** reject FFV1 bitstreams due to an unknown micro-version equal or above the micro-version considered as stable."

This sentence is about a stable version, and version 4 is not stable, so 
FFV1 version 4 micro_version 3 is not necessarily compatible with FFV1 
version 4 micro_version 2, and so on, until we freeze the micro-version 
considered as stable. It is actually same for FFV1 version 3 e.g. "if 
(f->version == 3 && f->micro_version > 1 || f->version > 3) 
get_rac(&fs->c, (uint8_t[]) { 129 });" seems to say that version 3 
micro_version 2 is not compatible with version 3 micro_version 1 (and 
acceptable, only version 3 micro_version 5 and above must be compatible 
with version 3 micro_version 4 because micro_version 4 is the one 
flagged as stable).
Reason I suggested this micro_version check for version 4 (I didn't add 
it for version 3 because version 3 has a micro-version considered as 
stable).
Anyway, it is not important to me, just apply the patch you prefer.


>
>
> [...]
>>   libavcodec/ffv1dec.c |    5 +++++
>>   libavformat/mxfenc.c |    4 ++++
>>   2 files changed, 9 insertions(+)
>> 9b094eb0bd0888725a4a3fac925ef1fa733a48c3  0001-avcodec-ffv1dec-reject-unsupported-ffv1-versions.patch
>>  From dc0382709e548ef2514198bc866028066134d33e Mon Sep 17 00:00:00 2001
>> From: Jerome Martinez <jerome at mediaarea.net>
>> Date: Mon, 3 Apr 2023 00:04:53 +0200
>> Subject: [PATCH] avcodec/ffv1dec: reject unsupported ffv1 versions
>>
>> And add similar check in libavformat/mxfenc
>> ---
>>   libavcodec/ffv1dec.c | 5 +++++
>>   libavformat/mxfenc.c | 4 ++++
>>   2 files changed, 9 insertions(+)
> the patch is mostly ok
> iam a bit undecided if a decoder change and a muxer bugfix belong in the
> same patch, so do as you prefer

I think that both parts are about the same thing (and in the future both 
should be changed at the same time) but it is really subjective, let me 
know if you prefer that I send 2 separated patches and I'll do it, else 
please apply one of the already proposed patch.

Jérôme



More information about the ffmpeg-devel mailing list