[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