[FFmpeg-devel] [PATCH v2 2/3] libavcodec: add a new AV_CODEC_EXPORT_DATA_FILM_GRAIN flag and option

Lynne dev at lynne.ee
Sat Nov 14 16:32:35 EET 2020


Nov 14, 2020, 11:23 by anton at khirnov.net:

> Quoting Lynne (2020-11-12 18:42:22)
>
>> This introduces a new field to allow decoders to export their film grain 
>> parameters.
>> Will be used by the next patch.
>>
>> Patch attached.
>> From d5d5e1e5f90938ac5cfa462efc13658ab411246b Mon Sep 17 00:00:00 2001
>> From: Lynne <dev at lynne.ee>
>> Date: Thu, 12 Nov 2020 17:46:09 +0100
>> Subject: [PATCH v2 2/3] libavcodec: add a new AV_CODEC_EXPORT_DATA_FILM_GRAIN
>>  flag and option
>>
>> This introduces a new field to allow decoders to export their film grain
>> parameters.
>> Will be used by the next patch.
>> ---
>>  doc/APIchanges             | 3 +++
>>  libavcodec/avcodec.h       | 5 +++++
>>  libavcodec/options_table.h | 1 +
>>  libavcodec/version.h       | 4 ++--
>>  4 files changed, 11 insertions(+), 2 deletions(-)
>>
>> diff --git a/doc/APIchanges b/doc/APIchanges
>> index 41248724d9..9d0ddb4ff6 100644
>> --- a/doc/APIchanges
>> +++ b/doc/APIchanges
>> @@ -15,6 +15,9 @@ libavutil:     2017-10-21
>>  
>>  API changes, most recent first:
>>  
>> +2020-xx-xx - xxxxxxxxxx - lavc 58.113.100 - avcodec.h
>> +  Adds a new flag AV_CODEC_EXPORT_DATA_FILM_GRAIN for export_side_data.
>> +
>>  2020-xx-xx - xxxxxxxxxx - lavu 56.61.100 - film_grain_params.h
>>  Adds a new API for extracting codec film grain parameters as side data.
>>  Adds a new AVFrameSideDataType entry AV_FRAME_DATA_FILM_GRAIN_PARAMS for it.
>> diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h
>> index 20af3ef00d..5047da0f6a 100644
>> --- a/libavcodec/avcodec.h
>> +++ b/libavcodec/avcodec.h
>> @@ -410,6 +410,11 @@ typedef struct RcOverride{
>>  * Export the AVVideoEncParams structure through frame side data.
>>  */
>>  #define AV_CODEC_EXPORT_DATA_VIDEO_ENC_PARAMS (1 << 2)
>> +/**
>> + * Decoding only.
>> + * Do not apply film grain, export it instead.
>>
>
> Could someone want to both apply AND export it?
>

Analyzers. In which case they could use a film grain filter to apply it. But that's a fringe
use-case for this flag, this mainly targets video players and transcoding, where the
bandwidth/frames savings can be significant.
There's a WIP Vulkan filter to apply it, and if there's popular demand, the libdav1d code
could be ported as a software filter.


More information about the ffmpeg-devel mailing list