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

Side by Side Diff: media/cast/sender/external_video_encoder.cc

Issue 655713003: Standardize usage of virtual/override/final in media/ (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 2 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/cast/sender/external_video_encoder.h" 5 #include "media/cast/sender/external_video_encoder.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "base/memory/scoped_vector.h" 9 #include "base/memory/scoped_vector.h"
10 #include "base/memory/shared_memory.h" 10 #include "base/memory/shared_memory.h"
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
166 in_progress_frame_encodes_.push_back(InProgressFrameEncode( 166 in_progress_frame_encodes_.push_back(InProgressFrameEncode(
167 TimeDeltaToRtpDelta(video_frame->timestamp(), kVideoFrequency), 167 TimeDeltaToRtpDelta(video_frame->timestamp(), kVideoFrequency),
168 reference_time, 168 reference_time,
169 frame_encoded_callback)); 169 frame_encoded_callback));
170 170
171 // BitstreamBufferReady will be called once the encoder is done. 171 // BitstreamBufferReady will be called once the encoder is done.
172 video_encode_accelerator_->Encode(video_frame, key_frame_requested); 172 video_encode_accelerator_->Encode(video_frame, key_frame_requested);
173 } 173 }
174 174
175 protected: 175 protected:
176 virtual void NotifyError(VideoEncodeAccelerator::Error error) override { 176 void NotifyError(VideoEncodeAccelerator::Error error) override {
177 DCHECK(encoder_task_runner_.get()); 177 DCHECK(encoder_task_runner_.get());
178 DCHECK(encoder_task_runner_->RunsTasksOnCurrentThread()); 178 DCHECK(encoder_task_runner_->RunsTasksOnCurrentThread());
179 VLOG(1) << "ExternalVideoEncoder NotifyError: " << error; 179 VLOG(1) << "ExternalVideoEncoder NotifyError: " << error;
180 180
181 cast_environment_->PostTask( 181 cast_environment_->PostTask(
182 CastEnvironment::MAIN, 182 CastEnvironment::MAIN,
183 FROM_HERE, 183 FROM_HERE,
184 base::Bind(&ExternalVideoEncoder::EncoderError, weak_owner_)); 184 base::Bind(&ExternalVideoEncoder::EncoderError, weak_owner_));
185 } 185 }
186 186
187 // Called to allocate the input and output buffers. 187 // Called to allocate the input and output buffers.
188 virtual void RequireBitstreamBuffers(unsigned int input_count, 188 void RequireBitstreamBuffers(unsigned int input_count,
189 const gfx::Size& input_coded_size, 189 const gfx::Size& input_coded_size,
190 size_t output_buffer_size) override { 190 size_t output_buffer_size) override {
191 DCHECK(encoder_task_runner_.get()); 191 DCHECK(encoder_task_runner_.get());
192 DCHECK(encoder_task_runner_->RunsTasksOnCurrentThread()); 192 DCHECK(encoder_task_runner_->RunsTasksOnCurrentThread());
193 DCHECK(video_encode_accelerator_); 193 DCHECK(video_encode_accelerator_);
194 194
195 for (size_t j = 0; j < kOutputBufferCount; ++j) { 195 for (size_t j = 0; j < kOutputBufferCount; ++j) {
196 create_video_encode_memory_cb_.Run( 196 create_video_encode_memory_cb_.Run(
197 output_buffer_size, 197 output_buffer_size,
198 base::Bind(&LocalVideoEncodeAcceleratorClient::OnCreateSharedMemory, 198 base::Bind(&LocalVideoEncodeAcceleratorClient::OnCreateSharedMemory,
199 this)); 199 this));
200 } 200 }
201 } 201 }
202 202
203 // Encoder has encoded a frame and it's available in one of out output 203 // Encoder has encoded a frame and it's available in one of out output
204 // buffers. 204 // buffers.
205 virtual void BitstreamBufferReady(int32 bitstream_buffer_id, 205 void BitstreamBufferReady(int32 bitstream_buffer_id,
206 size_t payload_size, 206 size_t payload_size,
207 bool key_frame) override { 207 bool key_frame) override {
208 DCHECK(encoder_task_runner_.get()); 208 DCHECK(encoder_task_runner_.get());
209 DCHECK(encoder_task_runner_->RunsTasksOnCurrentThread()); 209 DCHECK(encoder_task_runner_->RunsTasksOnCurrentThread());
210 if (bitstream_buffer_id < 0 || 210 if (bitstream_buffer_id < 0 ||
211 bitstream_buffer_id >= static_cast<int32>(output_buffers_.size())) { 211 bitstream_buffer_id >= static_cast<int32>(output_buffers_.size())) {
212 NOTREACHED(); 212 NOTREACHED();
213 VLOG(1) << "BitstreamBufferReady(): invalid bitstream_buffer_id=" 213 VLOG(1) << "BitstreamBufferReady(): invalid bitstream_buffer_id="
214 << bitstream_buffer_id; 214 << bitstream_buffer_id;
215 NotifyError(media::VideoEncodeAccelerator::kPlatformFailureError); 215 NotifyError(media::VideoEncodeAccelerator::kPlatformFailureError);
216 return; 216 return;
217 } 217 }
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
354 true)); 354 true));
355 } 355 }
356 356
357 static void DestroyVideoEncodeAcceleratorOnEncoderThread( 357 static void DestroyVideoEncodeAcceleratorOnEncoderThread(
358 scoped_ptr<media::VideoEncodeAccelerator> vea) { 358 scoped_ptr<media::VideoEncodeAccelerator> vea) {
359 // VEA::~VEA specialization takes care of calling Destroy() on the VEA impl. 359 // VEA::~VEA specialization takes care of calling Destroy() on the VEA impl.
360 } 360 }
361 361
362 friend class base::RefCountedThreadSafe<LocalVideoEncodeAcceleratorClient>; 362 friend class base::RefCountedThreadSafe<LocalVideoEncodeAcceleratorClient>;
363 363
364 virtual ~LocalVideoEncodeAcceleratorClient() { 364 ~LocalVideoEncodeAcceleratorClient() override {
365 Destroy(); 365 Destroy();
366 DCHECK(!video_encode_accelerator_); 366 DCHECK(!video_encode_accelerator_);
367 } 367 }
368 368
369 const scoped_refptr<CastEnvironment> cast_environment_; 369 const scoped_refptr<CastEnvironment> cast_environment_;
370 scoped_refptr<base::SingleThreadTaskRunner> encoder_task_runner_; 370 scoped_refptr<base::SingleThreadTaskRunner> encoder_task_runner_;
371 scoped_ptr<media::VideoEncodeAccelerator> video_encode_accelerator_; 371 scoped_ptr<media::VideoEncodeAccelerator> video_encode_accelerator_;
372 const CreateVideoEncodeMemoryCallback create_video_encode_memory_cb_; 372 const CreateVideoEncodeMemoryCallback create_video_encode_memory_cb_;
373 const base::WeakPtr<ExternalVideoEncoder> weak_owner_; 373 const base::WeakPtr<ExternalVideoEncoder> weak_owner_;
374 int max_frame_rate_; 374 int max_frame_rate_;
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
481 DCHECK(cast_environment_->CurrentlyOn(CastEnvironment::MAIN)); 481 DCHECK(cast_environment_->CurrentlyOn(CastEnvironment::MAIN));
482 key_frame_requested_ = true; 482 key_frame_requested_ = true;
483 } 483 }
484 484
485 // Inform the encoder to only reference frames older or equal to frame_id; 485 // Inform the encoder to only reference frames older or equal to frame_id;
486 void ExternalVideoEncoder::LatestFrameIdToReference(uint32 /*frame_id*/) { 486 void ExternalVideoEncoder::LatestFrameIdToReference(uint32 /*frame_id*/) {
487 // Do nothing not supported. 487 // Do nothing not supported.
488 } 488 }
489 } // namespace cast 489 } // namespace cast
490 } // namespace media 490 } // namespace media
OLDNEW
« no previous file with comments | « media/cast/sender/external_video_encoder.h ('k') | media/cast/sender/fake_software_video_encoder.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698