[FFmpeg-devel] [PATCH] vc1.c: add support for HWAccel (take 2)
Gwenole Beauchesne
gbeauchesne
Wed Mar 18 18:48:46 CET 2009
On Wed, 18 Mar 2009, Kostya wrote:
> On Wed, Mar 18, 2009 at 06:06:31PM +0100, Gwenole Beauchesne wrote:
>> Hi,
>>
>> On Tue, 10 Mar 2009, Kostya wrote:
>>
>>>> @@ -4277,6 +4279,15 @@ static int vc1_decode_frame(AVCodecContext *avctx,
>>>> s->me.qpel_put= s->dsp.put_qpel_pixels_tab;
>>>> s->me.qpel_avg= s->dsp.avg_qpel_pixels_tab;
>>>>
>>>> + if (avctx->hwaccel) {
>>>> + if (avctx->hwaccel->start_frame(avctx, buf, buf_size) < 0)
>>>> + return -1;
>>>> + if (avctx->hwaccel->decode_slice(avctx, buf_start, (buf +
>>>> buf_size) - buf_start) < 0)
>>>> + return -1;
>>>> + if (avctx->hwaccel->end_frame(avctx) < 0)
>>>> + return -1;
>>>> + }
>>>> + else
>>>
>>> <don't forget proper indent here>
>>
>> Well, that was an "optimization" to get a smaller patch (only '+') and
>> reduce the next one when removing VDPAU with only '-'s instead. ;-)
>> Anyway, reindented correctly as you can see in the attachment.
>
> Actually I don't like
> }
> else
> instead of
> } else
Hey, please tell me exactly what you want. I had a quick glance at vc1.c
and I see:
if ()
{
}
else
{
}
or
if(){
}else{
}
or
if () {
} else {
}
OK for sure for the latter?
>> (ii) you
>> can't swear either that all VA API bits can get in by the end of the week,
>
> I don't care about them but since you are the man behind AVHWAccel, why not
> convert existing instances to AVHWAccel?
I do maintain a separate tree for that. What I meant was inclusion of this
shall not depend strictly on future integration of the other bits.
Considering how long it takes for VA API to get in, I bet this will take
at least as long for VDPAU...
> Also that does not mean you have to produce such patch immediately, I just
> want to ensure it won't be forgotten.
Things need to get in in-order. The initial deal was to factorize for VA
API. Then, the VDPAU bits can be merged. Please don't mix the tasks.
> [...]
>> @@ -4277,8 +4279,16 @@ static int vc1_decode_frame(AVCodecContext *avctx,
>> s->me.qpel_put= s->dsp.put_qpel_pixels_tab;
>> s->me.qpel_avg= s->dsp.avg_qpel_pixels_tab;
>>
>> - if ((CONFIG_VC1_VDPAU_DECODER || CONFIG_WMV3_VDPAU_DECODER)
>> - &&s->avctx->codec->capabilities&CODEC_CAP_HWACCEL_VDPAU)
>> + if (avctx->hwaccel) {
>> + if (avctx->hwaccel->start_frame(avctx, buf, buf_size) < 0)
>> + return -1;
>> + if (avctx->hwaccel->decode_slice(avctx, buf_start, (buf + buf_size) - buf_start) < 0)
>> + return -1;
>> + if (avctx->hwaccel->end_frame(avctx) < 0)
>> + return -1;
>> + }
>> + else if ((CONFIG_VC1_VDPAU_DECODER || CONFIG_WMV3_VDPAU_DECODER)
>> + &&s->avctx->codec->capabilities&CODEC_CAP_HWACCEL_VDPAU)
>> ff_vdpau_vc1_decode_picture(s, buf_start, (buf + buf_size) - buf_start);
>> else {
>> ff_er_frame_start(s);
>
> No need to swap conditions here.
What do you mean? The conditions are still in the same order: CONFIG_*
then hw caps.
More information about the ffmpeg-devel
mailing list