Import Cobalt 20.master.0.243969
Includes the following patches:
https://cobalt-review.googlesource.com/c/cobalt/+/5610
by r97922153@gmail.com
diff --git a/src/starboard/shared/ffmpeg/ffmpeg_audio_decoder_impl.cc b/src/starboard/shared/ffmpeg/ffmpeg_audio_decoder_impl.cc
index 8fe9577..fec161c 100644
--- a/src/starboard/shared/ffmpeg/ffmpeg_audio_decoder_impl.cc
+++ b/src/starboard/shared/ffmpeg/ffmpeg_audio_decoder_impl.cc
@@ -43,12 +43,13 @@
switch (audio_codec) {
case kSbMediaAudioCodecAac:
return AV_CODEC_ID_AAC;
-#if SB_HAS(AC3_AUDIO)
+#if SB_API_VERSION >= SB_FEATURE_RUNTIME_CONFIGS_VERSION || SB_HAS(AC3_AUDIO)
case kSbMediaAudioCodecAc3:
- return AV_CODEC_ID_AC3;
+ return kSbHasAc3Audio ? AV_CODEC_ID_AC3 : AV_CODEC_ID_NONE;
case kSbMediaAudioCodecEac3:
- return AV_CODEC_ID_EAC3;
-#endif // SB_HAS(AC3_AUDIO)
+ return kSbHasAc3Audio ? AV_CODEC_ID_EAC3 : AV_CODEC_ID_NONE;
+#endif // SB_API_VERSION >= SB_FEATURE_RUNTIME_CONFIGS_VERSION ||
+ // SB_HAS(AC3_AUDIO)
case kSbMediaAudioCodecOpus:
return AV_CODEC_ID_OPUS;
default:
@@ -125,11 +126,9 @@
packet.data = const_cast<uint8_t*>(input_buffer->data());
packet.size = input_buffer->size();
-#if LIBAVUTIL_VERSION_INT >= AV_VERSION_INT(52, 8, 0)
- ffmpeg_->av_frame_unref(av_frame_);
-#else // LIBAVUTIL_VERSION_INT >= AV_VERSION_INT(52, 8, 0)
+#if LIBAVUTIL_VERSION_INT < LIBAVUTIL_VERSION_52_8
ffmpeg_->avcodec_get_frame_defaults(av_frame_);
-#endif // LIBAVUTIL_VERSION_INT >= AV_VERSION_INT(52, 8, 0)
+#endif // LIBAVUTIL_VERSION_INT < LIBAVUTIL_VERSION_52_8
int frame_decoded = 0;
int result = ffmpeg_->avcodec_decode_audio4(codec_context_, av_frame_,
&frame_decoded, &packet);
@@ -315,11 +314,11 @@
return;
}
-#if LIBAVUTIL_VERSION_INT >= AV_VERSION_INT(52, 8, 0)
+#if LIBAVUTIL_VERSION_INT >= LIBAVUTIL_VERSION_52_8
av_frame_ = ffmpeg_->av_frame_alloc();
-#else // LIBAVUTIL_VERSION_INT >= AV_VERSION_INT(52, 8, 0)
+#else // LIBAVUTIL_VERSION_INT >= LIBAVUTIL_VERSION_52_8
av_frame_ = ffmpeg_->avcodec_alloc_frame();
-#endif // LIBAVUTIL_VERSION_INT >= AV_VERSION_INT(52, 8, 0)
+#endif // LIBAVUTIL_VERSION_INT >= LIBAVUTIL_VERSION_52_8
if (av_frame_ == NULL) {
SB_LOG(ERROR) << "Unable to allocate audio frame";
TeardownCodec();
@@ -329,12 +328,9 @@
void AudioDecoderImpl<FFMPEG>::TeardownCodec() {
if (codec_context_) {
ffmpeg_->CloseCodec(codec_context_);
- if (codec_context_->extradata_size) {
- ffmpeg_->av_freep(&codec_context_->extradata);
- }
- ffmpeg_->av_freep(&codec_context_);
+ ffmpeg_->FreeContext(&codec_context_);
}
- ffmpeg_->av_freep(&av_frame_);
+ ffmpeg_->FreeFrame(&av_frame_);
}
} // namespace ffmpeg