[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