[FFmpeg-devel] [PATCH 1/4] avcodec/frame: add AV_FRAME_FLAG_LOSSLESS

Marton Balint cus at passwd.hu
Tue Dec 24 00:15:31 EET 2024



On Mon, 16 Dec 2024, Marton Balint wrote:

>
>
> On Mon, 16 Dec 2024, Anton Khirnov wrote:
>
>>  Quoting Marton Balint (2024-12-16 09:47:39)
>>> 
>>>
>>>  On Mon, 16 Dec 2024, Anton Khirnov wrote:
>>>
>>>>  Quoting Marton Balint (2024-12-15 01:02:42)
>>>>>  Signed-off-by: Marton Balint <cus at passwd.hu>
>>>>>  ---
>>>>>   doc/APIchanges       | 3 +++
>>>>>   libavcodec/version.h | 2 +-
>>>>>   libavutil/frame.h    | 4 ++++
>>>>>   3 files changed, 8 insertions(+), 1 deletion(-)
>>>>>
>>>>>  diff --git a/doc/APIchanges b/doc/APIchanges
>>>>>  index 3a75b803a9..bfba0946d3 100644
>>>>>  --- a/doc/APIchanges
>>>>>  +++ b/doc/APIchanges
>>>>>  @@ -2,6 +2,9 @@ The last version increases of all libraries were on
>>>>>  2024-03-07
>>>>>
>>>>>   API changes, most recent first:
>>>>>
>>>>>  +2024-12-xx - xxxxxxxxxx - lavc 61.27.100 - frame.h
>>>>>  +  Add AV_FRAME_FLAG_LOSSLESS.
>>>>
>>>>  I feel ambivalent about this. This is really a decoder property, and
>>>>  attaching it to frames allows it propagate far away to places where it
>>>>  makes no sense (the same holds for other existing AVFrame fields, but
>>>>  I'd prefer for them to be removed).
>>>
>>>  The way this flag is set in patch 2 in the series kind of shows why this
>>>  is a per-frame property, directly originated from the bitstream of codecs
>>>  supporting both lossy and lossless encoding. The encoder for such codecs
>>>  is allowed to decide on a frame-by-frame basis if it will use lossy or
>>>  lossless encoding.
>>
>>  I realize this can change per-frame, my point is that it's a per-frame
>>  property of the decoding process, not of the decoded frame itself.
>
> As you said yourself, we have similar fields already in AVFrame (keyframe, 
> pict_type, decoder_error_flags). I guess we could return those in a struct 
> alongside with AVFrame when decoding, but that would complicate stuff in a 
> lot of places having to deal with two structs, so I am not sure that it's 
> worth doing just for the somewhat "cleaner" AVFrame...

Ping. So how should we resolve this? Actually the whole point of 
introducing it was to not lose a "feature" when deprecating the 
AVCodecContext->properties in patch 4...

Thanks,
Marton


More information about the ffmpeg-devel mailing list