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

Side by Side Diff: extensions/renderer/api/display_source/wifi_display/wifi_display_video_encoder.cc

Issue 1900233004: [chrome.displaySource] Implement software based H.264 video encoder. (Closed) Base URL: https://chromium.googlesource.com/chromium/src@master
Patch Set: Check proprietary_codecs Created 4 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 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 "extensions/renderer/api/display_source/wifi_display/wifi_display_video _encoder.h" 5 #include "extensions/renderer/api/display_source/wifi_display/wifi_display_video _encoder.h"
6 6
7 #include "base/bind.h"
7 #include "base/logging.h" 8 #include "base/logging.h"
8 9
9 namespace extensions { 10 namespace extensions {
10 11
11 WiFiDisplayVideoEncoder::InitParameters::InitParameters() = default; 12 WiFiDisplayVideoEncoder::InitParameters::InitParameters() = default;
12 WiFiDisplayVideoEncoder::InitParameters::InitParameters(const InitParameters&) = 13 WiFiDisplayVideoEncoder::InitParameters::InitParameters(const InitParameters&) =
13 default; 14 default;
14 WiFiDisplayVideoEncoder::InitParameters::~InitParameters() = default; 15 WiFiDisplayVideoEncoder::InitParameters::~InitParameters() = default;
15 16
16 WiFiDisplayVideoEncoder::WiFiDisplayVideoEncoder( 17 WiFiDisplayVideoEncoder::WiFiDisplayVideoEncoder(
17 scoped_refptr<base::SingleThreadTaskRunner> media_task_runner) 18 scoped_refptr<base::SingleThreadTaskRunner> media_task_runner)
18 : media_task_runner_(std::move(media_task_runner)), send_idr_(false) { 19 : media_task_runner_(std::move(media_task_runner)), send_idr_(false) {
19 DCHECK(media_task_runner_); 20 DCHECK(media_task_runner_);
20 } 21 }
21 22
22 WiFiDisplayVideoEncoder::~WiFiDisplayVideoEncoder() = default; 23 WiFiDisplayVideoEncoder::~WiFiDisplayVideoEncoder() = default;
23 24
24 // static 25 // static
25 void WiFiDisplayVideoEncoder::Create( 26 void WiFiDisplayVideoEncoder::Create(
26 const InitParameters& params, 27 const InitParameters& params,
27 const VideoEncoderCallback& encoder_callback) { 28 const VideoEncoderCallback& encoder_callback) {
28 CreateVEA(params, encoder_callback); 29 CreateVEA(params, base::Bind(&OnCreatedVEA, params, encoder_callback));
30 }
31
32 // static
33 void WiFiDisplayVideoEncoder::OnCreatedVEA(
34 const InitParameters& params,
35 const VideoEncoderCallback& encoder_callback,
36 scoped_refptr<WiFiDisplayVideoEncoder> vea_encoder) {
37 if (vea_encoder) {
38 // An accelerated encoder was created successfully. Pass it on.
39 encoder_callback.Run(vea_encoder);
40 } else {
41 // An accelerated encoder was not created. Fall back to a software encoder.
42 CreateSVC(params, encoder_callback);
43 }
29 } 44 }
30 45
31 void WiFiDisplayVideoEncoder::InsertRawVideoFrame( 46 void WiFiDisplayVideoEncoder::InsertRawVideoFrame(
32 const scoped_refptr<media::VideoFrame>& video_frame, 47 const scoped_refptr<media::VideoFrame>& video_frame,
33 base::TimeTicks reference_time) { 48 base::TimeTicks reference_time) {
34 DCHECK(!encoded_callback_.is_null()); 49 DCHECK(!encoded_callback_.is_null());
35 media_task_runner_->PostTask( 50 media_task_runner_->PostTask(
36 FROM_HERE, base::Bind(&WiFiDisplayVideoEncoder::InsertFrameOnMediaThread, 51 FROM_HERE, base::Bind(&WiFiDisplayVideoEncoder::InsertFrameOnMediaThread,
37 this, video_frame, reference_time, send_idr_)); 52 this, video_frame, reference_time, send_idr_));
38 send_idr_ = false; 53 send_idr_ = false;
39 } 54 }
40 55
41 void WiFiDisplayVideoEncoder::RequestIDRPicture() { 56 void WiFiDisplayVideoEncoder::RequestIDRPicture() {
42 send_idr_ = true; 57 send_idr_ = true;
43 } 58 }
44 59
45 } // namespace extensions 60 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698