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

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

Issue 1942713002: [chrome.displaySource][WiFi Display] Consider video encoder capabilities (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: 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/bind.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 9 #include "content/public/renderer/video_encode_accelerator.h"
10 #include "extensions/renderer/api/display_source/wifi_display/wifi_display_eleme ntary_stream_descriptor.h" 10 #include "extensions/renderer/api/display_source/wifi_display/wifi_display_eleme ntary_stream_descriptor.h"
11 11
12 namespace extensions { 12 namespace extensions {
13 13
14 WiFiDisplayVideoEncoder::InitParameters::InitParameters() = default; 14 WiFiDisplayVideoEncoder::InitParameters::InitParameters() = default;
15 WiFiDisplayVideoEncoder::InitParameters::InitParameters(const InitParameters&) = 15 WiFiDisplayVideoEncoder::InitParameters::InitParameters(const InitParameters&) =
16 default; 16 default;
17 WiFiDisplayVideoEncoder::InitParameters::~InitParameters() = default; 17 WiFiDisplayVideoEncoder::InitParameters::~InitParameters() = default;
18 18
19 WiFiDisplayVideoEncoder::WiFiDisplayVideoEncoder( 19 WiFiDisplayVideoEncoder::WiFiDisplayVideoEncoder(
20 scoped_refptr<base::SingleThreadTaskRunner> media_task_runner) 20 scoped_refptr<base::SingleThreadTaskRunner> media_task_runner)
21 : media_task_runner_(std::move(media_task_runner)), send_idr_(false) { 21 : media_task_runner_(std::move(media_task_runner)), send_idr_(false) {
22 DCHECK(media_task_runner_); 22 DCHECK(media_task_runner_);
23 23
24 // Add descriptors common to all H.264 video encoders. 24 // Add descriptors common to all H.264 video encoders.
25 descriptors_.push_back( 25 descriptors_.push_back(
26 WiFiDisplayElementaryStreamDescriptor::AVCTimingAndHRD::Create()); 26 WiFiDisplayElementaryStreamDescriptor::AVCTimingAndHRD::Create());
27 } 27 }
28 28
29 WiFiDisplayVideoEncoder::~WiFiDisplayVideoEncoder() = default; 29 WiFiDisplayVideoEncoder::~WiFiDisplayVideoEncoder() = default;
30 30
31 // static 31 // static
32 std::vector<wds::H264Profile> WiFiDisplayVideoEncoder::FindSupportedProfiles(
33 const gfx::Size& frame_size,
34 int32_t frame_rate) {
35 std::vector<wds::H264Profile> result;
36 media::VideoEncodeAccelerator::SupportedProfiles profiles =
37 content::GetSupportedVideoEncodeAcceleratorProfiles();
38 for (const auto& supported : profiles) {
39 if (supported.profile == media::H264PROFILE_HIGH &&
40 supported.max_resolution.width() >= frame_size.width() &&
41 supported.max_resolution.height() >= frame_size.height() &&
42 supported.max_framerate_numerator >= uint32_t(frame_rate)) {
43 result.push_back(wds::CHP);
44 break;
45 }
46 }
47
48 // Constrained profile is provided in any case (by the software encoder
49 // implementation).
50 result.push_back(wds::CBP);
51
52 return result;
53 }
54
55 // static
32 void WiFiDisplayVideoEncoder::Create( 56 void WiFiDisplayVideoEncoder::Create(
33 const InitParameters& params, 57 const InitParameters& params,
34 const VideoEncoderCallback& encoder_callback) { 58 const VideoEncoderCallback& encoder_callback) {
35 CreateVEA(params, base::Bind(&OnCreatedVEA, params, encoder_callback)); 59 CreateVEA(params, base::Bind(&OnCreatedVEA, params, encoder_callback));
36 } 60 }
37 61
38 // static 62 // static
39 void WiFiDisplayVideoEncoder::OnCreatedVEA( 63 void WiFiDisplayVideoEncoder::OnCreatedVEA(
40 const InitParameters& params, 64 const InitParameters& params,
41 const VideoEncoderCallback& encoder_callback, 65 const VideoEncoderCallback& encoder_callback,
(...skipping 24 matching lines...) Expand all
66 this, video_frame, reference_time, send_idr_)); 90 this, video_frame, reference_time, send_idr_));
67 send_idr_ = false; 91 send_idr_ = false;
68 } 92 }
69 93
70 void WiFiDisplayVideoEncoder::RequestIDRPicture() { 94 void WiFiDisplayVideoEncoder::RequestIDRPicture() {
71 DCHECK(client_thread_checker_.CalledOnValidThread()); 95 DCHECK(client_thread_checker_.CalledOnValidThread());
72 send_idr_ = true; 96 send_idr_ = true;
73 } 97 }
74 98
75 } // namespace extensions 99 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698