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

Side by Side Diff: media/renderers/video_renderer_impl.cc

Issue 2837613004: media: Support better decoder switching (Closed)
Patch Set: Mock*Decoder name Created 3 years, 7 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
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/renderers/video_renderer_impl.h" 5 #include "media/renderers/video_renderer_impl.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/callback.h" 10 #include "base/callback.h"
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
143 DCHECK(task_runner_->BelongsToCurrentThread()); 143 DCHECK(task_runner_->BelongsToCurrentThread());
144 base::AutoLock auto_lock(lock_); 144 base::AutoLock auto_lock(lock_);
145 DCHECK(stream); 145 DCHECK(stream);
146 DCHECK_EQ(stream->type(), DemuxerStream::VIDEO); 146 DCHECK_EQ(stream->type(), DemuxerStream::VIDEO);
147 DCHECK(!init_cb.is_null()); 147 DCHECK(!init_cb.is_null());
148 DCHECK(!wall_clock_time_cb.is_null()); 148 DCHECK(!wall_clock_time_cb.is_null());
149 DCHECK(kUninitialized == state_ || kFlushed == state_); 149 DCHECK(kUninitialized == state_ || kFlushed == state_);
150 DCHECK(!was_background_rendering_); 150 DCHECK(!was_background_rendering_);
151 DCHECK(!time_progressing_); 151 DCHECK(!time_progressing_);
152 152
153 ScopedVector<VideoDecoder> decoders = create_video_decoders_cb_.Run(); 153 video_frame_stream_.reset(new VideoFrameStream(
154 video_frame_stream_.reset( 154 task_runner_, create_video_decoders_cb_, media_log_));
155 new VideoFrameStream(task_runner_, std::move(decoders), media_log_));
156 155
157 // Always re-initialize or reset the |gpu_memory_buffer_pool_| in case we are 156 // Always re-initialize or reset the |gpu_memory_buffer_pool_| in case we are
158 // switching between video tracks with incompatible video formats (e.g. 8-bit 157 // switching between video tracks with incompatible video formats (e.g. 8-bit
159 // H.264 to 10-bit H264 or vice versa). 158 // H.264 to 10-bit H264 or vice versa).
160 if (gpu_factories_ && 159 if (gpu_factories_ &&
161 gpu_factories_->ShouldUseGpuMemoryBuffersForVideoFrames()) { 160 gpu_factories_->ShouldUseGpuMemoryBuffersForVideoFrames()) {
162 gpu_memory_buffer_pool_.reset(new GpuMemoryBufferVideoFramePool( 161 gpu_memory_buffer_pool_.reset(new GpuMemoryBufferVideoFramePool(
163 task_runner_, worker_task_runner_, gpu_factories_)); 162 task_runner_, worker_task_runner_, gpu_factories_));
164 } else { 163 } else {
165 gpu_memory_buffer_pool_.reset(); 164 gpu_memory_buffer_pool_.reset();
(...skipping 569 matching lines...) Expand 10 before | Expand all | Expand 10 after
735 734
736 void VideoRendererImpl::AttemptReadAndCheckForMetadataChanges( 735 void VideoRendererImpl::AttemptReadAndCheckForMetadataChanges(
737 VideoPixelFormat pixel_format, 736 VideoPixelFormat pixel_format,
738 const gfx::Size& natural_size) { 737 const gfx::Size& natural_size) {
739 base::AutoLock auto_lock(lock_); 738 base::AutoLock auto_lock(lock_);
740 CheckForMetadataChanges(pixel_format, natural_size); 739 CheckForMetadataChanges(pixel_format, natural_size);
741 AttemptRead_Locked(); 740 AttemptRead_Locked();
742 } 741 }
743 742
744 } // namespace media 743 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698