decoder/ffmpeg: use avcodec_alloc_context3()

This commit suppresses the remaining deprecation warnings with FFmpeg 3.1.
This commit is contained in:
Max Kellermann 2016-07-28 20:33:24 +02:00
parent 2b9246c6ad
commit 8825393660

View File

@ -503,7 +503,10 @@ FfmpegDecode(Decoder &decoder, InputStream &input,
AVStream &av_stream = *format_context.streams[audio_stream];
#if LIBAVFORMAT_VERSION_INT < AV_VERSION_INT(57, 5, 0)
AVCodecContext *codec_context = av_stream.codec;
#endif
const auto &codec_params = GetCodecParameters(av_stream);
#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(54, 25, 0)
@ -525,6 +528,18 @@ FfmpegDecode(Decoder &decoder, InputStream &input,
return;
}
#if LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT(57, 5, 0)
AVCodecContext *codec_context = avcodec_alloc_context3(codec);
if (codec_context == nullptr) {
LogError(ffmpeg_domain, "avcodec_alloc_context3() failed");
return;
}
AtScopeExit(&codec_context) {
avcodec_free_context(&codec_context);
};
#endif
const SampleFormat sample_format =
ffmpeg_sample_format(GetSampleFormat(codec_params));
if (sample_format == SampleFormat::UNDEFINED) {
@ -553,9 +568,11 @@ FfmpegDecode(Decoder &decoder, InputStream &input,
return;
}
#if LIBAVFORMAT_VERSION_INT < AV_VERSION_INT(57, 5, 0)
AtScopeExit(codec_context) {
avcodec_close(codec_context);
};
#endif
const SignedSongTime total_time =
FromFfmpegTimeChecked(av_stream.duration, av_stream.time_base);