Index: media/filters/ffmpeg_audio_decoder.cc |
diff --git a/media/filters/ffmpeg_audio_decoder.cc b/media/filters/ffmpeg_audio_decoder.cc |
index 45f8dd4863d6da11db8b4792ee5dba86c4551948..a7500136df058967600dbfa30102681d4803ef8f 100644 |
--- a/media/filters/ffmpeg_audio_decoder.cc |
+++ b/media/filters/ffmpeg_audio_decoder.cc |
@@ -267,8 +267,8 @@ void FFmpegAudioDecoder::DecodeBuffer( |
buffer->timestamp() < base::TimeDelta()) { |
// Dropping frames for negative timestamps as outlined in section A.2 |
// in the Vorbis spec. http://xiph.org/vorbis/doc/Vorbis_I_spec.html |
- output_frames_to_drop_ = floor(0.5 + -buffer->timestamp().InSecondsF() * |
acolwell GONE FROM CHROMIUM
2014/04/17 21:11:24
Why is this change needed?
DaleCurtis
2014/04/17 21:42:49
It's a cleanup from an earlier patch set. I kept
|
- config_.samples_per_second()); |
+ output_frames_to_drop_ = 0.5 + -buffer->timestamp().InSecondsF() * |
+ config_.samples_per_second(); |
} else { |
if (last_input_timestamp_ != kNoTimestamp() && |
buffer->timestamp() < last_input_timestamp_) { |
@@ -358,10 +358,10 @@ bool FFmpegAudioDecoder::FFmpegDecode( |
if (output_timestamp_helper_->base_timestamp() == kNoTimestamp() && |
!buffer->end_of_stream()) { |
DCHECK(buffer->timestamp() != kNoTimestamp()); |
- if (output_frames_to_drop_ > 0) { |
- // Currently Vorbis is the only codec that causes us to drop samples. |
- // If we have to drop samples it always means the timeline starts at 0. |
- DCHECK_EQ(codec_context_->codec_id, AV_CODEC_ID_VORBIS); |
+ if (output_frames_to_drop_ > 0 && |
+ codec_context_->codec_id == AV_CODEC_ID_VORBIS) { |
+ // If we are dropping samples for Vorbis, it always means the timeline |
+ // starts at 0. |
output_timestamp_helper_->SetBaseTimestamp(base::TimeDelta()); |
acolwell GONE FROM CHROMIUM
2014/04/17 21:11:24
Can we move this up into DecodeBuffer() next to th
DaleCurtis
2014/04/17 21:42:49
Done.
|
} else { |
output_timestamp_helper_->SetBaseTimestamp(buffer->timestamp()); |
@@ -496,6 +496,8 @@ bool FFmpegAudioDecoder::ConfigureDecoder() { |
state_ = kUninitialized; |
return false; |
} |
+ |
+ output_frames_to_drop_ = config_.codec_delay(); |
return true; |
} |