History

lavc/vaapi_decode: Make it possible to send multiple slice params buffers

David Rosca committed 2 years ago

Commit fe9d8891 parent c872ba511 files · +13 −11Browse files

Unified · Split

11 files
  1. libavcodec/vaapi_av1.c +1 −1
  2. libavcodec/vaapi_decode.c +2 −1
  3. libavcodec/vaapi_decode.h +1 −0
  4. libavcodec/vaapi_h264.c +1 −1
  5. libavcodec/vaapi_hevc.c +2 −2
  6. libavcodec/vaapi_mjpeg.c +1 −1
  7. libavcodec/vaapi_mpeg2.c +1 −1
  8. libavcodec/vaapi_mpeg4.c +1 −1
  9. libavcodec/vaapi_vc1.c +1 −1
  10. libavcodec/vaapi_vp8.c +1 −1
  11. libavcodec/vaapi_vp9.c +1 −1
libavcodec/vaapi_av1.c+1−1
@@ -409,7 +409,7 @@ static int vaapi_av1_decode_slice(AVCodecContext *avctx, · 408 unmodified lines
409409 .tg_end = s->tg_end,
410410 };
411411
412− err = ff_vaapi_decode_make_slice_buffer(avctx, pic, &slice_param,
412+ err = ff_vaapi_decode_make_slice_buffer(avctx, pic, &slice_param, 1,
413413 sizeof(VASliceParameterBufferAV1),
414414 buffer,
415415 size);
libavcodec/vaapi_decode.c+2−1
@@ -63,6 +63,7 @@ int ff_vaapi_decode_make_param_buffer(AVCodecContext *avctx, · 62 unmodified lines
6363 int ff_vaapi_decode_make_slice_buffer(AVCodecContext *avctx,
6464 VAAPIDecodePicture *pic,
6565 const void *params_data,
66+ int nb_params,
6667 size_t params_size,
6768 const void *slice_data,
6869 size_t slice_size)
@@ -88,7 +89,7 @@ int ff_vaapi_decode_make_slice_buffer(AVCodecContext *avctx, · 19 unmodified lines
8889
8990 vas = vaCreateBuffer(ctx->hwctx->display, ctx->va_context,
9091 VASliceParameterBufferType,
91− params_size, 1, (void*)params_data,
92+ params_size, nb_params, (void*)params_data,
9293 &pic->slice_buffers[index]);
9394 if (vas != VA_STATUS_SUCCESS) {
9495 av_log(avctx, AV_LOG_ERROR, "Failed to create slice "
libavcodec/vaapi_decode.h+1−0
@@ -73,6 +73,7 @@ int ff_vaapi_decode_make_param_buffer(AVCodecContext *avctx, · 72 unmodified lines
7373 int ff_vaapi_decode_make_slice_buffer(AVCodecContext *avctx,
7474 VAAPIDecodePicture *pic,
7575 const void *params_data,
76+ int nb_params,
7677 size_t params_size,
7778 const void *slice_data,
7879 size_t slice_size);
libavcodec/vaapi_h264.c+1−1
@@ -375,7 +375,7 @@ static int vaapi_h264_decode_slice(AVCodecContext *avctx, · 374 unmodified lines
375375 slice_param.chroma_offset_l1);
376376
377377 err = ff_vaapi_decode_make_slice_buffer(avctx, pic,
378− &slice_param, sizeof(slice_param),
378+ &slice_param, 1, sizeof(slice_param),
379379 buffer, size);
380380 if (err) {
381381 ff_vaapi_decode_cancel(avctx, pic);
libavcodec/vaapi_hevc.c+2−2
@@ -353,7 +353,7 @@ static int vaapi_hevc_end_frame(AVCodecContext *avctx) · 352 unmodified lines
353353 if (pic->last_size) {
354354 last_slice_param->LongSliceFlags.fields.LastSliceOfPic = 1;
355355 ret = ff_vaapi_decode_make_slice_buffer(avctx, &pic->pic,
356− &pic->last_slice_param, slice_param_size,
356+ &pic->last_slice_param, 1, slice_param_size,
357357 pic->last_buffer, pic->last_size);
358358 if (ret < 0)
359359 goto fail;
@@ -471,7 +471,7 @@ static int vaapi_hevc_decode_slice(AVCodecContext *avctx, · 111 unmodified lines
471471
472472 if (!sh->first_slice_in_pic_flag) {
473473 err = ff_vaapi_decode_make_slice_buffer(avctx, &pic->pic,
474− &pic->last_slice_param, slice_param_size,
474+ &pic->last_slice_param, 1, slice_param_size,
475475 pic->last_buffer, pic->last_size);
476476 pic->last_buffer = NULL;
477477 pic->last_size = 0;
libavcodec/vaapi_mjpeg.c+1−1
@@ -131,7 +131,7 @@ static int vaapi_mjpeg_decode_slice(AVCodecContext *avctx, · 130 unmodified lines
131131 sp.components[i].ac_table_selector = s->ac_index[i];
132132 }
133133
134− err = ff_vaapi_decode_make_slice_buffer(avctx, pic, &sp, sizeof(sp), buffer, size);
134+ err = ff_vaapi_decode_make_slice_buffer(avctx, pic, &sp, 1, sizeof(sp), buffer, size);
135135 if (err)
136136 goto fail;
137137
libavcodec/vaapi_mpeg2.c+1−1
@@ -162,7 +162,7 @@ static int vaapi_mpeg2_decode_slice(AVCodecContext *avctx, const uint8_t *buffer · 161 unmodified lines
162162 };
163163
164164 err = ff_vaapi_decode_make_slice_buffer(avctx, pic,
165− &slice_param, sizeof(slice_param),
165+ &slice_param, 1, sizeof(slice_param),
166166 buffer, size);
167167 if (err < 0) {
168168 ff_vaapi_decode_cancel(avctx, pic);
libavcodec/vaapi_mpeg4.c+1−1
@@ -169,7 +169,7 @@ static int vaapi_mpeg4_decode_slice(AVCodecContext *avctx, const uint8_t *buffer · 168 unmodified lines
169169 };
170170
171171 err = ff_vaapi_decode_make_slice_buffer(avctx, pic,
172− &slice_param, sizeof(slice_param),
172+ &slice_param, 1, sizeof(slice_param),
173173 buffer, size);
174174 if (err < 0) {
175175 ff_vaapi_decode_cancel(avctx, pic);
libavcodec/vaapi_vc1.c+1−1
@@ -490,7 +490,7 @@ static int vaapi_vc1_decode_slice(AVCodecContext *avctx, const uint8_t *buffer, · 489 unmodified lines
490490 };
491491
492492 err = ff_vaapi_decode_make_slice_buffer(avctx, pic,
493− &slice_param, sizeof(slice_param),
493+ &slice_param, 1, sizeof(slice_param),
494494 buffer, size);
495495 if (err < 0) {
496496 ff_vaapi_decode_cancel(avctx, pic);
libavcodec/vaapi_vp8.c+1−1
@@ -209,7 +209,7 @@ static int vaapi_vp8_decode_slice(AVCodecContext *avctx, · 208 unmodified lines
209209 for (i = 0; i < 8; i++)
210210 sp.partition_size[i+1] = s->coeff_partition_size[i];
211211
212− err = ff_vaapi_decode_make_slice_buffer(avctx, pic, &sp, sizeof(sp), data, data_size);
212+ err = ff_vaapi_decode_make_slice_buffer(avctx, pic, &sp, 1, sizeof(sp), data, data_size);
213213 if (err)
214214 goto fail;
215215
libavcodec/vaapi_vp9.c+1−1
@@ -158,7 +158,7 @@ static int vaapi_vp9_decode_slice(AVCodecContext *avctx, · 157 unmodified lines
158158 }
159159
160160 err = ff_vaapi_decode_make_slice_buffer(avctx, pic,
161− &slice_param, sizeof(slice_param),
161+ &slice_param, 1, sizeof(slice_param),
162162 buffer, size);
163163 if (err) {
164164 ff_vaapi_decode_cancel(avctx, pic);

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t