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_CLIENT_AUDIO_DECODE_SCHEDULER_H_ 6#define REMOTING_CLIENT_AUDIO_DECODE_SCHEDULER_H_ 7 8#include "base/memory/ref_counted.h" 9#include "base/memory/scoped_ptr.h" 10#include "remoting/protocol/audio_stub.h" 11 12namespace base { 13class SingleThreadTaskRunner; 14} // namespace base 15 16namespace remoting { 17 18namespace protocol { 19class SessionConfig; 20} // namespace protocol 21 22class AudioDecoder; 23class AudioPacket; 24class AudioPlayer; 25 26class AudioDecodeScheduler : public protocol::AudioStub { 27 public: 28 AudioDecodeScheduler( 29 scoped_refptr<base::SingleThreadTaskRunner> main_task_runner, 30 scoped_refptr<base::SingleThreadTaskRunner> audio_decode_task_runner, 31 scoped_ptr<AudioPlayer> audio_player); 32 virtual ~AudioDecodeScheduler(); 33 34 // Initializes decoder with the information from the protocol config. 35 void Initialize(const protocol::SessionConfig& config); 36 37 // AudioStub implementation. 38 virtual void ProcessAudioPacket(scoped_ptr<AudioPacket> packet, 39 const base::Closure& done) OVERRIDE; 40 41 private: 42 class Core; 43 44 scoped_refptr<Core> core_; 45 46 DISALLOW_COPY_AND_ASSIGN(AudioDecodeScheduler); 47}; 48 49} // namespace remoting 50 51#endif // REMOTING_CLIENT_AUDIO_DECODE_SCHEDULER_H_ 52