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

Side by Side Diff: webrtc/modules/rtp_rtcp/source/rtp_receiver_impl.cc

Issue 2523843002: Send audio and video codecs to RTPPayloadRegistry (Closed)
Patch Set: Change strcpy to strncpy Created 4 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
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
11 #include "webrtc/modules/rtp_rtcp/source/rtp_receiver_impl.h" 11 #include "webrtc/modules/rtp_rtcp/source/rtp_receiver_impl.h"
12 12
13 #include <assert.h> 13 #include <assert.h>
14 #include <math.h> 14 #include <math.h>
15 #include <stdlib.h> 15 #include <stdlib.h>
16 #include <string.h> 16 #include <string.h>
17 17
18 #include "webrtc/base/logging.h" 18 #include "webrtc/base/logging.h"
19 #include "webrtc/common_types.h"
19 #include "webrtc/modules/rtp_rtcp/include/rtp_payload_registry.h" 20 #include "webrtc/modules/rtp_rtcp/include/rtp_payload_registry.h"
20 #include "webrtc/modules/rtp_rtcp/include/rtp_rtcp_defines.h" 21 #include "webrtc/modules/rtp_rtcp/include/rtp_rtcp_defines.h"
21 #include "webrtc/modules/rtp_rtcp/source/rtp_receiver_strategy.h" 22 #include "webrtc/modules/rtp_rtcp/source/rtp_receiver_strategy.h"
22 23
23 namespace webrtc { 24 namespace webrtc {
24 25
25 using RtpUtility::Payload; 26 using RtpUtility::Payload;
26 27
27 RtpReceiver* RtpReceiver::CreateVideoReceiver( 28 RtpReceiver* RtpReceiver::CreateVideoReceiver(
28 Clock* clock, 29 Clock* clock,
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
73 74
74 memset(current_remote_csrc_, 0, sizeof(current_remote_csrc_)); 75 memset(current_remote_csrc_, 0, sizeof(current_remote_csrc_));
75 } 76 }
76 77
77 RtpReceiverImpl::~RtpReceiverImpl() { 78 RtpReceiverImpl::~RtpReceiverImpl() {
78 for (int i = 0; i < num_csrcs_; ++i) { 79 for (int i = 0; i < num_csrcs_; ++i) {
79 cb_rtp_feedback_->OnIncomingCSRCChanged(current_remote_csrc_[i], false); 80 cb_rtp_feedback_->OnIncomingCSRCChanged(current_remote_csrc_[i], false);
80 } 81 }
81 } 82 }
82 83
83 int32_t RtpReceiverImpl::RegisterReceivePayload( 84 int32_t RtpReceiverImpl::RegisterReceivePayload(const CodecInst& audio_codec) {
84 const char payload_name[RTP_PAYLOAD_NAME_SIZE],
85 const int8_t payload_type,
86 const uint32_t frequency,
87 const size_t channels,
88 const uint32_t rate) {
89 rtc::CritScope lock(&critical_section_rtp_receiver_); 85 rtc::CritScope lock(&critical_section_rtp_receiver_);
90 86
91 // TODO(phoglund): Try to streamline handling of the RED codec and some other 87 // TODO(phoglund): Try to streamline handling of the RED codec and some other
92 // cases which makes it necessary to keep track of whether we created a 88 // cases which makes it necessary to keep track of whether we created a
93 // payload or not. 89 // payload or not.
94 bool created_new_payload = false; 90 bool created_new_payload = false;
95 int32_t result = rtp_payload_registry_->RegisterReceivePayload( 91 int32_t result = rtp_payload_registry_->RegisterReceivePayload(
96 payload_name, payload_type, frequency, channels, rate, 92 audio_codec, &created_new_payload);
97 &created_new_payload);
98 if (created_new_payload) { 93 if (created_new_payload) {
99 if (rtp_media_receiver_->OnNewPayloadTypeCreated(payload_name, payload_type, 94 if (rtp_media_receiver_->OnNewPayloadTypeCreated(audio_codec) != 0) {
100 frequency) != 0) { 95 LOG(LS_ERROR) << "Failed to register payload: " << audio_codec.plname
101 LOG(LS_ERROR) << "Failed to register payload: " << payload_name << "/" 96 << "/" << static_cast<int>(audio_codec.pltype);
102 << static_cast<int>(payload_type);
103 return -1; 97 return -1;
104 } 98 }
105 } 99 }
106 return result; 100 return result;
107 } 101 }
108 102
103 // TODO(magjed): Remove once external code is updated.
104 int32_t RtpReceiverImpl::RegisterReceivePayload(
105 const char payload_name[RTP_PAYLOAD_NAME_SIZE],
106 const int8_t payload_type,
107 const uint32_t frequency,
108 const size_t channels,
109 const uint32_t rate) {
110 CodecInst codec;
111 codec.pltype = payload_type;
112 strncpy(codec.plname, payload_name, RTP_PAYLOAD_NAME_SIZE);
113 codec.plfreq = frequency;
114 codec.channels = channels;
115 codec.rate = rate;
116 return RegisterReceivePayload(codec);
117 }
118
109 int32_t RtpReceiverImpl::DeRegisterReceivePayload( 119 int32_t RtpReceiverImpl::DeRegisterReceivePayload(
110 const int8_t payload_type) { 120 const int8_t payload_type) {
111 rtc::CritScope lock(&critical_section_rtp_receiver_); 121 rtc::CritScope lock(&critical_section_rtp_receiver_);
112 return rtp_payload_registry_->DeRegisterReceivePayload(payload_type); 122 return rtp_payload_registry_->DeRegisterReceivePayload(payload_type);
113 } 123 }
114 124
115 uint32_t RtpReceiverImpl::SSRC() const { 125 uint32_t RtpReceiverImpl::SSRC() const {
116 rtc::CritScope lock(&critical_section_rtp_receiver_); 126 rtc::CritScope lock(&critical_section_rtp_receiver_);
117 return ssrc_; 127 return ssrc_;
118 } 128 }
(...skipping 337 matching lines...) Expand 10 before | Expand all | Expand 10 after
456 // implementations might have CSRC 0 as a valid value. 466 // implementations might have CSRC 0 as a valid value.
457 if (num_csrcs_diff > 0) { 467 if (num_csrcs_diff > 0) {
458 cb_rtp_feedback_->OnIncomingCSRCChanged(0, true); 468 cb_rtp_feedback_->OnIncomingCSRCChanged(0, true);
459 } else if (num_csrcs_diff < 0) { 469 } else if (num_csrcs_diff < 0) {
460 cb_rtp_feedback_->OnIncomingCSRCChanged(0, false); 470 cb_rtp_feedback_->OnIncomingCSRCChanged(0, false);
461 } 471 }
462 } 472 }
463 } 473 }
464 474
465 } // namespace webrtc 475 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/modules/rtp_rtcp/source/rtp_receiver_impl.h ('k') | webrtc/modules/rtp_rtcp/source/rtp_receiver_strategy.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698