| Index: media/filters/audio_file_reader.cc
|
| diff --git a/media/filters/audio_file_reader.cc b/media/filters/audio_file_reader.cc
|
| index b20fd8d9ce35795b7ed94e5cea8177d80f0f25f0..cb8188e22b9b62eeb52c317b5403cab9d36e03a6 100644
|
| --- a/media/filters/audio_file_reader.cc
|
| +++ b/media/filters/audio_file_reader.cc
|
| @@ -28,6 +28,12 @@ AudioFileReader::~AudioFileReader() {
|
| }
|
|
|
| bool AudioFileReader::Open() {
|
| + if (!OpenDemuxer())
|
| + return false;
|
| + return OpenDecoder();
|
| +}
|
| +
|
| +bool AudioFileReader::OpenDemuxer() {
|
| glue_.reset(new FFmpegGlue(protocol_));
|
| AVFormatContext* format_context = glue_->format_context();
|
|
|
| @@ -52,20 +58,21 @@ bool AudioFileReader::Open() {
|
| if (!codec_context_)
|
| return false;
|
|
|
| - int result = avformat_find_stream_info(format_context, NULL);
|
| - if (result < 0) {
|
| - DLOG(WARNING)
|
| - << "AudioFileReader::Open() : error in avformat_find_stream_info()";
|
| - return false;
|
| - }
|
| + const int result = avformat_find_stream_info(format_context, NULL);
|
| + DLOG_IF(WARNING, result < 0)
|
| + << "AudioFileReader::Open() : error in avformat_find_stream_info()";
|
| + return result >= 0;
|
| +}
|
|
|
| +bool AudioFileReader::OpenDecoder() {
|
| AVCodec* codec = avcodec_find_decoder(codec_context_->codec_id);
|
| if (codec) {
|
| // MP3 decodes to S16P which we don't support, tell it to use S16 instead.
|
| if (codec_context_->sample_fmt == AV_SAMPLE_FMT_S16P)
|
| codec_context_->request_sample_fmt = AV_SAMPLE_FMT_S16;
|
|
|
| - if ((result = avcodec_open2(codec_context_, codec, NULL)) < 0) {
|
| + const int result = avcodec_open2(codec_context_, codec, NULL);
|
| + if (result < 0) {
|
| DLOG(WARNING) << "AudioFileReader::Open() : could not open codec -"
|
| << " result: " << result;
|
| return false;
|
| @@ -79,8 +86,7 @@ bool AudioFileReader::Open() {
|
| return false;
|
| }
|
| } else {
|
| - DLOG(WARNING) << "AudioFileReader::Open() : could not find codec -"
|
| - << " result: " << result;
|
| + DLOG(WARNING) << "AudioFileReader::Open() : could not find codec.";
|
| return false;
|
| }
|
|
|
| @@ -96,7 +102,6 @@ bool AudioFileReader::Open() {
|
| channels_ = codec_context_->channels;
|
| sample_rate_ = codec_context_->sample_rate;
|
| av_sample_format_ = codec_context_->sample_fmt;
|
| -
|
| return true;
|
| }
|
|
|
| @@ -240,6 +245,10 @@ int AudioFileReader::GetNumberOfFrames() const {
|
| return static_cast<int>(ceil(GetDuration().InSecondsF() * sample_rate()));
|
| }
|
|
|
| +bool AudioFileReader::OpenDemuxerForTesting() {
|
| + return OpenDemuxer();
|
| +}
|
| +
|
| bool AudioFileReader::ReadPacketForTesting(AVPacket* output_packet) {
|
| return ReadPacket(output_packet);
|
| }
|
| @@ -257,4 +266,15 @@ bool AudioFileReader::ReadPacket(AVPacket* output_packet) {
|
| return false;
|
| }
|
|
|
| +bool AudioFileReader::SeekForTesting(base::TimeDelta seek_time) {
|
| + return av_seek_frame(glue_->format_context(),
|
| + stream_index_,
|
| + ConvertToTimeBase(codec_context_->time_base, seek_time),
|
| + AVSEEK_FLAG_BACKWARD) >= 0;
|
| +}
|
| +
|
| +const AVStream* AudioFileReader::GetAVStreamForTesting() const {
|
| + return glue_->format_context()->streams[stream_index_];
|
| +}
|
| +
|
| } // namespace media
|
|
|