[FFmpeg-devel] [PATCH v3 6/6] lavc/vaapi_encode: Add VAAPI AV1 encoder

Mark Thompson sw at jkqxz.net
Wed Aug 16 23:45:58 EEST 2023


On 16/08/2023 08:54, Wang, Fei W wrote:
> On Sun, 2023-08-13 at 22:43 +0100, Mark Thompson wrote:
>> On 10/08/2023 03:54, Wang, Fei W wrote:
>>> On Mon, 2023-08-07 at 22:21 +0100, Mark Thompson wrote:
>>>> On 03/08/2023 07:01, fei.w.wang-at-intel.com at ffmpeg.org wrote:
>>>>> From: Fei Wang <fei.w.wang at intel.com>
>>>>>
>>>>> Signed-off-by: Fei Wang <fei.w.wang at intel.com>
>>>>> ---
>>>>>     Changelog                     |    1 +
>>>>>     configure                     |    3 +
>>>>>     doc/encoders.texi             |   13 +
>>>>>     libavcodec/Makefile           |    1 +
>>>>>     libavcodec/allcodecs.c        |    1 +
>>>>>     libavcodec/vaapi_encode.c     |  125 +++-
>>>>>     libavcodec/vaapi_encode.h     |   12 +
>>>>>     libavcodec/vaapi_encode_av1.c | 1229
>>>>> +++++++++++++++++++++++++++++++++
>>>>>     libavcodec/version.h          |    2 +-
>>>>>     9 files changed, 1368 insertions(+), 19 deletions(-)
>>>>>     create mode 100644 libavcodec/vaapi_encode_av1.c
>>>>> ...
>>>>> +
>>>>> +    /** update obu size in bitstream */
>>>>> +    if (fh_obu->header.obu_has_size_field) {
>>>>> +        obu_size_len = priv-
>>>>>> attr_ext2.bits.obu_size_bytes_minus1
>>>>> + 1;
>>>>> +        for (i = 0; i < obu_size_len; i++) {
>>>>> +            byte = obu_size >> (7 * i) & 0x7f;
>>>>> +            if (i < obu_size_len - 1)
>>>>> +                byte |= 0x80;
>>>>> +            put_bits(&pbc_tmp, 8, byte);
>>>>> +        }
>>>>> +        flush_put_bits(&pbc_tmp);
>>>>> +        memmove(pbc_tmp.buf_ptr, pbc_tmp.buf_ptr + (8 -
>>>>> obu_size_len), obu_size);
>>>>> +        *data_len -= (8 - obu_size_len) * 8;
>>>>> +    }
>>>>
>>>> Why is there an incomplete duplicate of the cbs_av1 header
>>>> writing
>>>> code here?
>>>
>>> To record some position/size in bitstream that needed for VAAPI.
>>> Like
>>> qp_index/loopfilter/cdef offset and cdef parameters size in bit.
>>> It's
>>> not reasonable to add the specific parameters into CBS.
>>
>> How about with <
>> https://lists.ffmpeg.org/pipermail/ffmpeg-devel/2023-August/313228.html>
>> ;?
> 
> How to pass position info out of .trace_write_callback? If define own
> write_callback function in vaapi_encode_av1.c, and it can easily get
> the positions of each syntax element, but can't pass them back to VAAPI
> AV1 encoder. A possible way is according
> to CodedBitstreamContext.priv_data, but that will need to add lots of
> xxx_offset into CodedBitstreamAV1Context.

Right, it needs a context pointer in the callback because CBS hasn't previously had that.

See new version.

Thanks,

- Mark


More information about the ffmpeg-devel mailing list