Home | History | Annotate | Download | only in media
      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_PEER_CONNECTION_AUDIO_SINK_OWNER_H_
      6 #define CONTENT_RENDERER_MEDIA_PEER_CONNECTION_AUDIO_SINK_OWNER_H_
      7 
      8 #include <vector>
      9 
     10 #include "base/synchronization/lock.h"
     11 #include "content/renderer/media/media_stream_audio_track_sink.h"
     12 
     13 namespace content {
     14 
     15 class PeerConnectionAudioSink;
     16 
     17 // Reference counted holder of PeerConnectionAudioSink.
     18 class PeerConnectionAudioSinkOwner : public MediaStreamAudioTrackSink {
     19  public:
     20   explicit PeerConnectionAudioSinkOwner(PeerConnectionAudioSink* sink);
     21 
     22   // MediaStreamAudioTrackSink implementation.
     23   virtual int OnData(const int16* audio_data,
     24                      int sample_rate,
     25                      int number_of_channels,
     26                      int number_of_frames,
     27                      const std::vector<int>& channels,
     28                      int audio_delay_milliseconds,
     29                      int current_volume,
     30                      bool need_audio_processing,
     31                      bool key_pressed) OVERRIDE;
     32   virtual void OnSetFormat(const media::AudioParameters& params) OVERRIDE;
     33   virtual void OnReadyStateChanged(
     34       blink::WebMediaStreamSource::ReadyState state) OVERRIDE;
     35   virtual void Reset() OVERRIDE;
     36   virtual bool IsEqual(const MediaStreamAudioSink* other) const OVERRIDE;
     37   virtual bool IsEqual(const PeerConnectionAudioSink* other) const OVERRIDE;
     38 
     39  protected:
     40   virtual ~PeerConnectionAudioSinkOwner() {}
     41 
     42  private:
     43   mutable base::Lock lock_;
     44 
     45   // Raw pointer to the delegate, the client need to call Reset() to set the
     46   // pointer to NULL before the delegate goes away.
     47   PeerConnectionAudioSink* delegate_;
     48 
     49   DISALLOW_COPY_AND_ASSIGN(PeerConnectionAudioSinkOwner);
     50 };
     51 
     52 }  // namespace content
     53 
     54 #endif  // CONTENT_RENDERER_MEDIA_PEER_CONNECTION_AUDIO_SINK_OWNER_H_
     55