Chromium Code Reviews| Index: media/filters/audio_file_reader.cc | 
| =================================================================== | 
| --- media/filters/audio_file_reader.cc (revision 160749) | 
| +++ media/filters/audio_file_reader.cc (working copy) | 
| @@ -35,7 +35,12 @@ | 
| base::TimeDelta AudioFileReader::duration() const { | 
| const AVRational av_time_base = {1, AV_TIME_BASE}; | 
| - return ConvertFromTimeBase(av_time_base, format_context_->duration); | 
| + | 
| + // Add one microsecond to avoid rounding-down errors which can occur when | 
| + // |duration| has been calculated from an exact number of sample-frames. | 
| + // One microsecond is much less than the time of a single sample-frame | 
| + // at any real-world sample-rate. | 
| + return ConvertFromTimeBase(av_time_base, format_context_->duration + 1); | 
| } | 
| int64 AudioFileReader::number_of_frames() const { | 
| @@ -110,13 +115,13 @@ | 
| } | 
| } | 
| -bool AudioFileReader::Read(AudioBus* audio_bus) { | 
| +int AudioFileReader::Read(AudioBus* audio_bus) { | 
| DCHECK(format_context_ && codec_context_) << | 
| "AudioFileReader::Read() : reader is not opened!"; | 
| DCHECK_EQ(audio_bus->channels(), channels()); | 
| 
 
DaleCurtis
2012/10/12 22:42:02
Style violation: Remove DCHECK() since this is han
 
Chris Rogers
2012/10/12 23:22:29
This isn't part of this CL
On 2012/10/12 22:42:02
 
DaleCurtis
2012/10/13 01:10:35
I know, but it's a good idea to fix these things i
 
 | 
| if (audio_bus->channels() != channels()) | 
| - return false; | 
| + return 0; | 
| size_t bytes_per_sample = av_get_bytes_per_sample(codec_context_->sample_fmt); | 
| @@ -187,8 +192,9 @@ | 
| audio_bus->ZeroFramesPartial( | 
| current_frame, audio_bus->frames() - current_frame); | 
| - // Fail if nothing has been decoded, otherwise return partial data. | 
| - return current_frame > 0; | 
| + // Returns the actual number of sample-frames decoded. | 
| + // Ideally this represents the "true" exact length of the file. | 
| + return current_frame; | 
| } | 
| } // namespace media |