Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / media / base / fake_audio_renderer_sink.h
1 // Copyright 2013 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 MEDIA_BASE_FAKE_AUDIO_RENDERER_SINK_H_
6 #define MEDIA_BASE_FAKE_AUDIO_RENDERER_SINK_H_
7
8 #include "media/audio/audio_parameters.h"
9 #include "media/base/audio_renderer_sink.h"
10
11 namespace media {
12
13 class FakeAudioRendererSink : public AudioRendererSink {
14  public:
15   enum State {
16     kUninitialized,
17     kInitialized,
18     kStarted,
19     kPaused,
20     kPlaying,
21     kStopped
22   };
23
24   FakeAudioRendererSink();
25
26   void Initialize(const AudioParameters& params,
27                   RenderCallback* callback) override;
28   void Start() override;
29   void Stop() override;
30   void Pause() override;
31   void Play() override;
32   bool SetVolume(double volume) override;
33
34   // Attempts to call Render() on the callback provided to
35   // Initialize() with |dest| and |audio_delay_milliseconds|.
36   // Returns true and sets |frames_written| to the return value of the
37   // Render() call.
38   // Returns false if this object is in a state where calling Render()
39   // should not occur. (i.e., in the kPaused or kStopped state.) The
40   // value of |frames_written| is undefined if false is returned.
41   bool Render(AudioBus* dest, int audio_delay_milliseconds,
42               int* frames_written);
43   void OnRenderError();
44
45   State state() const { return state_; }
46
47  protected:
48   ~FakeAudioRendererSink() override;
49
50  private:
51   void ChangeState(State new_state);
52
53   State state_;
54   RenderCallback* callback_;
55
56   DISALLOW_COPY_AND_ASSIGN(FakeAudioRendererSink);
57 };
58
59 }  // namespace media
60
61 #endif  // MEDIA_BASE_FAKE_AUDIO_RENDERER_SINK_H_