aboutsummaryrefslogtreecommitdiffstats
path: root/libavcodec/vaapi_encode_mjpeg.c
diff options
context:
space:
mode:
authorTong Wu <tong1.wu@intel.com>2024-04-18 09:58:36 +0800
committerLynne <dev@lynne.ee>2024-07-02 14:15:12 +0200
commitaa82340b0ccdde4955fba41b8de5e45348ecd11d (patch)
tree486c331205fc92c94e212dda5e0fa1a7dd3cc8c2 /libavcodec/vaapi_encode_mjpeg.c
parentf303c2629252bcdfe12336c0d921f08658c4a765 (diff)
downloadffmpeg-aa82340b0ccdde4955fba41b8de5e45348ecd11d.tar.gz
avcodec/vaapi_encode: move the dpb logic from VAAPI to base layer
Move receive_packet function to base. This requires adding *alloc, *issue, *output, *free as hardware callbacks. HWBaseEncodePicture is introduced as the base layer structure. The related parameters in VAAPIEncodeContext are also extracted to HWBaseEncodeContext. Then DPB management logic can be fully extracted to base layer as-is. Signed-off-by: Tong Wu <tong1.wu@intel.com>
Diffstat (limited to 'libavcodec/vaapi_encode_mjpeg.c')
-rw-r--r--libavcodec/vaapi_encode_mjpeg.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/libavcodec/vaapi_encode_mjpeg.c b/libavcodec/vaapi_encode_mjpeg.c
index 9e533e9fbe..4c31881e6a 100644
--- a/libavcodec/vaapi_encode_mjpeg.c
+++ b/libavcodec/vaapi_encode_mjpeg.c
@@ -220,12 +220,13 @@ static int vaapi_encode_mjpeg_write_extra_buffer(AVCodecContext *avctx,
}
static int vaapi_encode_mjpeg_init_picture_params(AVCodecContext *avctx,
- VAAPIEncodePicture *pic)
+ VAAPIEncodePicture *vaapi_pic)
{
VAAPIEncodeMJPEGContext *priv = avctx->priv_data;
+ const FFHWBaseEncodePicture *pic = &vaapi_pic->base;
JPEGRawFrameHeader *fh = &priv->frame_header;
JPEGRawScanHeader *sh = &priv->scan.header;
- VAEncPictureParameterBufferJPEG *vpic = pic->codec_picture_params;
+ VAEncPictureParameterBufferJPEG *vpic = vaapi_pic->codec_picture_params;
const AVPixFmtDescriptor *desc;
const uint8_t components_rgb[3] = { 'R', 'G', 'B' };
const uint8_t components_yuv[3] = { 1, 2, 3 };
@@ -377,8 +378,8 @@ static int vaapi_encode_mjpeg_init_picture_params(AVCodecContext *avctx,
*vpic = (VAEncPictureParameterBufferJPEG) {
- .reconstructed_picture = pic->recon_surface,
- .coded_buf = pic->output_buffer,
+ .reconstructed_picture = vaapi_pic->recon_surface,
+ .coded_buf = vaapi_pic->output_buffer,
.picture_width = fh->X,
.picture_height = fh->Y,
@@ -406,7 +407,7 @@ static int vaapi_encode_mjpeg_init_picture_params(AVCodecContext *avctx,
vpic->quantiser_table_selector[i] = fh->Tq[i];
}
- pic->nb_slices = 1;
+ vaapi_pic->nb_slices = 1;
return 0;
}
@@ -572,7 +573,7 @@ const FFCodec ff_mjpeg_vaapi_encoder = {
.p.id = AV_CODEC_ID_MJPEG,
.priv_data_size = sizeof(VAAPIEncodeMJPEGContext),
.init = &vaapi_encode_mjpeg_init,
- FF_CODEC_RECEIVE_PACKET_CB(&ff_vaapi_encode_receive_packet),
+ FF_CODEC_RECEIVE_PACKET_CB(&ff_hw_base_encode_receive_packet),
.close = &vaapi_encode_mjpeg_close,
.p.priv_class = &vaapi_encode_mjpeg_class,
.p.capabilities = AV_CODEC_CAP_HARDWARE | AV_CODEC_CAP_DR1 |