Chromium Code Reviews| Index: media/cast/audio_receiver/audio_decoder.h |
| diff --git a/media/cast/audio_receiver/audio_decoder.h b/media/cast/audio_receiver/audio_decoder.h |
| index 6bafdd1465b2aad4633b26d4ad8260f9bb4badae..6d8251017b9335664c16e93b9f78610f4278e869 100644 |
| --- a/media/cast/audio_receiver/audio_decoder.h |
| +++ b/media/cast/audio_receiver/audio_decoder.h |
| @@ -6,61 +6,39 @@ |
| #define MEDIA_CAST_AUDIO_RECEIVER_AUDIO_DECODER_H_ |
| #include "base/callback.h" |
| -#include "base/synchronization/lock.h" |
| +#include "base/memory/ref_counted.h" |
| +#include "media/base/audio_bus.h" |
| #include "media/cast/cast_config.h" |
| #include "media/cast/cast_environment.h" |
| -#include "media/cast/framer/cast_message_builder.h" |
| -#include "media/cast/framer/frame_id_map.h" |
| -#include "media/cast/rtp_receiver/rtp_receiver_defines.h" |
| - |
| -namespace webrtc { |
| -class AudioCodingModule; |
| -} |
| +#include "media/cast/transport/cast_transport_config.h" |
| namespace media { |
| namespace cast { |
| -typedef std::map<uint32, uint32> FrameIdRtpTimestampMap; |
| - |
| -// Thread safe class. |
| class AudioDecoder { |
| public: |
| - AudioDecoder(scoped_refptr<CastEnvironment> cast_environment, |
| - const AudioReceiverConfig& audio_config, |
| - RtpPayloadFeedback* incoming_payload_feedback); |
| + AudioDecoder(const scoped_refptr<CastEnvironment>& cast_environment, |
| + const AudioReceiverConfig& audio_config); |
| virtual ~AudioDecoder(); |
| - // Extract a raw audio frame from the decoder. |
| - // Set the number of desired 10ms blocks and frequency. |
| - // Should be called from the cast audio decoder thread; however that is not |
| - // required. |
| - bool GetRawAudioFrame(int number_of_10ms_blocks, |
| - int desired_frequency, |
| - PcmAudioFrame* audio_frame, |
| - uint32* rtp_timestamp); |
| - |
| - // Insert an RTP packet to the decoder. |
| - // Should be called from the main cast thread; however that is not required. |
| - void IncomingParsedRtpPacket(const uint8* payload_data, |
| - size_t payload_size, |
| - const RtpCastHeader& rtp_header); |
| + CastInitializationStatus InitializationResult() const; |
|
hubbe
2014/03/28 19:50:59
Add a comment for this function.
miu
2014/03/28 23:51:58
Done.
|
| - bool TimeToSendNextCastMessage(base::TimeTicks* time_to_send); |
| - void SendCastMessage(); |
| + // In the normal case, |encoded_frame->frame_id| will be |
| + // monotonically-increasing by 1 for each successive call to this method. |
| + // When it is not, the decoder will assume one or more packets have been |
| + // dropped, and will perform recovery actions. |
| + typedef base::Callback<void(scoped_ptr<AudioBus>, |
|
hubbe
2014/03/28 19:50:59
I think you should move the typedef before the com
miu
2014/03/28 23:51:58
Done. IIRC, Chromium style wants type decls befor
|
| + bool is_continuous)> DecodeFrameCallback; |
| + void DecodeFrame(scoped_ptr<transport::EncodedAudioFrame> encoded_frame, |
|
hubbe
2014/03/28 19:50:59
Why does this function take a callback at all?
Cou
miu
2014/03/28 23:51:58
Done.
|
| + const DecodeFrameCallback& callback); |
| private: |
| - scoped_refptr<CastEnvironment> cast_environment_; |
| - |
| - // The webrtc AudioCodingModule is thread safe. |
| - scoped_ptr<webrtc::AudioCodingModule> audio_decoder_; |
| - |
| - FrameIdMap frame_id_map_; |
| - CastMessageBuilder cast_message_builder_; |
| + class ImplBase; |
| + class OpusImpl; |
| + class Pcm16Impl; |
| - base::Lock lock_; |
| - bool have_received_packets_; |
| - FrameIdRtpTimestampMap frame_id_rtp_timestamp_map_; |
| - uint32 last_played_out_timestamp_; |
| + const scoped_refptr<CastEnvironment> cast_environment_; |
| + scoped_refptr<ImplBase> impl_; |
| DISALLOW_COPY_AND_ASSIGN(AudioDecoder); |
| }; |