On 06/11/2019 04:53, Linjie Fu wrote:
> Set surfaces pool used for storing reference frames dynamically
> according to SPS.(reference framecount, reordered frame number, etc)
> 
> Compared to a fixed pool size for H.264 and HEVC, the usage of
> GPU memory could be improved.
> 
> CMD:
> ffmpeg -hwaccel vaapi -vaapi_device /dev/dri/renderD128
>         -i bbb_sunflower_1080p_30fps_normal.mp4 -f null -
> Source:
>     https://download.blender.org/demo/movies/BBB/
> 
> GEM Object memory usage:
>     watch cat /sys/kernel/debug/dri/0/i915_gem_objects
> Before:
>     ~112M
> After:
>     ~80M
> 
> Signed-off-by: Linjie Fu <linjie...@intel.com>
> ---
>  libavcodec/vaapi_decode.c | 39 ++++++++++++++++++---------------------
>  libavcodec/vaapi_decode.h |  3 +++
>  libavcodec/vaapi_h264.c   | 11 ++++++++++-
>  libavcodec/vaapi_hevc.c   | 11 ++++++++++-
>  libavcodec/vaapi_vp8.c    |  8 +++++++-
>  libavcodec/vaapi_vp9.c    |  8 +++++++-
>  6 files changed, 55 insertions(+), 25 deletions(-)

The number of required reference frames is a property of the codec, not a 
property of the hardware used to decode it.  I think make a function to 
determine the required size given an AVCodecContext and then call it in 
vaapi_decode_make_config() rather than adding all of these extra functions 
inside the VAAPI code.  (And then you can call it in 
ff_dxva2_common_frame_params() as well.)

Relatedly, do we believe that all H.264 streams which people might want to 
decode are actually marked correctly here?  The failure mode will be bad if we 
run out.

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

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to