diff options
author | hclam@chromium.org <hclam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-03-17 20:04:29 +0000 |
---|---|---|
committer | hclam@chromium.org <hclam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-03-17 20:04:29 +0000 |
commit | 40e5ac1f115a7905372d3414debaac63a5244886 (patch) | |
tree | 1613d237a6e69e0d1f95b1953b8b2572a9f5b52a /media/filters | |
parent | b0c2bda2081e3627baac5814d6c66ef121b88515 (diff) | |
download | chromium_src-40e5ac1f115a7905372d3414debaac63a5244886.zip chromium_src-40e5ac1f115a7905372d3414debaac63a5244886.tar.gz chromium_src-40e5ac1f115a7905372d3414debaac63a5244886.tar.bz2 |
andrew's patch
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@11904 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'media/filters')
-rw-r--r-- | media/filters/audio_renderer_base.cc | 4 | ||||
-rw-r--r-- | media/filters/audio_renderer_base.h | 2 | ||||
-rw-r--r-- | media/filters/audio_renderer_impl.cc | 3 | ||||
-rw-r--r-- | media/filters/ffmpeg_demuxer.cc | 20 | ||||
-rw-r--r-- | media/filters/file_data_source.cc | 10 |
5 files changed, 30 insertions, 9 deletions
diff --git a/media/filters/audio_renderer_base.cc b/media/filters/audio_renderer_base.cc index 548586e..af16271 100644 --- a/media/filters/audio_renderer_base.cc +++ b/media/filters/audio_renderer_base.cc @@ -35,7 +35,7 @@ void AudioRendererBase::Stop() { OnStop(); AutoLock auto_lock(lock_); - while (queue_.empty()) { + while (!queue_.empty()) { queue_.front()->Release(); queue_.pop_front(); } @@ -94,7 +94,7 @@ size_t AudioRendererBase::FillBuffer(uint8* dest, size_t len) { Buffer* buffer = queue_.front(); // Determine how much to copy. - const uint8* data = buffer->GetData() + data_offset_; + const char* data = buffer->GetData() + data_offset_; size_t data_len = buffer->GetDataSize() - data_offset_; data_len = std::min(len, data_len); diff --git a/media/filters/audio_renderer_base.h b/media/filters/audio_renderer_base.h index fd371e6..7d8d571 100644 --- a/media/filters/audio_renderer_base.h +++ b/media/filters/audio_renderer_base.h @@ -36,7 +36,7 @@ class AudioRendererBase : public AudioRenderer { virtual bool Initialize(AudioDecoder* decoder); // AssignableBuffer<AudioRendererBase, BufferInterface> implementation. - virtual void OnAssignment(Buffer* buffer_in); + void OnAssignment(Buffer* buffer_in); protected: // The default maximum size of the queue. diff --git a/media/filters/audio_renderer_impl.cc b/media/filters/audio_renderer_impl.cc index 6412d38..7b66e14 100644 --- a/media/filters/audio_renderer_impl.cc +++ b/media/filters/audio_renderer_impl.cc @@ -29,7 +29,8 @@ bool AudioRendererImpl::IsMediaFormatSupported( int channels; int sample_rate; int sample_bits; - return ParseMediaFormat(media_format, &channels, &sample_rate, &sample_bits); + return AudioManager::GetAudioManager()->HasAudioDevices() && + ParseMediaFormat(media_format, &channels, &sample_rate, &sample_bits); } void AudioRendererImpl::SetPlaybackRate(float playback_rate) { diff --git a/media/filters/ffmpeg_demuxer.cc b/media/filters/ffmpeg_demuxer.cc index 472ec5bd..73f6da5 100644 --- a/media/filters/ffmpeg_demuxer.cc +++ b/media/filters/ffmpeg_demuxer.cc @@ -2,9 +2,9 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "base/scoped_ptr.h" #include "base/string_util.h" #include "base/time.h" +#include "base/scoped_ptr.h" #include "media/base/filter_host.h" #include "media/filters/ffmpeg_common.h" #include "media/filters/ffmpeg_demuxer.h" @@ -30,8 +30,8 @@ class AVPacketBuffer : public Buffer { } // Buffer implementation. - virtual const uint8* GetData() const { - return reinterpret_cast<const uint8*>(packet_->data); + virtual const char* GetData() const { + return reinterpret_cast<const char*>(packet_->data); } virtual size_t GetDataSize() const { @@ -48,6 +48,8 @@ class AVPacketBuffer : public Buffer { // // FFmpegDemuxerStream // +AVCodecContext* g_audio_codec = NULL; +AVCodecContext* g_video_codec = NULL; FFmpegDemuxerStream::FFmpegDemuxerStream(FFmpegDemuxer* demuxer, const AVStream& stream) : demuxer_(demuxer) { @@ -62,6 +64,12 @@ FFmpegDemuxerStream::FFmpegDemuxerStream(FFmpegDemuxer* demuxer, stream.codec->channels); media_format_.SetAsInteger(MediaFormat::kSampleRate, stream.codec->sample_rate); + media_format_.SetAsInteger(MediaFormat::kBlockAlign, + stream.codec->block_align); + media_format_.SetAsInteger(MediaFormat::kFrameSize, + stream.codec->frame_size); + DCHECK(!g_audio_codec && stream.codec); + g_audio_codec = stream.codec; break; case CODEC_TYPE_VIDEO: media_format_.SetAsString(MediaFormat::kMimeType, @@ -70,6 +78,8 @@ FFmpegDemuxerStream::FFmpegDemuxerStream(FFmpegDemuxer* demuxer, stream.codec->height); media_format_.SetAsInteger(MediaFormat::kWidth, stream.codec->width); + DCHECK(!g_video_codec && stream.codec); + g_video_codec = stream.codec; break; default: NOTREACHED(); @@ -77,6 +87,10 @@ FFmpegDemuxerStream::FFmpegDemuxerStream(FFmpegDemuxer* demuxer, } int codec_id = static_cast<int>(stream.codec->codec_id); media_format_.SetAsInteger(kFFmpegCodecID, codec_id); + media_format_.SetAsInteger(MediaFormat::kBitRate, + stream.codec->bit_rate); + media_format_.SetAsInteger(MediaFormat::kBitsPerCodedSample, + stream.codec->bits_per_coded_sample); // Calculate the time base and duration in microseconds. int64 time_base_us = static_cast<int64>(av_q2d(stream.time_base) * diff --git a/media/filters/file_data_source.cc b/media/filters/file_data_source.cc index 854fea2..c0abe6a 100644 --- a/media/filters/file_data_source.cc +++ b/media/filters/file_data_source.cc @@ -22,8 +22,14 @@ FileDataSource::~FileDataSource() { bool FileDataSource::Initialize(const std::string& url) { DCHECK(!file_); + std::string url_clean; + if (url.find("file:///") == 0) { + url_clean = url.substr(arraysize("file:///") - 1); + } else { + url_clean = url; + } #if defined(OS_WIN) - FilePath file_path(UTF8ToWide(url)); + FilePath file_path(UTF8ToWide(url_clean)); #else FilePath file_path(url); #endif @@ -37,7 +43,7 @@ bool FileDataSource::Initialize(const std::string& url) { } media_format_.SetAsString(MediaFormat::kMimeType, mime_type::kApplicationOctetStream); - media_format_.SetAsString(MediaFormat::kURL, url); + media_format_.SetAsString(MediaFormat::kURL, url_clean); host_->SetTotalBytes(file_size_); host_->SetBufferedBytes(file_size_); host_->InitializationComplete(); |