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 CONTENT_RENDERER_MEDIA_MEDIA_STREAM_AUDIO_RENDERER_H_ 6 #define CONTENT_RENDERER_MEDIA_MEDIA_STREAM_AUDIO_RENDERER_H_ 7 8 #include "base/memory/ref_counted.h" 9 #include "base/time/time.h" 10 11 namespace content { 12 13 class MediaStreamAudioRenderer 14 : public base::RefCountedThreadSafe<MediaStreamAudioRenderer> { 15 public: 16 // Starts rendering audio. 17 virtual void Start() = 0; 18 19 // Stops rendering audio. 20 virtual void Stop() = 0; 21 22 // Resumes rendering audio after being paused. 23 virtual void Play() = 0; 24 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; 28 29 // Sets the output volume. 30 virtual void SetVolume(float volume) = 0; 31 32 // Time stamp that reflects the current render time. Should not be updated 33 // when paused. 34 virtual base::TimeDelta GetCurrentRenderTime() const = 0; 35 36 // Returns true if the implementation is a local renderer and false 37 // otherwise. 38 virtual bool IsLocalRenderer() const = 0; 39 40 protected: 41 friend class base::RefCountedThreadSafe<MediaStreamAudioRenderer>; 42 43 MediaStreamAudioRenderer(); 44 virtual ~MediaStreamAudioRenderer(); 45 46 private: 47 DISALLOW_COPY_AND_ASSIGN(MediaStreamAudioRenderer); 48 }; 49 50 } // namespace content 51 52 #endif // CONTENT_RENDERER_MEDIA_MEDIA_STREAM_AUDIO_RENDERER_H_ 53