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

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

Issue 1316523002: Convert channel counts to size_t. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc@master
Patch Set: Fix compile Created 4 years, 11 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 /* 1 /*
2 * Copyright (c) 2013 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2013 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
(...skipping 22 matching lines...) Expand all
33 RtpUtility::PayloadTypeMap::iterator it = payload_type_map_.begin(); 33 RtpUtility::PayloadTypeMap::iterator it = payload_type_map_.begin();
34 delete it->second; 34 delete it->second;
35 payload_type_map_.erase(it); 35 payload_type_map_.erase(it);
36 } 36 }
37 } 37 }
38 38
39 int32_t RTPPayloadRegistry::RegisterReceivePayload( 39 int32_t RTPPayloadRegistry::RegisterReceivePayload(
40 const char payload_name[RTP_PAYLOAD_NAME_SIZE], 40 const char payload_name[RTP_PAYLOAD_NAME_SIZE],
41 const int8_t payload_type, 41 const int8_t payload_type,
42 const uint32_t frequency, 42 const uint32_t frequency,
43 const uint8_t channels, 43 const size_t channels,
44 const uint32_t rate, 44 const uint32_t rate,
45 bool* created_new_payload) { 45 bool* created_new_payload) {
46 assert(payload_type >= 0); 46 assert(payload_type >= 0);
47 assert(payload_name); 47 assert(payload_name);
48 *created_new_payload = false; 48 *created_new_payload = false;
49 49
50 // Sanity check. 50 // Sanity check.
51 switch (payload_type) { 51 switch (payload_type) {
52 // Reserved payload types to avoid RTCP conflicts when marker bit is set. 52 // Reserved payload types to avoid RTCP conflicts when marker bit is set.
53 case 64: // 192 Full INTRA-frame request. 53 case 64: // 192 Full INTRA-frame request.
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
132 return 0; 132 return 0;
133 } 133 }
134 134
135 // There can't be several codecs with the same rate, frequency and channels 135 // There can't be several codecs with the same rate, frequency and channels
136 // for audio codecs, but there can for video. 136 // for audio codecs, but there can for video.
137 // Always called from within a critical section. 137 // Always called from within a critical section.
138 void RTPPayloadRegistry::DeregisterAudioCodecOrRedTypeRegardlessOfPayloadType( 138 void RTPPayloadRegistry::DeregisterAudioCodecOrRedTypeRegardlessOfPayloadType(
139 const char payload_name[RTP_PAYLOAD_NAME_SIZE], 139 const char payload_name[RTP_PAYLOAD_NAME_SIZE],
140 const size_t payload_name_length, 140 const size_t payload_name_length,
141 const uint32_t frequency, 141 const uint32_t frequency,
142 const uint8_t channels, 142 const size_t channels,
143 const uint32_t rate) { 143 const uint32_t rate) {
144 RtpUtility::PayloadTypeMap::iterator iterator = payload_type_map_.begin(); 144 RtpUtility::PayloadTypeMap::iterator iterator = payload_type_map_.begin();
145 for (; iterator != payload_type_map_.end(); ++iterator) { 145 for (; iterator != payload_type_map_.end(); ++iterator) {
146 RtpUtility::Payload* payload = iterator->second; 146 RtpUtility::Payload* payload = iterator->second;
147 size_t name_length = strlen(payload->name); 147 size_t name_length = strlen(payload->name);
148 148
149 if (payload_name_length == name_length && 149 if (payload_name_length == name_length &&
150 RtpUtility::StringCompare( 150 RtpUtility::StringCompare(
151 payload->name, payload_name, payload_name_length)) { 151 payload->name, payload_name, payload_name_length)) {
152 // We found the payload name in the list. 152 // We found the payload name in the list.
(...skipping 11 matching lines...) Expand all
164 payload_type_map_.erase(iterator); 164 payload_type_map_.erase(iterator);
165 break; 165 break;
166 } 166 }
167 } 167 }
168 } 168 }
169 } 169 }
170 170
171 int32_t RTPPayloadRegistry::ReceivePayloadType( 171 int32_t RTPPayloadRegistry::ReceivePayloadType(
172 const char payload_name[RTP_PAYLOAD_NAME_SIZE], 172 const char payload_name[RTP_PAYLOAD_NAME_SIZE],
173 const uint32_t frequency, 173 const uint32_t frequency,
174 const uint8_t channels, 174 const size_t channels,
175 const uint32_t rate, 175 const uint32_t rate,
176 int8_t* payload_type) const { 176 int8_t* payload_type) const {
177 assert(payload_type); 177 assert(payload_type);
178 size_t payload_name_length = strlen(payload_name); 178 size_t payload_name_length = strlen(payload_name);
179 179
180 CriticalSectionScoped cs(crit_sect_.get()); 180 CriticalSectionScoped cs(crit_sect_.get());
181 181
182 RtpUtility::PayloadTypeMap::const_iterator it = payload_type_map_.begin(); 182 RtpUtility::PayloadTypeMap::const_iterator it = payload_type_map_.begin();
183 183
184 for (; it != payload_type_map_.end(); ++it) { 184 for (; it != payload_type_map_.end(); ++it) {
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after
381 last_received_media_payload_type_ = media_payload_type; 381 last_received_media_payload_type_ = media_payload_type;
382 return false; 382 return false;
383 } 383 }
384 384
385 class RTPPayloadAudioStrategy : public RTPPayloadStrategy { 385 class RTPPayloadAudioStrategy : public RTPPayloadStrategy {
386 public: 386 public:
387 bool CodecsMustBeUnique() const override { return true; } 387 bool CodecsMustBeUnique() const override { return true; }
388 388
389 bool PayloadIsCompatible(const RtpUtility::Payload& payload, 389 bool PayloadIsCompatible(const RtpUtility::Payload& payload,
390 const uint32_t frequency, 390 const uint32_t frequency,
391 const uint8_t channels, 391 const size_t channels,
392 const uint32_t rate) const override { 392 const uint32_t rate) const override {
393 return 393 return
394 payload.audio && 394 payload.audio &&
395 payload.typeSpecific.Audio.frequency == frequency && 395 payload.typeSpecific.Audio.frequency == frequency &&
396 payload.typeSpecific.Audio.channels == channels && 396 payload.typeSpecific.Audio.channels == channels &&
397 (payload.typeSpecific.Audio.rate == rate || 397 (payload.typeSpecific.Audio.rate == rate ||
398 payload.typeSpecific.Audio.rate == 0 || rate == 0); 398 payload.typeSpecific.Audio.rate == 0 || rate == 0);
399 } 399 }
400 400
401 void UpdatePayloadRate(RtpUtility::Payload* payload, 401 void UpdatePayloadRate(RtpUtility::Payload* payload,
402 const uint32_t rate) const override { 402 const uint32_t rate) const override {
403 payload->typeSpecific.Audio.rate = rate; 403 payload->typeSpecific.Audio.rate = rate;
404 } 404 }
405 405
406 RtpUtility::Payload* CreatePayloadType( 406 RtpUtility::Payload* CreatePayloadType(
407 const char payloadName[RTP_PAYLOAD_NAME_SIZE], 407 const char payloadName[RTP_PAYLOAD_NAME_SIZE],
408 const int8_t payloadType, 408 const int8_t payloadType,
409 const uint32_t frequency, 409 const uint32_t frequency,
410 const uint8_t channels, 410 const size_t channels,
411 const uint32_t rate) const override { 411 const uint32_t rate) const override {
412 RtpUtility::Payload* payload = new RtpUtility::Payload; 412 RtpUtility::Payload* payload = new RtpUtility::Payload;
413 payload->name[RTP_PAYLOAD_NAME_SIZE - 1] = 0; 413 payload->name[RTP_PAYLOAD_NAME_SIZE - 1] = 0;
414 strncpy(payload->name, payloadName, RTP_PAYLOAD_NAME_SIZE - 1); 414 strncpy(payload->name, payloadName, RTP_PAYLOAD_NAME_SIZE - 1);
415 assert(frequency >= 1000); 415 assert(frequency >= 1000);
416 payload->typeSpecific.Audio.frequency = frequency; 416 payload->typeSpecific.Audio.frequency = frequency;
417 payload->typeSpecific.Audio.channels = channels; 417 payload->typeSpecific.Audio.channels = channels;
418 payload->typeSpecific.Audio.rate = rate; 418 payload->typeSpecific.Audio.rate = rate;
419 payload->audio = true; 419 payload->audio = true;
420 return payload; 420 return payload;
421 } 421 }
422 422
423 int GetPayloadTypeFrequency(const RtpUtility::Payload& payload) const { 423 int GetPayloadTypeFrequency(const RtpUtility::Payload& payload) const {
424 return payload.typeSpecific.Audio.frequency; 424 return payload.typeSpecific.Audio.frequency;
425 } 425 }
426 }; 426 };
427 427
428 class RTPPayloadVideoStrategy : public RTPPayloadStrategy { 428 class RTPPayloadVideoStrategy : public RTPPayloadStrategy {
429 public: 429 public:
430 bool CodecsMustBeUnique() const override { return false; } 430 bool CodecsMustBeUnique() const override { return false; }
431 431
432 bool PayloadIsCompatible(const RtpUtility::Payload& payload, 432 bool PayloadIsCompatible(const RtpUtility::Payload& payload,
433 const uint32_t frequency, 433 const uint32_t frequency,
434 const uint8_t channels, 434 const size_t channels,
435 const uint32_t rate) const override { 435 const uint32_t rate) const override {
436 return !payload.audio; 436 return !payload.audio;
437 } 437 }
438 438
439 void UpdatePayloadRate(RtpUtility::Payload* payload, 439 void UpdatePayloadRate(RtpUtility::Payload* payload,
440 const uint32_t rate) const override { 440 const uint32_t rate) const override {
441 payload->typeSpecific.Video.maxRate = rate; 441 payload->typeSpecific.Video.maxRate = rate;
442 } 442 }
443 443
444 RtpUtility::Payload* CreatePayloadType( 444 RtpUtility::Payload* CreatePayloadType(
445 const char payloadName[RTP_PAYLOAD_NAME_SIZE], 445 const char payloadName[RTP_PAYLOAD_NAME_SIZE],
446 const int8_t payloadType, 446 const int8_t payloadType,
447 const uint32_t frequency, 447 const uint32_t frequency,
448 const uint8_t channels, 448 const size_t channels,
449 const uint32_t rate) const override { 449 const uint32_t rate) const override {
450 RtpVideoCodecTypes videoType = kRtpVideoGeneric; 450 RtpVideoCodecTypes videoType = kRtpVideoGeneric;
451 451
452 if (RtpUtility::StringCompare(payloadName, "VP8", 3)) { 452 if (RtpUtility::StringCompare(payloadName, "VP8", 3)) {
453 videoType = kRtpVideoVp8; 453 videoType = kRtpVideoVp8;
454 } else if (RtpUtility::StringCompare(payloadName, "VP9", 3)) { 454 } else if (RtpUtility::StringCompare(payloadName, "VP9", 3)) {
455 videoType = kRtpVideoVp9; 455 videoType = kRtpVideoVp9;
456 } else if (RtpUtility::StringCompare(payloadName, "H264", 4)) { 456 } else if (RtpUtility::StringCompare(payloadName, "H264", 4)) {
457 videoType = kRtpVideoH264; 457 videoType = kRtpVideoH264;
458 } else if (RtpUtility::StringCompare(payloadName, "I420", 4)) { 458 } else if (RtpUtility::StringCompare(payloadName, "I420", 4)) {
(...skipping 22 matching lines...) Expand all
481 RTPPayloadStrategy* RTPPayloadStrategy::CreateStrategy( 481 RTPPayloadStrategy* RTPPayloadStrategy::CreateStrategy(
482 const bool handling_audio) { 482 const bool handling_audio) {
483 if (handling_audio) { 483 if (handling_audio) {
484 return new RTPPayloadAudioStrategy(); 484 return new RTPPayloadAudioStrategy();
485 } else { 485 } else {
486 return new RTPPayloadVideoStrategy(); 486 return new RTPPayloadVideoStrategy();
487 } 487 }
488 } 488 }
489 489
490 } // namespace webrtc 490 } // namespace webrtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698