OLD | NEW |
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 |
(...skipping 494 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
505 receiver_.SetMinimumDelay(0); | 505 receiver_.SetMinimumDelay(0); |
506 receiver_.SetMaximumDelay(0); | 506 receiver_.SetMaximumDelay(0); |
507 receiver_.FlushBuffers(); | 507 receiver_.FlushBuffers(); |
508 | 508 |
509 // Register RED and CN. | 509 // Register RED and CN. |
510 auto db = RentACodec::Database(); | 510 auto db = RentACodec::Database(); |
511 for (size_t i = 0; i < db.size(); i++) { | 511 for (size_t i = 0; i < db.size(); i++) { |
512 if (IsCodecRED(db[i]) || IsCodecCN(db[i])) { | 512 if (IsCodecRED(db[i]) || IsCodecCN(db[i])) { |
513 if (receiver_.AddCodec(static_cast<int>(i), | 513 if (receiver_.AddCodec(static_cast<int>(i), |
514 static_cast<uint8_t>(db[i].pltype), 1, | 514 static_cast<uint8_t>(db[i].pltype), 1, |
515 db[i].plfreq, nullptr) < 0) { | 515 db[i].plfreq, nullptr, db[i].plname) < 0) { |
516 WEBRTC_TRACE(webrtc::kTraceError, webrtc::kTraceAudioCoding, id_, | 516 WEBRTC_TRACE(webrtc::kTraceError, webrtc::kTraceAudioCoding, id_, |
517 "Cannot register master codec."); | 517 "Cannot register master codec."); |
518 return -1; | 518 return -1; |
519 } | 519 } |
520 } | 520 } |
521 } | 521 } |
522 receiver_initialized_ = true; | 522 receiver_initialized_ = true; |
523 return 0; | 523 return 0; |
524 } | 524 } |
525 | 525 |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
559 // Check if the payload-type is valid. | 559 // Check if the payload-type is valid. |
560 if (!RentACodec::IsPayloadTypeValid(codec.pltype)) { | 560 if (!RentACodec::IsPayloadTypeValid(codec.pltype)) { |
561 LOG_F(LS_ERROR) << "Invalid payload type " << codec.pltype << " for " | 561 LOG_F(LS_ERROR) << "Invalid payload type " << codec.pltype << " for " |
562 << codec.plname; | 562 << codec.plname; |
563 return -1; | 563 return -1; |
564 } | 564 } |
565 | 565 |
566 // Get |decoder| associated with |codec|. |decoder| is NULL if |codec| does | 566 // Get |decoder| associated with |codec|. |decoder| is NULL if |codec| does |
567 // not own its decoder. | 567 // not own its decoder. |
568 return receiver_.AddCodec(*codec_index, codec.pltype, codec.channels, | 568 return receiver_.AddCodec(*codec_index, codec.pltype, codec.channels, |
569 codec.plfreq, | 569 codec.plfreq, codec_manager_.GetAudioDecoder(codec), |
570 codec_manager_.GetAudioDecoder(codec)); | 570 codec.plname); |
571 } | 571 } |
572 | 572 |
573 int AudioCodingModuleImpl::RegisterExternalReceiveCodec( | 573 int AudioCodingModuleImpl::RegisterExternalReceiveCodec( |
574 int rtp_payload_type, | 574 int rtp_payload_type, |
575 AudioDecoder* external_decoder, | 575 AudioDecoder* external_decoder, |
576 int sample_rate_hz, | 576 int sample_rate_hz, |
577 int num_channels) { | 577 int num_channels, |
| 578 const std::string& name) { |
578 CriticalSectionScoped lock(acm_crit_sect_.get()); | 579 CriticalSectionScoped lock(acm_crit_sect_.get()); |
579 RTC_DCHECK(receiver_initialized_); | 580 RTC_DCHECK(receiver_initialized_); |
580 if (num_channels > 2 || num_channels < 0) { | 581 if (num_channels > 2 || num_channels < 0) { |
581 LOG_F(LS_ERROR) << "Unsupported number of channels: " << num_channels; | 582 LOG_F(LS_ERROR) << "Unsupported number of channels: " << num_channels; |
582 return -1; | 583 return -1; |
583 } | 584 } |
584 | 585 |
585 // Check if the payload-type is valid. | 586 // Check if the payload-type is valid. |
586 if (!RentACodec::IsPayloadTypeValid(rtp_payload_type)) { | 587 if (!RentACodec::IsPayloadTypeValid(rtp_payload_type)) { |
587 LOG_F(LS_ERROR) << "Invalid payload-type " << rtp_payload_type | 588 LOG_F(LS_ERROR) << "Invalid payload-type " << rtp_payload_type |
588 << " for external decoder."; | 589 << " for external decoder."; |
589 return -1; | 590 return -1; |
590 } | 591 } |
591 | 592 |
592 return receiver_.AddCodec(-1 /* external */, rtp_payload_type, num_channels, | 593 return receiver_.AddCodec(-1 /* external */, rtp_payload_type, num_channels, |
593 sample_rate_hz, external_decoder); | 594 sample_rate_hz, external_decoder, name); |
594 } | 595 } |
595 | 596 |
596 // Get current received codec. | 597 // Get current received codec. |
597 int AudioCodingModuleImpl::ReceiveCodec(CodecInst* current_codec) const { | 598 int AudioCodingModuleImpl::ReceiveCodec(CodecInst* current_codec) const { |
598 CriticalSectionScoped lock(acm_crit_sect_.get()); | 599 CriticalSectionScoped lock(acm_crit_sect_.get()); |
599 return receiver_.LastAudioCodec(current_codec); | 600 return receiver_.LastAudioCodec(current_codec); |
600 } | 601 } |
601 | 602 |
602 // Incoming packet from network parsed and ready for decode. | 603 // Incoming packet from network parsed and ready for decode. |
603 int AudioCodingModuleImpl::IncomingPacket(const uint8_t* incoming_payload, | 604 int AudioCodingModuleImpl::IncomingPacket(const uint8_t* incoming_payload, |
(...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
777 return receiver_.LeastRequiredDelayMs(); | 778 return receiver_.LeastRequiredDelayMs(); |
778 } | 779 } |
779 | 780 |
780 void AudioCodingModuleImpl::GetDecodingCallStatistics( | 781 void AudioCodingModuleImpl::GetDecodingCallStatistics( |
781 AudioDecodingCallStats* call_stats) const { | 782 AudioDecodingCallStats* call_stats) const { |
782 receiver_.GetDecodingCallStatistics(call_stats); | 783 receiver_.GetDecodingCallStatistics(call_stats); |
783 } | 784 } |
784 | 785 |
785 } // namespace acm2 | 786 } // namespace acm2 |
786 } // namespace webrtc | 787 } // namespace webrtc |
OLD | NEW |