|  | // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  |  | 
|  | #ifndef REMOTING_CODEC_AUDIO_DECODER_H_ | 
|  | #define REMOTING_CODEC_AUDIO_DECODER_H_ | 
|  |  | 
|  | #include <memory> | 
|  |  | 
|  | namespace remoting { | 
|  |  | 
|  | namespace protocol { | 
|  | class SessionConfig; | 
|  | }  // namespace protocol | 
|  |  | 
|  | class AudioPacket; | 
|  |  | 
|  | class AudioDecoder { | 
|  | public: | 
|  | static std::unique_ptr<AudioDecoder> CreateAudioDecoder( | 
|  | const protocol::SessionConfig& config); | 
|  |  | 
|  | virtual ~AudioDecoder() {} | 
|  |  | 
|  | // Returns the decoded packet. If the packet is invalid, then a NULL | 
|  | // std::unique_ptr is returned. | 
|  | virtual std::unique_ptr<AudioPacket> Decode( | 
|  | std::unique_ptr<AudioPacket> packet) = 0; | 
|  | }; | 
|  |  | 
|  | }  // namespace remoting | 
|  |  | 
|  | #endif  // REMOTING_CODEC_AUDIO_DECODER_H_ |