[FFmpeg-devel] [PATCH] HWAccel infrastructure (take 3)
Gwenole Beauchesne
gbeauchesne
Fri Feb 20 17:36:29 CET 2009
Hi,
Le 20 f?vr. 09 ? 17:23, Stephen Warren a ?crit :
>> That's what was done initially with my buf+offset approach (as an
>> optimization hint if buf is the frame start) but Michael preferred
>> buf+size instead. So, you will now have to compute your offsets
>> yourself
>> too. ;-)
>
> Just so I'm clear (because I'm ill and possibly not thinking
> straight), the
> API will be presented with one buf+size per slice that the ffmpeg
> parser
> found, so all the "compute" is is adding up the sizes of previous
> slices?
> That's no big deal. Just so long as the ffmpeg->VDPAU-specific
> structure
> conversion doesn't have to rescan the entire bitstream looking for
> start
> codes.
Yes, e.g. I currently have that in the new VA API tree:
static int vaapi_mpeg4_decode_slice(AVCodecContext *avctx, const
uint8_t *buffer, uint32_t size)
{
[...]
/* Fill in VASliceParameterBufferMPEG4 */
slice_param = vaapi_slice_params_next(rds);
slice_param->slice_data_size = size;
slice_param->slice_data_offset = rds->slice_data_size;
slice_param->slice_data_flag = VA_SLICE_DATA_FLAG_ALL;
[...]
return vaapi_slice_data_append(rds, buffer, size);
}
and rds->slice_data_size is increased as the slice is sent to the
mapped accelerator region.
Besides, I also try to keep the start code in the passed slice (as
defined per [ buf, buf+size [). This is important to keep the start
code for VDPAU, for other slice level accelerators, it just doesn't
matter.
Regards,
Gwenole.
More information about the ffmpeg-devel
mailing list