[FFmpeg-devel] [PATCH] lavc/vaapi: Add VP8 decode hwaccel
Mark Thompson
sw at jkqxz.net
Sat Nov 12 18:24:07 EET 2016
On 12/11/16 13:57, Mark Thompson wrote:
> On 11/11/16 07:57, Jun Zhao wrote:
>> @@ -2800,14 +2849,18 @@ static int vp8_decode_update_thread_context(AVCodecContext *dst,
>> s->mb_width = s_src->mb_width;
>> s->mb_height = s_src->mb_height;
>> }
>> -
>> s->prob[0] = s_src->prob[!s_src->update_probabilities];
>> s->segmentation = s_src->segmentation;
>> s->lf_delta = s_src->lf_delta;
>> + s->pix_fmt = s_src->pix_fmt;
>> + s->mbskip_enabled = s_src->mbskip_enabled;
>> + s->filter = s_src->filter;
>> memcpy(s->sign_bias, s_src->sign_bias, sizeof(s->sign_bias));
>> + s->num_coeff_partitions = s_src->num_coeff_partitions;
>> + s->header_partition_size = s_src->header_partition_size;
>>
>> for (i = 0; i < FF_ARRAY_ELEMS(s_src->frames); i++) {
>> - if (s_src->frames[i].tf.f->data[0]) {
>> + if (s_src->frames[i].tf.f->buf[0]) {
>> int ret = vp8_ref_frame(s, &s->frames[i], &s_src->frames[i]);
>> if (ret < 0)
>> return ret;
>
> This is fixing decode with frame threads? I admit I don't think I ever tested with frame threading enabled, indeed it dies horribly in libav.
>
> Does fate-vp8 using the hwaccel and threads pass in ffmpeg with this? It fails in libav, but the setup might be different because of changes you've made.
Right, only pix_fmt and the references should be copied here (the other parts are always overwritten from the frame header).
More synchronisation is required to make it actually work - see <https://lists.libav.org/pipermail/libav-devel/2016-November/080413.html>. Assuming other people agree with the approach there, it should probably be merged at the same time as 4e528206bc4d968706401206cf54471739250ec7.
Thanks,
- Mark
More information about the ffmpeg-devel
mailing list