summaryrefslogtreecommitdiffstats
path: root/media/base/pipeline_impl.cc
diff options
context:
space:
mode:
authorscherkus@chromium.org <scherkus@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-03-09 15:58:16 +0000
committerscherkus@chromium.org <scherkus@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-03-09 15:58:16 +0000
commitcee323423df2894048258daa02e2b1c3c24e7c46 (patch)
tree88b6b5da7c1b92daae8c1ff206d2f3c7399814f3 /media/base/pipeline_impl.cc
parent4b571e6b3efa2f510f64de4718a1f37a9542a251 (diff)
downloadchromium_src-cee323423df2894048258daa02e2b1c3c24e7c46.zip
chromium_src-cee323423df2894048258daa02e2b1c3c24e7c46.tar.gz
chromium_src-cee323423df2894048258daa02e2b1c3c24e7c46.tar.bz2
Remove the silly notion of MIME types from media code.
This was one of the first things I checked into Chromium and I've been wanting to remove it for a long, long time now. BUG=28206 TEST=media_unittests Review URL: http://codereview.chromium.org/6623087 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@77468 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'media/base/pipeline_impl.cc')
-rw-r--r--media/base/pipeline_impl.cc53
1 files changed, 20 insertions, 33 deletions
diff --git a/media/base/pipeline_impl.cc b/media/base/pipeline_impl.cc
index 9bce38c..d4009c8 100644
--- a/media/base/pipeline_impl.cc
+++ b/media/base/pipeline_impl.cc
@@ -135,11 +135,14 @@ bool PipelineImpl::IsNetworkActive() const {
return network_activity_;
}
-bool PipelineImpl::IsRendered(const std::string& major_mime_type) const {
+bool PipelineImpl::HasAudio() const {
base::AutoLock auto_lock(lock_);
- bool is_rendered = (rendered_mime_types_.find(major_mime_type) !=
- rendered_mime_types_.end());
- return is_rendered;
+ return has_audio_;
+}
+
+bool PipelineImpl::HasVideo() const {
+ base::AutoLock auto_lock(lock_);
+ return has_video_;
}
float PipelineImpl::GetPlaybackRate() const {
@@ -321,10 +324,11 @@ void PipelineImpl::ResetState() {
volume_ = 1.0f;
playback_rate_ = 0.0f;
error_ = PIPELINE_OK;
+ has_audio_ = false;
+ has_video_ = false;
waiting_for_clock_update_ = false;
audio_disabled_ = false;
clock_->SetTime(kZero);
- rendered_mime_types_.clear();
}
void PipelineImpl::set_state(State next_state) {
@@ -509,18 +513,6 @@ void PipelineImpl::DisableAudioRenderer() {
NewRunnableMethod(this, &PipelineImpl::DisableAudioRendererTask));
}
-void PipelineImpl::InsertRenderedMimeType(const std::string& major_mime_type) {
- DCHECK(IsRunning());
- base::AutoLock auto_lock(lock_);
- rendered_mime_types_.insert(major_mime_type);
-}
-
-bool PipelineImpl::HasRenderedMimeTypes() const {
- DCHECK(IsRunning());
- base::AutoLock auto_lock(lock_);
- return !rendered_mime_types_.empty();
-}
-
// Called from any thread.
void PipelineImpl::OnFilterInitialize() {
// Continue the initialize task by proceeding to the next stage.
@@ -627,7 +619,8 @@ void PipelineImpl::InitializeTask() {
set_state(kInitAudioRenderer);
// Returns false if there's no audio stream.
if (InitializeAudioRenderer(pipeline_init_state_->audio_decoder_)) {
- InsertRenderedMimeType(mime_type::kMajorTypeAudio);
+ base::AutoLock auto_lock(lock_);
+ has_audio_ = true;
return;
}
}
@@ -644,13 +637,14 @@ void PipelineImpl::InitializeTask() {
if (state_ == kInitVideoDecoder) {
set_state(kInitVideoRenderer);
if (InitializeVideoRenderer(pipeline_init_state_->video_decoder_)) {
- InsertRenderedMimeType(mime_type::kMajorTypeVideo);
+ base::AutoLock auto_lock(lock_);
+ has_video_ = true;
return;
}
}
if (state_ == kInitVideoRenderer) {
- if (!IsPipelineOk() || !HasRenderedMimeTypes()) {
+ if (!IsPipelineOk() || !(HasAudio() || HasVideo())) {
SetError(PIPELINE_ERROR_COULD_NOT_RENDER);
return;
}
@@ -856,11 +850,8 @@ void PipelineImpl::NotifyNetworkEventTask() {
void PipelineImpl::DisableAudioRendererTask() {
DCHECK_EQ(MessageLoop::current(), message_loop_);
- // |rendered_mime_types_| is read through public methods so we need to lock
- // this variable.
base::AutoLock auto_lock(lock_);
- rendered_mime_types_.erase(mime_type::kMajorTypeAudio);
-
+ has_audio_ = false;
audio_disabled_ = true;
// Notify all filters of disabled audio renderer. If the filter isn't
@@ -929,9 +920,7 @@ void PipelineImpl::FilterStateTransitionTask() {
base::AutoLock auto_lock(lock_);
// We use audio stream to update the clock. So if there is such a stream,
// we pause the clock until we receive a valid timestamp.
- waiting_for_clock_update_ =
- rendered_mime_types_.find(mime_type::kMajorTypeAudio) !=
- rendered_mime_types_.end();
+ waiting_for_clock_update_ = has_audio_;
if (!waiting_for_clock_update_)
clock_->Play();
@@ -1073,7 +1062,7 @@ bool PipelineImpl::InitializeAudioDecoder(
DCHECK(IsPipelineOk());
scoped_refptr<DemuxerStream> stream =
- FindDemuxerStream(demuxer, mime_type::kMajorTypeAudio);
+ FindDemuxerStream(demuxer, DemuxerStream::AUDIO);
if (!stream)
return false;
@@ -1103,7 +1092,7 @@ bool PipelineImpl::InitializeVideoDecoder(
DCHECK(IsPipelineOk());
scoped_refptr<DemuxerStream> stream =
- FindDemuxerStream(demuxer, mime_type::kMajorTypeVideo);
+ FindDemuxerStream(demuxer, DemuxerStream::VIDEO);
if (!stream)
return false;
@@ -1175,15 +1164,13 @@ bool PipelineImpl::InitializeVideoRenderer(
scoped_refptr<DemuxerStream> PipelineImpl::FindDemuxerStream(
const scoped_refptr<Demuxer>& demuxer,
- std::string major_mime_type) {
+ DemuxerStream::Type type) {
DCHECK(demuxer);
const int num_outputs = demuxer->GetNumberOfStreams();
for (int i = 0; i < num_outputs; ++i) {
std::string value;
- if (demuxer->GetStream(i)->media_format().GetAsString(
- MediaFormat::kMimeType, &value) &&
- !value.compare(0, major_mime_type.length(), major_mime_type)) {
+ if (demuxer->GetStream(i)->type() == type) {
return demuxer->GetStream(i);
}
}