decoder/ffmpeg: use avcodec_alloc_context3()
This commit suppresses the remaining deprecation warnings with FFmpeg 3.1.
This commit is contained in:
		| @@ -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); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Max Kellermann
					Max Kellermann