hwframe: Allow hwaccel frame allocators to align surface sizes
authorAnton Khirnov <anton@khirnov.net>
Thu, 22 Jun 2017 18:05:12 +0000 (20:05 +0200)
committerwm4 <nfxjfg@googlemail.com>
Tue, 27 Jun 2017 16:05:02 +0000 (18:05 +0200)
commitd14179e3d49eb0f2533db16151e01abb0018b165
tree5731b77f347262395c58166108e3f51a01598fef
parentf0bcedaf37ed4fdb082c88826b8bd3a5dd26382a
hwframe: Allow hwaccel frame allocators to align surface sizes

Hardware accelerated decoding generally uses AVHWFramesContext for pool
allocation of hardware surfaces. These are setup to allocate surfaces
aligned to hardware and hwaccel API requirements. Due to the
architecture, av_hwframe_get_buffer() will return AVFrames with
the dimensions set to the aligned sizes.

This causes some decoders (like hevc) return these aligned size as
final frame size, instead of cropping them to the video's actual
dimensions. To make sure this doesn't happen, crop the frame to the
size the decoder expects when ff_get_buffer() is called.

Merges Libav commit 3fdf50f9e864c88da2139cf066832944de81acaa.

Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
libavcodec/decode.c