1// Copyright (c) 2012 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef REMOTING_CODEC_AUDIO_DECODER_OPUS_H_
6#define REMOTING_CODEC_AUDIO_DECODER_OPUS_H_
7
8#include "base/basictypes.h"
9#include "base/memory/scoped_ptr.h"
10#include "remoting/codec/audio_decoder.h"
11
12struct OpusDecoder;
13
14namespace remoting {
15
16class AudioPacket;
17
18class AudioDecoderOpus : public AudioDecoder {
19 public:
20  AudioDecoderOpus();
21  virtual ~AudioDecoderOpus();
22
23  // AudioDecoder interface.
24  virtual scoped_ptr<AudioPacket> Decode(
25      scoped_ptr<AudioPacket> packet) OVERRIDE;
26
27 private:
28  void InitDecoder();
29  void DestroyDecoder();
30  bool ResetForPacket(AudioPacket* packet);
31
32  int sampling_rate_;
33  int channels_;
34  OpusDecoder* decoder_;
35
36  DISALLOW_COPY_AND_ASSIGN(AudioDecoderOpus);
37};
38
39}  // namespace remoting
40
41#endif  // REMOTING_CODEC_AUDIO_DECODER_OPUS_H_
42