avcodec/mediacodecdec: fix SEGV on modern nvidia decoders
authorAman Gupta <aman@tmm1.net>
Tue, 31 Jul 2018 21:33:08 +0000 (14:33 -0700)
committerAman Gupta <aman@tmm1.net>
Fri, 3 Aug 2018 18:06:46 +0000 (11:06 -0700)
commit476fd6ba3a7d74ed8be9af10cb9f4d4b3fdaf3e1
tree9e884e4295ecffa65f3715cdb53413eb214cb3bd
parent5aeb3b008080d8d4a38f245d557dbc9bd6c36dcf
avcodec/mediacodecdec: fix SEGV on modern nvidia decoders

This code came originally from gstreamer, where it was added in [1]
as a work-around for the Tegra 3. (The alignment was changed in [2]
as a response to [3], from 32-bit to 16-bit).

gstreamer only used this workaround in the case where the decoder
didn't return a slice-height property, but when the code was copied
into avcodec the conditional got lost. This commit restores the guard
and prefers the slice-height from the decoder when it is available.

This fixes segfaults decoding 1920x1080 h264 and mpeg2 videos on the
NVidia SHIELD after upgrading to Android Oreo.

[1] https://github.com/GStreamer/gst-plugins-bad/commit/a870e6a5c30dd85240fe75c7409cc1cf1b86541d
[2] https://github.com/GStreamer/gst-plugins-bad/commit/21ff3ae0b0127bd82951d278ca24f2d54133b7cd
[3] https://bugzilla.gnome.org/show_bug.cgi?id=748867

Signed-off-by: Aman Gupta <aman@tmm1.net>
libavcodec/mediacodecdec_common.c