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

Side by Side Diff: content/renderer/pepper/video_encoder_shim.cc

Issue 1547073003: Switch to standard integer types in content/renderer/. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 12 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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 "content/renderer/pepper/video_encoder_shim.h" 5 #include "content/renderer/pepper/video_encoder_shim.h"
6 6
7 #include <inttypes.h> 7 #include <inttypes.h>
8 8
9 #include <deque> 9 #include <deque>
10 10
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
92 } // namespace 92 } // namespace
93 93
94 class VideoEncoderShim::EncoderImpl { 94 class VideoEncoderShim::EncoderImpl {
95 public: 95 public:
96 explicit EncoderImpl(const base::WeakPtr<VideoEncoderShim>& shim); 96 explicit EncoderImpl(const base::WeakPtr<VideoEncoderShim>& shim);
97 ~EncoderImpl(); 97 ~EncoderImpl();
98 98
99 void Initialize(media::VideoPixelFormat input_format, 99 void Initialize(media::VideoPixelFormat input_format,
100 const gfx::Size& input_visible_size, 100 const gfx::Size& input_visible_size,
101 media::VideoCodecProfile output_profile, 101 media::VideoCodecProfile output_profile,
102 uint32 initial_bitrate); 102 uint32_t initial_bitrate);
103 void Encode(const scoped_refptr<media::VideoFrame>& frame, 103 void Encode(const scoped_refptr<media::VideoFrame>& frame,
104 bool force_keyframe); 104 bool force_keyframe);
105 void UseOutputBitstreamBuffer(const media::BitstreamBuffer& buffer, 105 void UseOutputBitstreamBuffer(const media::BitstreamBuffer& buffer,
106 uint8_t* mem); 106 uint8_t* mem);
107 void RequestEncodingParametersChange(uint32 bitrate, uint32 framerate); 107 void RequestEncodingParametersChange(uint32_t bitrate, uint32_t framerate);
108 void Stop(); 108 void Stop();
109 109
110 private: 110 private:
111 struct PendingEncode { 111 struct PendingEncode {
112 PendingEncode(const scoped_refptr<media::VideoFrame>& frame, 112 PendingEncode(const scoped_refptr<media::VideoFrame>& frame,
113 bool force_keyframe) 113 bool force_keyframe)
114 : frame(frame), force_keyframe(force_keyframe) {} 114 : frame(frame), force_keyframe(force_keyframe) {}
115 ~PendingEncode() {} 115 ~PendingEncode() {}
116 116
117 scoped_refptr<media::VideoFrame> frame; 117 scoped_refptr<media::VideoFrame> frame;
(...skipping 14 matching lines...) Expand all
132 132
133 base::WeakPtr<VideoEncoderShim> shim_; 133 base::WeakPtr<VideoEncoderShim> shim_;
134 scoped_refptr<base::SingleThreadTaskRunner> renderer_task_runner_; 134 scoped_refptr<base::SingleThreadTaskRunner> renderer_task_runner_;
135 135
136 bool initialized_; 136 bool initialized_;
137 137
138 // Libvpx internal objects. Only valid if |initialized_| is true. 138 // Libvpx internal objects. Only valid if |initialized_| is true.
139 vpx_codec_enc_cfg_t config_; 139 vpx_codec_enc_cfg_t config_;
140 vpx_codec_ctx_t encoder_; 140 vpx_codec_ctx_t encoder_;
141 141
142 uint32 framerate_; 142 uint32_t framerate_;
143 143
144 std::deque<PendingEncode> frames_; 144 std::deque<PendingEncode> frames_;
145 std::deque<BitstreamBuffer> buffers_; 145 std::deque<BitstreamBuffer> buffers_;
146 }; 146 };
147 147
148 VideoEncoderShim::EncoderImpl::EncoderImpl( 148 VideoEncoderShim::EncoderImpl::EncoderImpl(
149 const base::WeakPtr<VideoEncoderShim>& shim) 149 const base::WeakPtr<VideoEncoderShim>& shim)
150 : shim_(shim), 150 : shim_(shim),
151 renderer_task_runner_(base::ThreadTaskRunnerHandle::Get()), 151 renderer_task_runner_(base::ThreadTaskRunnerHandle::Get()),
152 initialized_(false) { 152 initialized_(false) {
153 } 153 }
154 154
155 VideoEncoderShim::EncoderImpl::~EncoderImpl() { 155 VideoEncoderShim::EncoderImpl::~EncoderImpl() {
156 if (initialized_) 156 if (initialized_)
157 vpx_codec_destroy(&encoder_); 157 vpx_codec_destroy(&encoder_);
158 } 158 }
159 159
160 void VideoEncoderShim::EncoderImpl::Initialize( 160 void VideoEncoderShim::EncoderImpl::Initialize(
161 media::VideoPixelFormat input_format, 161 media::VideoPixelFormat input_format,
162 const gfx::Size& input_visible_size, 162 const gfx::Size& input_visible_size,
163 media::VideoCodecProfile output_profile, 163 media::VideoCodecProfile output_profile,
164 uint32 initial_bitrate) { 164 uint32_t initial_bitrate) {
165 gfx::Size coded_size = 165 gfx::Size coded_size =
166 media::VideoFrame::PlaneSize(input_format, 0, input_visible_size); 166 media::VideoFrame::PlaneSize(input_format, 0, input_visible_size);
167 167
168 vpx_codec_iface_t* vpx_codec; 168 vpx_codec_iface_t* vpx_codec;
169 int32_t min_quantizer, max_quantizer, cpu_used; 169 int32_t min_quantizer, max_quantizer, cpu_used;
170 GetVpxCodecParameters(output_profile, &vpx_codec, &min_quantizer, 170 GetVpxCodecParameters(output_profile, &vpx_codec, &min_quantizer,
171 &max_quantizer, &cpu_used); 171 &max_quantizer, &cpu_used);
172 172
173 // Populate encoder configuration with default values. 173 // Populate encoder configuration with default values.
174 if (vpx_codec_enc_config_default(vpx_codec, &config_, 0) != VPX_CODEC_OK) { 174 if (vpx_codec_enc_config_default(vpx_codec, &config_, 0) != VPX_CODEC_OK) {
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
245 } 245 }
246 246
247 void VideoEncoderShim::EncoderImpl::UseOutputBitstreamBuffer( 247 void VideoEncoderShim::EncoderImpl::UseOutputBitstreamBuffer(
248 const media::BitstreamBuffer& buffer, 248 const media::BitstreamBuffer& buffer,
249 uint8_t* mem) { 249 uint8_t* mem) {
250 buffers_.push_back(BitstreamBuffer(buffer, mem)); 250 buffers_.push_back(BitstreamBuffer(buffer, mem));
251 DoEncode(); 251 DoEncode();
252 } 252 }
253 253
254 void VideoEncoderShim::EncoderImpl::RequestEncodingParametersChange( 254 void VideoEncoderShim::EncoderImpl::RequestEncodingParametersChange(
255 uint32 bitrate, 255 uint32_t bitrate,
256 uint32 framerate) { 256 uint32_t framerate) {
257 framerate_ = framerate; 257 framerate_ = framerate;
258 258
259 uint32 bitrate_kbit = bitrate / 1000; 259 uint32_t bitrate_kbit = bitrate / 1000;
260 if (config_.rc_target_bitrate == bitrate_kbit) 260 if (config_.rc_target_bitrate == bitrate_kbit)
261 return; 261 return;
262 262
263 config_.rc_target_bitrate = bitrate_kbit; 263 config_.rc_target_bitrate = bitrate_kbit;
264 if (vpx_codec_enc_config_set(&encoder_, &config_) != VPX_CODEC_OK) 264 if (vpx_codec_enc_config_set(&encoder_, &config_) != VPX_CODEC_OK)
265 NotifyError(media::VideoEncodeAccelerator::kPlatformFailureError); 265 NotifyError(media::VideoEncodeAccelerator::kPlatformFailureError);
266 } 266 }
267 267
268 void VideoEncoderShim::EncoderImpl::Stop() { 268 void VideoEncoderShim::EncoderImpl::Stop() {
269 // Release frames on the renderer thread. 269 // Release frames on the renderer thread.
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
396 profiles.push_back(profile); 396 profiles.push_back(profile);
397 } 397 }
398 398
399 return profiles; 399 return profiles;
400 } 400 }
401 401
402 bool VideoEncoderShim::Initialize( 402 bool VideoEncoderShim::Initialize(
403 media::VideoPixelFormat input_format, 403 media::VideoPixelFormat input_format,
404 const gfx::Size& input_visible_size, 404 const gfx::Size& input_visible_size,
405 media::VideoCodecProfile output_profile, 405 media::VideoCodecProfile output_profile,
406 uint32 initial_bitrate, 406 uint32_t initial_bitrate,
407 media::VideoEncodeAccelerator::Client* client) { 407 media::VideoEncodeAccelerator::Client* client) {
408 DCHECK(RenderThreadImpl::current()); 408 DCHECK(RenderThreadImpl::current());
409 DCHECK_EQ(client, host_); 409 DCHECK_EQ(client, host_);
410 410
411 if (input_format != media::PIXEL_FORMAT_I420) 411 if (input_format != media::PIXEL_FORMAT_I420)
412 return false; 412 return false;
413 413
414 if (output_profile != media::VP8PROFILE_ANY && 414 if (output_profile != media::VP8PROFILE_ANY &&
415 output_profile != media::VP9PROFILE_ANY) 415 output_profile != media::VP9PROFILE_ANY)
416 return false; 416 return false;
(...skipping 21 matching lines...) Expand all
438 const media::BitstreamBuffer& buffer) { 438 const media::BitstreamBuffer& buffer) {
439 DCHECK(RenderThreadImpl::current()); 439 DCHECK(RenderThreadImpl::current());
440 440
441 media_task_runner_->PostTask( 441 media_task_runner_->PostTask(
442 FROM_HERE, 442 FROM_HERE,
443 base::Bind(&VideoEncoderShim::EncoderImpl::UseOutputBitstreamBuffer, 443 base::Bind(&VideoEncoderShim::EncoderImpl::UseOutputBitstreamBuffer,
444 base::Unretained(encoder_impl_.get()), buffer, 444 base::Unretained(encoder_impl_.get()), buffer,
445 host_->ShmHandleToAddress(buffer.id()))); 445 host_->ShmHandleToAddress(buffer.id())));
446 } 446 }
447 447
448 void VideoEncoderShim::RequestEncodingParametersChange(uint32 bitrate, 448 void VideoEncoderShim::RequestEncodingParametersChange(uint32_t bitrate,
449 uint32 framerate) { 449 uint32_t framerate) {
450 DCHECK(RenderThreadImpl::current()); 450 DCHECK(RenderThreadImpl::current());
451 451
452 media_task_runner_->PostTask( 452 media_task_runner_->PostTask(
453 FROM_HERE, 453 FROM_HERE,
454 base::Bind( 454 base::Bind(
455 &VideoEncoderShim::EncoderImpl::RequestEncodingParametersChange, 455 &VideoEncoderShim::EncoderImpl::RequestEncodingParametersChange,
456 base::Unretained(encoder_impl_.get()), bitrate, framerate)); 456 base::Unretained(encoder_impl_.get()), bitrate, framerate));
457 } 457 }
458 458
459 void VideoEncoderShim::Destroy() { 459 void VideoEncoderShim::Destroy() {
460 DCHECK(RenderThreadImpl::current()); 460 DCHECK(RenderThreadImpl::current());
461 461
462 delete this; 462 delete this;
463 } 463 }
464 464
465 void VideoEncoderShim::OnRequireBitstreamBuffers( 465 void VideoEncoderShim::OnRequireBitstreamBuffers(
466 unsigned int input_count, 466 unsigned int input_count,
467 const gfx::Size& input_coded_size, 467 const gfx::Size& input_coded_size,
468 size_t output_buffer_size) { 468 size_t output_buffer_size) {
469 DCHECK(RenderThreadImpl::current()); 469 DCHECK(RenderThreadImpl::current());
470 470
471 host_->RequireBitstreamBuffers(input_count, input_coded_size, 471 host_->RequireBitstreamBuffers(input_count, input_coded_size,
472 output_buffer_size); 472 output_buffer_size);
473 } 473 }
474 474
475 void VideoEncoderShim::OnBitstreamBufferReady( 475 void VideoEncoderShim::OnBitstreamBufferReady(
476 scoped_refptr<media::VideoFrame> frame, 476 scoped_refptr<media::VideoFrame> frame,
477 int32 bitstream_buffer_id, 477 int32_t bitstream_buffer_id,
478 size_t payload_size, 478 size_t payload_size,
479 bool key_frame) { 479 bool key_frame) {
480 DCHECK(RenderThreadImpl::current()); 480 DCHECK(RenderThreadImpl::current());
481 481
482 host_->BitstreamBufferReady(bitstream_buffer_id, payload_size, key_frame); 482 host_->BitstreamBufferReady(bitstream_buffer_id, payload_size, key_frame);
483 } 483 }
484 484
485 void VideoEncoderShim::OnNotifyError( 485 void VideoEncoderShim::OnNotifyError(
486 media::VideoEncodeAccelerator::Error error) { 486 media::VideoEncodeAccelerator::Error error) {
487 DCHECK(RenderThreadImpl::current()); 487 DCHECK(RenderThreadImpl::current());
488 488
489 host_->NotifyError(error); 489 host_->NotifyError(error);
490 } 490 }
491 491
492 } // namespace content 492 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/pepper/video_encoder_shim.h ('k') | content/renderer/presentation/presentation_dispatcher.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698