Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(224)

Unified Diff: media/filters/ffmpeg_audio_decoder.cc

Issue 2543633006: To M56: Use ffmpeg for opus decoding, no need to maintain our decoder. (Closed)
Patch Set: Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « media/filters/audio_decoder_unittest.cc ('k') | media/filters/opus_audio_decoder.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/filters/ffmpeg_audio_decoder.cc
diff --git a/media/filters/ffmpeg_audio_decoder.cc b/media/filters/ffmpeg_audio_decoder.cc
index 86f8d580a54a15daa580606c161728bbebb3bb71..e3560ff1b8bcf9d359f2a7c0ab06147b8e6b4e3f 100644
--- a/media/filters/ffmpeg_audio_decoder.cc
+++ b/media/filters/ffmpeg_audio_decoder.cc
@@ -392,18 +392,6 @@ bool FFmpegAudioDecoder::ConfigureDecoder() {
// Release existing decoder resources if necessary.
ReleaseFFmpegResources();
- // Use OpusAudioDecoder for Opus for now, even if FFmpeg claims to support
- // Opus decode. Failure to configure here should lead to fall-back to
- // OpusAudioDecoder.
- // TODO(wolenetz,dalecurtis): Remove OpusAudioDecoder and use
- // FFmpegAudioDecoder instead for Opus.
- if (config_.codec() == kCodecOpus) {
- MEDIA_LOG(DEBUG, media_log_)
- << "Opus decode via FFmpegAudioDecoder is disabled";
- state_ = kUninitialized;
- return false;
- }
-
// Initialize AVCodecContext structure.
codec_context_.reset(avcodec_alloc_context3(NULL));
AudioDecoderConfigToAVCodecContext(config_, codec_context_.get());
@@ -412,6 +400,9 @@ bool FFmpegAudioDecoder::ConfigureDecoder() {
codec_context_->get_buffer2 = GetAudioBuffer;
codec_context_->refcounted_frames = 1;
+ if (config_.codec() == kCodecOpus)
+ codec_context_->request_sample_fmt = AV_SAMPLE_FMT_FLT;
+
AVCodec* codec = avcodec_find_decoder(codec_context_->codec_id);
if (!codec || avcodec_open2(codec_context_.get(), codec, NULL) < 0) {
DLOG(ERROR) << "Could not initialize audio decoder: "
@@ -441,9 +432,13 @@ bool FFmpegAudioDecoder::ConfigureDecoder() {
}
void FFmpegAudioDecoder::ResetTimestampState() {
- discard_helper_.reset(new AudioDiscardHelper(config_.samples_per_second(),
- config_.codec_delay()));
- discard_helper_->Reset(config_.codec_delay());
+ // Opus codec delay is handled by ffmpeg.
+ const int codec_delay =
+ config_.codec() == kCodecOpus ? 0 : config_.codec_delay();
+ discard_helper_.reset(
+ new AudioDiscardHelper(config_.samples_per_second(), codec_delay,
+ config_.codec() == kCodecVorbis));
+ discard_helper_->Reset(codec_delay);
}
} // namespace media
« no previous file with comments | « media/filters/audio_decoder_unittest.cc ('k') | media/filters/opus_audio_decoder.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698