On 14/09/16 02:30, Jun Zhao wrote:
> On 2016/9/14 6:06, Mark Thompson wrote:
>> How about something like this, then?  It adds a new filter to do the video 
>> processing, while leaving the scale filter as-is.
> 
> Can we merge the vpp scale/the other vpp filters in one AVFilter, e,g 
> vf_postprocess_vaapi.c. 
> If we split the scale/the other vpp filters, I guess maybe have some 
> performance issue,
> when merge the scale/the other vpp filters in one AVFilter, only once surface 
> copy ,
>  
>     1 input surface-> 1 output surface // once copy for 
> scale/de-noise/sharpness/...
> 
> but if split them, it's will lead to twice surface copy in some case. 
> 
>     1 input surface -> 1 output surface -> 2 output surface // 1st copy for 
> scale, 2nd
>                                                             // copy for the 
> other vaapi filters

Can you share what driver/platform you are testing on and what commands you are 
using to get the result that the combined filter is faster?

For example, I get (1080p H.264 input, current i965 on Skylake):


[With the patch to vf_scale_vaapi]

./ffmpeg_g -y -vaapi_device /dev/dri/renderD128 -hwaccel vaapi 
-hwaccel_output_format vaapi -i in.mp4 -an -vf 
'format=vaapi|nv12,hwupload,scale_vaapi=denoise=50:w=1280:h=720' -c:v 
h264_vaapi -qp 20 out.mp4

-> 225fps.


[With the patch adding vf_process_vaapi]

./ffmpeg_g -y -vaapi_device /dev/dri/renderD128 -hwaccel vaapi 
-hwaccel_output_format vaapi -i in.mp4 -an -vf 
'format=vaapi|nv12,hwupload,process_vaapi=denoise=50,scale_vaapi=w=1280:h=720' 
-c:v h264_vaapi -qp 20 out.mp4

-> 255fps.


I'm not sure why the separate filters are actually faster here, but I was 
certainly expecting them to be about the same - since we haven't introduced any 
additional synchronisation points in either sequence, it should all be fully 
pipelined in the batch buffer rings from the decoder to the encoder output.  I 
believe the argument about surfaces is specious because the combined case needs 
the same intermediates and therefore internally allocates temporary surfaces 
for them.

Thanks,

- Mark

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel

Reply via email to