|
|
|
@@ -3417,16 +3417,13 @@ static av_cold int hevc_decode_free(AVCodecContext *avctx) |
|
|
|
av_freep(&s->sh.offset); |
|
|
|
av_freep(&s->sh.size); |
|
|
|
|
|
|
|
for (i = 1; i < s->threads_number; i++) { |
|
|
|
HEVCLocalContext *lc = s->HEVClcList[i]; |
|
|
|
if (lc) { |
|
|
|
if (s->HEVClcList && s->sList) { |
|
|
|
for (i = 1; i < s->threads_number; i++) { |
|
|
|
av_freep(&s->HEVClcList[i]); |
|
|
|
av_freep(&s->sList[i]); |
|
|
|
} |
|
|
|
} |
|
|
|
if (s->HEVClc == s->HEVClcList[0]) |
|
|
|
s->HEVClc = NULL; |
|
|
|
av_freep(&s->HEVClcList[0]); |
|
|
|
av_freep(&s->HEVClc); |
|
|
|
av_freep(&s->HEVClcList); |
|
|
|
av_freep(&s->sList); |
|
|
|
|
|
|
|
@@ -3622,7 +3619,6 @@ static av_cold int hevc_decode_init(AVCodecContext *avctx) |
|
|
|
if (avctx->extradata_size > 0 && avctx->extradata) { |
|
|
|
ret = hevc_decode_extradata(s, avctx->extradata, avctx->extradata_size, 1); |
|
|
|
if (ret < 0) { |
|
|
|
hevc_decode_free(avctx); |
|
|
|
return ret; |
|
|
|
} |
|
|
|
} |
|
|
|
@@ -3673,7 +3669,7 @@ AVCodec ff_hevc_decoder = { |
|
|
|
.capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_DELAY | |
|
|
|
AV_CODEC_CAP_SLICE_THREADS | AV_CODEC_CAP_FRAME_THREADS, |
|
|
|
.caps_internal = FF_CODEC_CAP_INIT_THREADSAFE | FF_CODEC_CAP_EXPORTS_CROPPING | |
|
|
|
FF_CODEC_CAP_ALLOCATE_PROGRESS, |
|
|
|
FF_CODEC_CAP_ALLOCATE_PROGRESS | FF_CODEC_CAP_INIT_CLEANUP, |
|
|
|
.profiles = NULL_IF_CONFIG_SMALL(ff_hevc_profiles), |
|
|
|
.hw_configs = (const AVCodecHWConfigInternal *const []) { |
|
|
|
#if CONFIG_HEVC_DXVA2_HWACCEL |
|
|
|
|