1a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidt// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidt// Use of this source code is governed by a BSD-style license that can be 3a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidt// found in the LICENSE file. 4a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidt 5a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidt#ifndef REMOTING_CLIENT_AUDIO_DECODE_SCHEDULER_H_ 6a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidt#define REMOTING_CLIENT_AUDIO_DECODE_SCHEDULER_H_ 7a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidt 8a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidt#include "base/memory/ref_counted.h" 9a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidt#include "base/memory/scoped_ptr.h" 10a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidt#include "remoting/protocol/audio_stub.h" 11a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidt 12a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidtnamespace base { 13a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidtclass SingleThreadTaskRunner; 14a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidt} // namespace base 15a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidt 16a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidtnamespace remoting { 17a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidt 18a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidtnamespace protocol { 19a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidtclass SessionConfig; 20a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidt} // namespace protocol 21a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidt 22a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidtclass AudioDecoder; 23a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidtclass AudioPacket; 24a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidtclass AudioPlayer; 25a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidt 26a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidtclass AudioDecodeScheduler : public protocol::AudioStub { 27a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidt public: 28a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidt AudioDecodeScheduler( 29a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidt scoped_refptr<base::SingleThreadTaskRunner> main_task_runner, 30a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidt scoped_refptr<base::SingleThreadTaskRunner> audio_decode_task_runner, 31a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidt scoped_ptr<AudioPlayer> audio_player); 32a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidt virtual ~AudioDecodeScheduler(); 33a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidt 34a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidt // Initializes decoder with the information from the protocol config. 35a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidt void Initialize(const protocol::SessionConfig& config); 36a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidt 37a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidt // AudioStub implementation. 38a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidt virtual void ProcessAudioPacket(scoped_ptr<AudioPacket> packet, 39a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidt const base::Closure& done) OVERRIDE; 40a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidt 41a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidt private: 42a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidt class Core; 43a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidt 44a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidt scoped_refptr<Core> core_; 45a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidt 46a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidt DISALLOW_COPY_AND_ASSIGN(AudioDecodeScheduler); 47a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidt}; 48a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidt 49a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidt} // namespace remoting 50a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidt 51a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidt#endif // REMOTING_CLIENT_AUDIO_DECODE_SCHEDULER_H_ 52a54fa5fb807eaeff45464139b5a7759f060cec68Dmitry Shmidt