Re-subimission of https://codereview.chromium.org/1041213003/
[chromium-blink-merge.git] / content / renderer / media / media_stream_audio_renderer.h
blob41e32239115c3aae8cb9f43f034cbb06d6969979
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.
5 #ifndef CONTENT_RENDERER_MEDIA_MEDIA_STREAM_AUDIO_RENDERER_H_
6 #define CONTENT_RENDERER_MEDIA_MEDIA_STREAM_AUDIO_RENDERER_H_
8 #include "base/memory/ref_counted.h"
9 #include "base/time/time.h"
11 namespace content {
13 class MediaStreamAudioRenderer
14 : public base::RefCountedThreadSafe<MediaStreamAudioRenderer> {
15 public:
16 // Starts rendering audio.
17 virtual void Start() = 0;
19 // Stops rendering audio.
20 virtual void Stop() = 0;
22 // Resumes rendering audio after being paused.
23 virtual void Play() = 0;
25 // Temporarily suspends rendering audio. The audio stream might still be
26 // active but new audio data is not provided to the consumer.
27 virtual void Pause() = 0;
29 // Sets the output volume.
30 virtual void SetVolume(float volume) = 0;
32 // Time stamp that reflects the current render time. Should not be updated
33 // when paused.
34 virtual base::TimeDelta GetCurrentRenderTime() const = 0;
36 // Returns true if the implementation is a local renderer and false
37 // otherwise.
38 virtual bool IsLocalRenderer() const = 0;
40 protected:
41 friend class base::RefCountedThreadSafe<MediaStreamAudioRenderer>;
43 MediaStreamAudioRenderer();
44 virtual ~MediaStreamAudioRenderer();
46 private:
47 DISALLOW_COPY_AND_ASSIGN(MediaStreamAudioRenderer);
50 } // namespace content
52 #endif // CONTENT_RENDERER_MEDIA_MEDIA_STREAM_AUDIO_RENDERER_H_