[FFmpeg-cvslog] avcodec/videotoolbox: fix SEGV when hwaccel decoding h264 with ffmpeg.c
Aman Gupta
git at videolan.org
Tue Nov 28 18:51:15 EET 2017
ffmpeg | branch: master | Aman Gupta <aman at tmm1.net> | Tue Nov 28 08:49:21 2017 -0800| [b5d56d8ef1ef17487d827f1e35d02501f55218de] | committer: Aman Gupta
avcodec/videotoolbox: fix SEGV when hwaccel decoding h264 with ffmpeg.c
Signed-off-by: Aman Gupta <aman at tmm1.net>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=b5d56d8ef1ef17487d827f1e35d02501f55218de
---
libavcodec/videotoolbox.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/libavcodec/videotoolbox.c b/libavcodec/videotoolbox.c
index c275e0111e..afec1edf3f 100644
--- a/libavcodec/videotoolbox.c
+++ b/libavcodec/videotoolbox.c
@@ -119,7 +119,8 @@ CFDataRef ff_videotoolbox_avcc_extradata_create(AVCodecContext *avctx)
// save sps header (profile/level) used to create decoder session,
// so we can detect changes and recreate it.
- memcpy(vtctx->sps, h->ps.sps->data + 1, 3);
+ if (vtctx)
+ memcpy(vtctx->sps, h->ps.sps->data + 1, 3);
data = CFDataCreate(kCFAllocatorDefault, vt_extradata, vt_extradata_size);
av_free(vt_extradata);
@@ -323,6 +324,11 @@ static int videotoolbox_h264_decode_params(AVCodecContext *avctx,
uint32_t size)
{
VTContext *vtctx = avctx->internal->hwaccel_priv_data;
+ H264Context *h = avctx->priv_data;
+
+ // save sps header (profile/level) used to create decoder session
+ if (!vtctx->sps[0])
+ memcpy(vtctx->sps, h->ps.sps->data + 1, 3);
if (type == H264_NAL_SPS) {
if (size > 4 && memcmp(vtctx->sps, buffer + 1, 3) != 0) {
More information about the ffmpeg-cvslog
mailing list