| 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 181 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   192   } |   192   } | 
|   193   previous_pltype = previous_pltype_;  // Read it while we have the critsect. |   193   previous_pltype = previous_pltype_;  // Read it while we have the critsect. | 
|   194  |   194  | 
|   195   RTPFragmentationHeader my_fragmentation; |   195   RTPFragmentationHeader my_fragmentation; | 
|   196   ConvertEncodedInfoToFragmentationHeader(encoded_info, &my_fragmentation); |   196   ConvertEncodedInfoToFragmentationHeader(encoded_info, &my_fragmentation); | 
|   197   FrameType frame_type; |   197   FrameType frame_type; | 
|   198   if (encode_buffer_.size() == 0 && encoded_info.send_even_if_empty) { |   198   if (encode_buffer_.size() == 0 && encoded_info.send_even_if_empty) { | 
|   199     frame_type = kFrameEmpty; |   199     frame_type = kFrameEmpty; | 
|   200     encoded_info.payload_type = previous_pltype; |   200     encoded_info.payload_type = previous_pltype; | 
|   201   } else { |   201   } else { | 
|   202     DCHECK_GT(encode_buffer_.size(), 0u); |   202     RTC_DCHECK_GT(encode_buffer_.size(), 0u); | 
|   203     frame_type = encoded_info.speech ? kAudioFrameSpeech : kAudioFrameCN; |   203     frame_type = encoded_info.speech ? kAudioFrameSpeech : kAudioFrameCN; | 
|   204   } |   204   } | 
|   205  |   205  | 
|   206   { |   206   { | 
|   207     CriticalSectionScoped lock(callback_crit_sect_.get()); |   207     CriticalSectionScoped lock(callback_crit_sect_.get()); | 
|   208     if (packetization_callback_) { |   208     if (packetization_callback_) { | 
|   209       packetization_callback_->SendData( |   209       packetization_callback_->SendData( | 
|   210           frame_type, encoded_info.payload_type, encoded_info.encoded_timestamp, |   210           frame_type, encoded_info.payload_type, encoded_info.encoded_timestamp, | 
|   211           encode_buffer_.data(), encode_buffer_.size(), |   211           encode_buffer_.data(), encode_buffer_.size(), | 
|   212           my_fragmentation.fragmentationVectorSize > 0 ? &my_fragmentation |   212           my_fragmentation.fragmentationVectorSize > 0 ? &my_fragmentation | 
| (...skipping 280 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   493   return 0; |   493   return 0; | 
|   494 } |   494 } | 
|   495  |   495  | 
|   496 ///////////////////////////////////////// |   496 ///////////////////////////////////////// | 
|   497 //   (VAD) Voice Activity Detection |   497 //   (VAD) Voice Activity Detection | 
|   498 // |   498 // | 
|   499 int AudioCodingModuleImpl::SetVAD(bool enable_dtx, |   499 int AudioCodingModuleImpl::SetVAD(bool enable_dtx, | 
|   500                                   bool enable_vad, |   500                                   bool enable_vad, | 
|   501                                   ACMVADMode mode) { |   501                                   ACMVADMode mode) { | 
|   502   // Note: |enable_vad| is not used; VAD is enabled based on the DTX setting. |   502   // Note: |enable_vad| is not used; VAD is enabled based on the DTX setting. | 
|   503   DCHECK_EQ(enable_dtx, enable_vad); |   503   RTC_DCHECK_EQ(enable_dtx, enable_vad); | 
|   504   CriticalSectionScoped lock(acm_crit_sect_.get()); |   504   CriticalSectionScoped lock(acm_crit_sect_.get()); | 
|   505   return codec_manager_.SetVAD(enable_dtx, mode); |   505   return codec_manager_.SetVAD(enable_dtx, mode); | 
|   506 } |   506 } | 
|   507  |   507  | 
|   508 // Get VAD/DTX settings. |   508 // Get VAD/DTX settings. | 
|   509 int AudioCodingModuleImpl::VAD(bool* dtx_enabled, bool* vad_enabled, |   509 int AudioCodingModuleImpl::VAD(bool* dtx_enabled, bool* vad_enabled, | 
|   510                                ACMVADMode* mode) const { |   510                                ACMVADMode* mode) const { | 
|   511   CriticalSectionScoped lock(acm_crit_sect_.get()); |   511   CriticalSectionScoped lock(acm_crit_sect_.get()); | 
|   512   codec_manager_.VAD(dtx_enabled, vad_enabled, mode); |   512   codec_manager_.VAD(dtx_enabled, vad_enabled, mode); | 
|   513   return 0; |   513   return 0; | 
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|   573  |   573  | 
|   574   CriticalSectionScoped lock(acm_crit_sect_.get()); |   574   CriticalSectionScoped lock(acm_crit_sect_.get()); | 
|   575  |   575  | 
|   576   return receiver_.current_sample_rate_hz(); |   576   return receiver_.current_sample_rate_hz(); | 
|   577 } |   577 } | 
|   578  |   578  | 
|   579 // Register possible receive codecs, can be called multiple times, |   579 // Register possible receive codecs, can be called multiple times, | 
|   580 // for codecs, CNG (NB, WB and SWB), DTMF, RED. |   580 // for codecs, CNG (NB, WB and SWB), DTMF, RED. | 
|   581 int AudioCodingModuleImpl::RegisterReceiveCodec(const CodecInst& codec) { |   581 int AudioCodingModuleImpl::RegisterReceiveCodec(const CodecInst& codec) { | 
|   582   CriticalSectionScoped lock(acm_crit_sect_.get()); |   582   CriticalSectionScoped lock(acm_crit_sect_.get()); | 
|   583   DCHECK(receiver_initialized_); |   583   RTC_DCHECK(receiver_initialized_); | 
|   584   if (codec.channels > 2 || codec.channels < 0) { |   584   if (codec.channels > 2 || codec.channels < 0) { | 
|   585     LOG_F(LS_ERROR) << "Unsupported number of channels: " << codec.channels; |   585     LOG_F(LS_ERROR) << "Unsupported number of channels: " << codec.channels; | 
|   586     return -1; |   586     return -1; | 
|   587   } |   587   } | 
|   588  |   588  | 
|   589   int codec_id = ACMCodecDB::ReceiverCodecNumber(codec); |   589   int codec_id = ACMCodecDB::ReceiverCodecNumber(codec); | 
|   590   if (codec_id < 0 || codec_id >= ACMCodecDB::kNumCodecs) { |   590   if (codec_id < 0 || codec_id >= ACMCodecDB::kNumCodecs) { | 
|   591     LOG_F(LS_ERROR) << "Wrong codec params to be registered as receive codec"; |   591     LOG_F(LS_ERROR) << "Wrong codec params to be registered as receive codec"; | 
|   592     return -1; |   592     return -1; | 
|   593   } |   593   } | 
| (...skipping 11 matching lines...) Expand all  Loading... | 
|   605                             codec.plfreq, |   605                             codec.plfreq, | 
|   606                             codec_manager_.GetAudioDecoder(codec)); |   606                             codec_manager_.GetAudioDecoder(codec)); | 
|   607 } |   607 } | 
|   608  |   608  | 
|   609 int AudioCodingModuleImpl::RegisterExternalReceiveCodec( |   609 int AudioCodingModuleImpl::RegisterExternalReceiveCodec( | 
|   610     int rtp_payload_type, |   610     int rtp_payload_type, | 
|   611     AudioDecoder* external_decoder, |   611     AudioDecoder* external_decoder, | 
|   612     int sample_rate_hz, |   612     int sample_rate_hz, | 
|   613     int num_channels) { |   613     int num_channels) { | 
|   614   CriticalSectionScoped lock(acm_crit_sect_.get()); |   614   CriticalSectionScoped lock(acm_crit_sect_.get()); | 
|   615   DCHECK(receiver_initialized_); |   615   RTC_DCHECK(receiver_initialized_); | 
|   616   if (num_channels > 2 || num_channels < 0) { |   616   if (num_channels > 2 || num_channels < 0) { | 
|   617     LOG_F(LS_ERROR) << "Unsupported number of channels: " << num_channels; |   617     LOG_F(LS_ERROR) << "Unsupported number of channels: " << num_channels; | 
|   618     return -1; |   618     return -1; | 
|   619   } |   619   } | 
|   620  |   620  | 
|   621   // Check if the payload-type is valid. |   621   // Check if the payload-type is valid. | 
|   622   if (!ACMCodecDB::ValidPayloadType(rtp_payload_type)) { |   622   if (!ACMCodecDB::ValidPayloadType(rtp_payload_type)) { | 
|   623     LOG_F(LS_ERROR) << "Invalid payload-type " << rtp_payload_type |   623     LOG_F(LS_ERROR) << "Invalid payload-type " << rtp_payload_type | 
|   624                     << " for external decoder."; |   624                     << " for external decoder."; | 
|   625     return -1; |   625     return -1; | 
| (...skipping 509 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  1135       *sample_rate_hz = 8000; |  1135       *sample_rate_hz = 8000; | 
|  1136       *channels = 1; |  1136       *channels = 1; | 
|  1137       break; |  1137       break; | 
|  1138     default: |  1138     default: | 
|  1139       FATAL() << "Codec type " << codec_type << " not supported."; |  1139       FATAL() << "Codec type " << codec_type << " not supported."; | 
|  1140   } |  1140   } | 
|  1141   return true; |  1141   return true; | 
|  1142 } |  1142 } | 
|  1143  |  1143  | 
|  1144 }  // namespace webrtc |  1144 }  // namespace webrtc | 
| OLD | NEW |