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

Side by Side Diff: content/renderer/media/rtc_video_encoder.cc

Issue 185403020: Make VEA client of command buffer; move sync. IPC to VDA/VEA::Initialize() (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: 7da5b6ec Rebase. Created 6 years, 8 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 | Annotate | Revision Log
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 "content/renderer/media/rtc_video_encoder.h" 5 #include "content/renderer/media/rtc_video_encoder.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/location.h" 8 #include "base/location.h"
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/memory/scoped_vector.h" 10 #include "base/memory/scoped_vector.h"
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
69 void UseOutputBitstreamBufferId(int32 bitstream_buffer_id); 69 void UseOutputBitstreamBufferId(int32 bitstream_buffer_id);
70 70
71 // Request encoding parameter change for the underlying encoder. 71 // Request encoding parameter change for the underlying encoder.
72 void RequestEncodingParametersChange(uint32 bitrate, uint32 framerate); 72 void RequestEncodingParametersChange(uint32 bitrate, uint32 framerate);
73 73
74 // Destroy this Impl's encoder. The destructor is not explicitly called, as 74 // Destroy this Impl's encoder. The destructor is not explicitly called, as
75 // Impl is a base::RefCountedThreadSafe. 75 // Impl is a base::RefCountedThreadSafe.
76 void Destroy(); 76 void Destroy();
77 77
78 // media::VideoEncodeAccelerator::Client implementation. 78 // media::VideoEncodeAccelerator::Client implementation.
79 virtual void NotifyInitializeDone() OVERRIDE;
80 virtual void RequireBitstreamBuffers(unsigned int input_count, 79 virtual void RequireBitstreamBuffers(unsigned int input_count,
81 const gfx::Size& input_coded_size, 80 const gfx::Size& input_coded_size,
82 size_t output_buffer_size) OVERRIDE; 81 size_t output_buffer_size) OVERRIDE;
83 virtual void BitstreamBufferReady(int32 bitstream_buffer_id, 82 virtual void BitstreamBufferReady(int32 bitstream_buffer_id,
84 size_t payload_size, 83 size_t payload_size,
85 bool key_frame) OVERRIDE; 84 bool key_frame) OVERRIDE;
86 virtual void NotifyError(media::VideoEncodeAccelerator::Error error) OVERRIDE; 85 virtual void NotifyError(media::VideoEncodeAccelerator::Error error) OVERRIDE;
87 86
88 private: 87 private:
89 friend class base::RefCountedThreadSafe<Impl>; 88 friend class base::RefCountedThreadSafe<Impl>;
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
191 NOTIFY_ERROR(media::VideoEncodeAccelerator::kInvalidArgumentError); 190 NOTIFY_ERROR(media::VideoEncodeAccelerator::kInvalidArgumentError);
192 return; 191 return;
193 } 192 }
194 193
195 video_encoder_ = gpu_factories_->CreateVideoEncodeAccelerator().Pass(); 194 video_encoder_ = gpu_factories_->CreateVideoEncodeAccelerator().Pass();
196 if (!video_encoder_) { 195 if (!video_encoder_) {
197 NOTIFY_ERROR(media::VideoEncodeAccelerator::kPlatformFailureError); 196 NOTIFY_ERROR(media::VideoEncodeAccelerator::kPlatformFailureError);
198 return; 197 return;
199 } 198 }
200 input_visible_size_ = input_visible_size; 199 input_visible_size_ = input_visible_size;
201 video_encoder_->Initialize(media::VideoFrame::I420, 200 if (!video_encoder_->Initialize(media::VideoFrame::I420,
202 input_visible_size_, 201 input_visible_size_,
203 profile, 202 profile,
204 bitrate * 1000, 203 bitrate * 1000,
205 this); 204 this)) {
205 NOTIFY_ERROR(media::VideoEncodeAccelerator::kInvalidArgumentError);
206 return;
207 }
206 } 208 }
207 209
208 void RTCVideoEncoder::Impl::Enqueue(const webrtc::I420VideoFrame* input_frame, 210 void RTCVideoEncoder::Impl::Enqueue(const webrtc::I420VideoFrame* input_frame,
209 bool force_keyframe, 211 bool force_keyframe,
210 base::WaitableEvent* async_waiter, 212 base::WaitableEvent* async_waiter,
211 int32_t* async_retval) { 213 int32_t* async_retval) {
212 DVLOG(3) << "Impl::Enqueue()"; 214 DVLOG(3) << "Impl::Enqueue()";
213 DCHECK(thread_checker_.CalledOnValidThread()); 215 DCHECK(thread_checker_.CalledOnValidThread());
214 DCHECK(!input_next_frame_); 216 DCHECK(!input_next_frame_);
215 217
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
274 video_encoder_->RequestEncodingParametersChange(bitrate * 1000, framerate); 276 video_encoder_->RequestEncodingParametersChange(bitrate * 1000, framerate);
275 } 277 }
276 278
277 void RTCVideoEncoder::Impl::Destroy() { 279 void RTCVideoEncoder::Impl::Destroy() {
278 DVLOG(3) << "Impl::Destroy()"; 280 DVLOG(3) << "Impl::Destroy()";
279 DCHECK(thread_checker_.CalledOnValidThread()); 281 DCHECK(thread_checker_.CalledOnValidThread());
280 if (video_encoder_) 282 if (video_encoder_)
281 video_encoder_.release()->Destroy(); 283 video_encoder_.release()->Destroy();
282 } 284 }
283 285
284 void RTCVideoEncoder::Impl::NotifyInitializeDone() {
285 DVLOG(3) << "Impl::NotifyInitializeDone()";
286 DCHECK(thread_checker_.CalledOnValidThread());
287 }
288
289 void RTCVideoEncoder::Impl::RequireBitstreamBuffers( 286 void RTCVideoEncoder::Impl::RequireBitstreamBuffers(
290 unsigned int input_count, 287 unsigned int input_count,
291 const gfx::Size& input_coded_size, 288 const gfx::Size& input_coded_size,
292 size_t output_buffer_size) { 289 size_t output_buffer_size) {
293 DVLOG(3) << "Impl::RequireBitstreamBuffers(): input_count=" << input_count 290 DVLOG(3) << "Impl::RequireBitstreamBuffers(): input_count=" << input_count
294 << ", input_coded_size=" << input_coded_size.ToString() 291 << ", input_coded_size=" << input_coded_size.ToString()
295 << ", output_buffer_size=" << output_buffer_size; 292 << ", output_buffer_size=" << output_buffer_size;
296 DCHECK(thread_checker_.CalledOnValidThread()); 293 DCHECK(thread_checker_.CalledOnValidThread());
297 294
298 if (!video_encoder_) 295 if (!video_encoder_)
(...skipping 404 matching lines...) Expand 10 before | Expand all | Expand 10 after
703 UMA_HISTOGRAM_BOOLEAN("Media.RTCVideoEncoderInitEncodeSuccess", 700 UMA_HISTOGRAM_BOOLEAN("Media.RTCVideoEncoderInitEncodeSuccess",
704 init_retval == WEBRTC_VIDEO_CODEC_OK); 701 init_retval == WEBRTC_VIDEO_CODEC_OK);
705 if (init_retval == WEBRTC_VIDEO_CODEC_OK) { 702 if (init_retval == WEBRTC_VIDEO_CODEC_OK) {
706 UMA_HISTOGRAM_ENUMERATION("Media.RTCVideoEncoderProfile", 703 UMA_HISTOGRAM_ENUMERATION("Media.RTCVideoEncoderProfile",
707 video_codec_profile_, 704 video_codec_profile_,
708 media::VIDEO_CODEC_PROFILE_MAX + 1); 705 media::VIDEO_CODEC_PROFILE_MAX + 1);
709 } 706 }
710 } 707 }
711 708
712 } // namespace content 709 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/media/rtc_video_decoder_unittest.cc ('k') | content/renderer/pepper/pepper_video_capture_host.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698