mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2025-12-08 06:09:50 +00:00
vaapi_encode: Check packed header capabilities
This improves behaviour with drivers which do not support packed
headers, such as AMD VCE on mesa/gallium.
(cherry picked from commit 892bbbcdc1)
This commit is contained in:
parent
c8241e730f
commit
478a4b7e6d
5 changed files with 54 additions and 7 deletions
|
|
@ -345,6 +345,17 @@ static av_cold int vaapi_encode_mjpeg_configure(AVCodecContext *avctx)
|
|||
return AVERROR(EINVAL);
|
||||
}
|
||||
|
||||
// Hack: the implementation calls the JPEG image header (which we
|
||||
// will use in the same way as a slice header) generic "raw data".
|
||||
// Therefore, if after the packed header capability check we have
|
||||
// PACKED_HEADER_RAW_DATA available, rewrite it as
|
||||
// PACKED_HEADER_SLICE so that the header-writing code can do the
|
||||
// right thing.
|
||||
if (ctx->va_packed_headers & VA_ENC_PACKED_HEADER_RAW_DATA) {
|
||||
ctx->va_packed_headers &= ~VA_ENC_PACKED_HEADER_RAW_DATA;
|
||||
ctx->va_packed_headers |= VA_ENC_PACKED_HEADER_SLICE;
|
||||
}
|
||||
|
||||
vaapi_encode_mjpeg_init_tables(avctx);
|
||||
|
||||
return 0;
|
||||
|
|
@ -380,6 +391,10 @@ static av_cold int vaapi_encode_mjpeg_init(AVCodecContext *avctx)
|
|||
|
||||
ctx->va_rc_mode = VA_RC_CQP;
|
||||
|
||||
// The JPEG image header - see note above.
|
||||
ctx->va_packed_headers =
|
||||
VA_ENC_PACKED_HEADER_RAW_DATA;
|
||||
|
||||
ctx->surface_width = FFALIGN(avctx->width, 8);
|
||||
ctx->surface_height = FFALIGN(avctx->height, 8);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue