Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(499)

Side by Side Diff: media/base/pipeline_impl.cc

Issue 2643743002: Mojify demuxers and allow running {Chunk/FFmpeg}Demuxer in a Utility Process (Closed)
Patch Set: Rebase and make sure to unbind mojom::DemuxerPtr on the bound thread during termination Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « media/base/media_resource.cc ('k') | media/base/source_buffer.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "media/base/pipeline_impl.h" 5 #include "media/base/pipeline_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/bind_helpers.h" 10 #include "base/bind_helpers.h"
(...skipping 841 matching lines...) Expand 10 before | Expand all | Expand 10 after
852 DCHECK(media_task_runner_->BelongsToCurrentThread()); 852 DCHECK(media_task_runner_->BelongsToCurrentThread());
853 853
854 demuxer_->Initialize(this, done_cb, !!text_renderer_); 854 demuxer_->Initialize(this, done_cb, !!text_renderer_);
855 } 855 }
856 856
857 void PipelineImpl::RendererWrapper::InitializeRenderer( 857 void PipelineImpl::RendererWrapper::InitializeRenderer(
858 const PipelineStatusCB& done_cb) { 858 const PipelineStatusCB& done_cb) {
859 DCHECK(media_task_runner_->BelongsToCurrentThread()); 859 DCHECK(media_task_runner_->BelongsToCurrentThread());
860 860
861 switch (demuxer_->GetType()) { 861 switch (demuxer_->GetType()) {
862 case MediaResource::Type::REMOTE:
863 if (demuxer_->GetRemoteId() == MediaResource::kInvalidRemoteId) {
864 DVLOG(1) << "Error: demuxer does not have a valid remote id.";
865 done_cb.Run(PIPELINE_ERROR_COULD_NOT_RENDER);
866 return;
867 }
868 break;
869
862 case MediaResource::Type::STREAM: 870 case MediaResource::Type::STREAM:
863 if (!demuxer_->GetStream(DemuxerStream::AUDIO) && 871 if (!demuxer_->GetStream(DemuxerStream::AUDIO) &&
864 !demuxer_->GetStream(DemuxerStream::VIDEO)) { 872 !demuxer_->GetStream(DemuxerStream::VIDEO)) {
865 DVLOG(1) << "Error: demuxer does not have an audio or a video stream."; 873 DVLOG(1) << "Error: demuxer does not have an audio or a video stream.";
866 done_cb.Run(PIPELINE_ERROR_COULD_NOT_RENDER); 874 done_cb.Run(PIPELINE_ERROR_COULD_NOT_RENDER);
867 return; 875 return;
868 } 876 }
869 break; 877 break;
870 878
871 case MediaResource::Type::URL: 879 case MediaResource::Type::URL:
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
915 metadata.video_rotation = stream->video_rotation(); 923 metadata.video_rotation = stream->video_rotation();
916 metadata.video_decoder_config = stream->video_decoder_config(); 924 metadata.video_decoder_config = stream->video_decoder_config();
917 } 925 }
918 stream = demuxer_->GetStream(DemuxerStream::AUDIO); 926 stream = demuxer_->GetStream(DemuxerStream::AUDIO);
919 if (stream) { 927 if (stream) {
920 metadata.has_audio = true; 928 metadata.has_audio = true;
921 metadata.audio_decoder_config = stream->audio_decoder_config(); 929 metadata.audio_decoder_config = stream->audio_decoder_config();
922 } 930 }
923 break; 931 break;
924 932
933 case MediaResource::Type::REMOTE:
925 case MediaResource::Type::URL: 934 case MediaResource::Type::URL:
926 // We don't know if the MediaPlayerRender has Audio/Video until we start 935 // We don't know if the MediaPlayerRender has Audio/Video until we start
927 // playing. Conservatively assume that they do. 936 // playing. Conservatively assume that they do.
928 metadata.has_video = true; 937 metadata.has_video = true;
929 metadata.has_audio = true; 938 metadata.has_audio = true;
930 break; 939 break;
931 } 940 }
932 941
933 main_task_runner_->PostTask(FROM_HERE, base::Bind(&PipelineImpl::OnMetadata, 942 main_task_runner_->PostTask(FROM_HERE, base::Bind(&PipelineImpl::OnMetadata,
934 weak_pipeline_, metadata)); 943 weak_pipeline_, metadata));
(...skipping 403 matching lines...) Expand 10 before | Expand all | Expand 10 after
1338 void PipelineImpl::OnSuspendDone() { 1347 void PipelineImpl::OnSuspendDone() {
1339 DVLOG(3) << __func__; 1348 DVLOG(3) << __func__;
1340 DCHECK(thread_checker_.CalledOnValidThread()); 1349 DCHECK(thread_checker_.CalledOnValidThread());
1341 DCHECK(IsRunning()); 1350 DCHECK(IsRunning());
1342 1351
1343 DCHECK(!suspend_cb_.is_null()); 1352 DCHECK(!suspend_cb_.is_null());
1344 base::ResetAndReturn(&suspend_cb_).Run(PIPELINE_OK); 1353 base::ResetAndReturn(&suspend_cb_).Run(PIPELINE_OK);
1345 } 1354 }
1346 1355
1347 } // namespace media 1356 } // namespace media
OLDNEW
« no previous file with comments | « media/base/media_resource.cc ('k') | media/base/source_buffer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698