• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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_PUBLIC_RENDERER_MEDIA_STREAM_AUDIO_SINK_H_
6 #define CONTENT_PUBLIC_RENDERER_MEDIA_STREAM_AUDIO_SINK_H_
7 
8 #include <vector>
9 
10 #include "base/basictypes.h"
11 #include "content/common/content_export.h"
12 #include "content/public/renderer/media_stream_sink.h"
13 
14 namespace blink {
15 class WebMediaStreamTrack;
16 }
17 
18 namespace media {
19 class AudioParameters;
20 }
21 
22 namespace content {
23 
24 class CONTENT_EXPORT MediaStreamAudioSink : public MediaStreamSink {
25  public:
26   // Adds a MediaStreamAudioSink to the audio track to receive audio data from
27   // the track.
28   // Called on the main render thread.
29   static void AddToAudioTrack(MediaStreamAudioSink* sink,
30                               const blink::WebMediaStreamTrack& track);
31 
32   // Removes a MediaStreamAudioSink from the audio track to stop receiving
33   // audio data from the track.
34   // Called on the main render thread.
35   static void RemoveFromAudioTrack(MediaStreamAudioSink* sink,
36                                    const blink::WebMediaStreamTrack& track);
37 
38   // Callback on delivering the interleaved audio data.
39   // |audio_data| is the pointer to the audio data.
40   // |sample_rate| is the sample frequency of |audio_data|.
41   // |number_of_channels| is the number of audio channels of |audio_data|.
42   // |number_of_frames| is the number of audio frames in the |audio_data|.
43   // Called on real-time audio thread.
44   virtual void OnData(const int16* audio_data,
45                       int sample_rate,
46                       int number_of_channels,
47                       int number_of_frames) = 0;
48 
49   // Callback called when the format of the audio stream has changed.
50   // This is called on the same thread as OnData().
51   virtual void OnSetFormat(const media::AudioParameters& params) = 0;
52 
53  protected:
~MediaStreamAudioSink()54   virtual ~MediaStreamAudioSink() {}
55 };
56 
57 }  // namespace content
58 
59 #endif  // CONTENT_PUBLIC_RENDERER_MEDIA_STREAM_AUDIO_SINK_H_
60