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

Side by Side Diff: chrome/renderer/media/cast_send_transport.cc

Issue 90083002: Cast Extensions API: Major namespace and object renaming (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix unit_tests Created 7 years 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
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "chrome/renderer/media/cast_send_transport.h"
6
7 #include "base/logging.h"
8 #include "chrome/renderer/media/cast_session.h"
9 #include "chrome/renderer/media/cast_udp_transport.h"
10 #include "media/cast/cast_config.h"
11 #include "media/cast/cast_defines.h"
12 #include "third_party/WebKit/public/platform/WebMediaStreamSource.h"
13
14 using media::cast::AudioSenderConfig;
15 using media::cast::VideoSenderConfig;
16
17 namespace {
18 const char kCodecNameOpus[] = "OPUS";
19 const char kCodecNameVp8[] = "VP8";
20
21 CastRtpPayloadParams DefaultOpusPayload() {
22 CastRtpPayloadParams payload;
23 payload.payload_type = 111;
24 payload.codec_name = kCodecNameOpus;
25 payload.clock_rate = 48000;
26 payload.channels = 2;
27 payload.min_bitrate = payload.max_bitrate =
28 media::cast::kDefaultAudioEncoderBitrate;
29 return payload;
30 }
31
32 CastRtpPayloadParams DefaultVp8Payload() {
33 CastRtpPayloadParams payload;
34 payload.payload_type = 100;
35 payload.codec_name = kCodecNameVp8;
36 payload.clock_rate = 90000;
37 payload.width = 1280;
38 payload.height = 720;
39 payload.min_bitrate = 50 * 1000;
40 payload.max_bitrate = 2000 * 1000;
41 return payload;
42 }
43
44 CastRtpCaps DefaultAudioCaps() {
45 CastRtpCaps caps;
46 caps.payloads.push_back(DefaultOpusPayload());
47 // TODO(hclam): Fill in |rtcp_features| and |fec_mechanisms|.
48 return caps;
49 }
50
51 CastRtpCaps DefaultVideoCaps() {
52 CastRtpCaps caps;
53 caps.payloads.push_back(DefaultVp8Payload());
54 // TODO(hclam): Fill in |rtcp_features| and |fec_mechanisms|.
55 return caps;
56 }
57
58 bool ToAudioSenderConfig(const CastRtpParams& params,
59 AudioSenderConfig* config) {
60 if (params.payloads.empty())
61 return false;
62 const CastRtpPayloadParams& payload_params = params.payloads[0];
63 config->sender_ssrc = payload_params.ssrc;
64 config->use_external_encoder = false;
65 config->frequency = payload_params.clock_rate;
66 config->channels = payload_params.channels;
67 config->bitrate = payload_params.max_bitrate;
68 config->codec = media::cast::kPcm16;
69 if (payload_params.codec_name == kCodecNameOpus)
70 config->codec = media::cast::kOpus;
71 else
72 return false;
73 return true;
74 }
75
76 bool ToVideoSenderConfig(const CastRtpParams& params,
77 VideoSenderConfig* config) {
78 if (params.payloads.empty())
79 return false;
80 const CastRtpPayloadParams& payload_params = params.payloads[0];
81 config->sender_ssrc = payload_params.ssrc;
82 config->use_external_encoder = false;
83 config->width = payload_params.width;
84 config->height = payload_params.height;
85 config->min_bitrate = config->start_bitrate = payload_params.min_bitrate;
86 config->max_bitrate = payload_params.max_bitrate;
87 if (payload_params.codec_name == kCodecNameVp8)
88 config->codec = media::cast::kVp8;
89 else
90 return false;
91 return true;
92 }
93 } // namespace
94
95 CastCodecSpecificParams::CastCodecSpecificParams() {
96 }
97
98 CastCodecSpecificParams::~CastCodecSpecificParams() {
99 }
100
101 CastRtpPayloadParams::CastRtpPayloadParams()
102 : payload_type(0),
103 ssrc(0),
104 clock_rate(0),
105 max_bitrate(0),
106 min_bitrate(0),
107 channels(0),
108 width(0),
109 height(0) {
110 }
111
112 CastRtpPayloadParams::~CastRtpPayloadParams() {
113 }
114
115 CastRtpCaps::CastRtpCaps() {
116 }
117
118 CastRtpCaps::~CastRtpCaps() {
119 }
120
121 CastSendTransport::CastSendTransport(
122 const blink::WebMediaStreamTrack& track,
123 const scoped_refptr<CastSession>& session)
124 : track_(track),
125 cast_session_(session) {
126 }
127
128 CastSendTransport::~CastSendTransport() {
129 }
130
131 CastRtpCaps CastSendTransport::GetCaps() {
132 if (IsAudio())
133 return DefaultAudioCaps();
134 else
135 return DefaultVideoCaps();
136 }
137
138 CastRtpParams CastSendTransport::GetParams() {
139 return params_;
140 }
141
142 void CastSendTransport::Start(const CastRtpParams& params) {
143 if (IsAudio()) {
144 AudioSenderConfig config;
145 if (!ToAudioSenderConfig(params, &config)) {
146 DVLOG(1) << "Invalid parameters for audio.";
147 }
148 cast_session_->StartAudio(config);
149 } else {
150 VideoSenderConfig config;
151 if (!ToVideoSenderConfig(params, &config)) {
152 DVLOG(1) << "Invalid parameters for video.";
153 }
154 cast_session_->StartVideo(config);
155 }
156 }
157
158 void CastSendTransport::Stop() {
159 NOTIMPLEMENTED();
160 }
161
162 bool CastSendTransport::IsAudio() const {
163 return track_.source().type() == blink::WebMediaStreamSource::TypeAudio;
164 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698