Home | History | Annotate | Download | only in audio
      1 /*
      2  *  Copyright (c) 2015 The WebRTC project authors. All Rights Reserved.
      3  *
      4  *  Use of this source code is governed by a BSD-style license
      5  *  that can be found in the LICENSE file in the root of the source
      6  *  tree. An additional intellectual property rights grant can be found
      7  *  in the file PATENTS.  All contributing project authors may
      8  *  be found in the AUTHORS file in the root of the source tree.
      9  */
     10 
     11 #ifndef WEBRTC_AUDIO_AUDIO_SINK_H_
     12 #define WEBRTC_AUDIO_AUDIO_SINK_H_
     13 
     14 #if defined(WEBRTC_POSIX) && !defined(__STDC_FORMAT_MACROS)
     15 // Avoid conflict with format_macros.h.
     16 #define __STDC_FORMAT_MACROS
     17 #endif
     18 
     19 #include <inttypes.h>
     20 #include <stddef.h>
     21 
     22 namespace webrtc {
     23 
     24 // Represents a simple push audio sink.
     25 class AudioSinkInterface {
     26  public:
     27   virtual ~AudioSinkInterface() {}
     28 
     29   struct Data {
     30     Data(int16_t* data,
     31          size_t samples_per_channel,
     32          int sample_rate,
     33          size_t channels,
     34          uint32_t timestamp)
     35         : data(data),
     36           samples_per_channel(samples_per_channel),
     37           sample_rate(sample_rate),
     38           channels(channels),
     39           timestamp(timestamp) {}
     40 
     41     int16_t* data;               // The actual 16bit audio data.
     42     size_t samples_per_channel;  // Number of frames in the buffer.
     43     int sample_rate;             // Sample rate in Hz.
     44     size_t channels;             // Number of channels in the audio data.
     45     uint32_t timestamp;          // The RTP timestamp of the first sample.
     46   };
     47 
     48   virtual void OnData(const Data& audio) = 0;
     49 };
     50 
     51 }  // namespace webrtc
     52 
     53 #endif  // WEBRTC_AUDIO_AUDIO_SINK_H_
     54