• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2014 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 PPAPI_CPP_AUDIO_BUFFER_H_
6 #define PPAPI_CPP_AUDIO_BUFFER_H_
7 
8 #include "ppapi/c/ppb_audio_buffer.h"
9 #include "ppapi/cpp/resource.h"
10 
11 namespace pp {
12 
13 class AudioBuffer : public Resource {
14  public:
15   /// Default constructor for creating an is_null()
16   /// <code>AudioBuffer</code> object.
17   AudioBuffer();
18 
19   /// The copy constructor for <code>AudioBuffer</code>.
20   ///
21   /// @param[in] other A reference to an <code>AudioBuffer</code>.
22   AudioBuffer(const AudioBuffer& other);
23 
24   /// Constructs an <code>AudioBuffer</code> from a <code>Resource</code>.
25   ///
26   /// @param[in] resource A <code>PPB_AudioBuffer</code> resource.
27   explicit AudioBuffer(const Resource& resource);
28 
29   /// A constructor used when you have received a <code>PP_Resource</code> as a
30   /// return value that has had 1 ref added for you.
31   ///
32   /// @param[in] resource A <code>PPB_AudioBuffer</code> resource.
33   AudioBuffer(PassRef, PP_Resource resource);
34 
35   virtual ~AudioBuffer();
36 
37   /// Gets the timestamp of the audio buffer.
38   ///
39   /// @return A <code>PP_TimeDelta</code> containing the timestamp of the audio
40   /// buffer. Given in seconds since the start of the containing audio stream.
41   PP_TimeDelta GetTimestamp() const;
42 
43   /// Sets the timestamp of the audio buffer.
44   ///
45   /// @param[in] timestamp A <code>PP_TimeDelta</code> containing the timestamp
46   /// of the audio buffer. Given in seconds since the start of the containing
47   /// audio stream.
48   void SetTimestamp(PP_TimeDelta timestamp);
49 
50   /// Gets the sample rate of the audio buffer.
51   ///
52   /// @return The sample rate of the audio buffer.
53   PP_AudioBuffer_SampleRate GetSampleRate() const;
54 
55   /// Gets the sample size of the audio buffer in bytes.
56   ///
57   /// @return The sample size of the audio buffer in bytes.
58   PP_AudioBuffer_SampleSize GetSampleSize() const;
59 
60   /// Gets the number of channels in the audio buffer.
61   ///
62   /// @return The number of channels in the audio buffer.
63   uint32_t GetNumberOfChannels() const;
64 
65   /// Gets the number of samples in the audio buffer.
66   ///
67   /// @return The number of samples in the audio buffer.
68   /// For example, at a sampling rate of 44,100 Hz in stereo audio, a buffer
69   /// containing 4,410 * 2 samples would have a duration of 100 milliseconds.
70   uint32_t GetNumberOfSamples() const;
71 
72   /// Gets the data buffer containing the audio buffer samples.
73   ///
74   /// @return A pointer to the beginning of the data buffer.
75   void* GetDataBuffer();
76 
77   /// Gets the size of data buffer in bytes.
78   ///
79   /// @return The size of the data buffer in bytes.
80   uint32_t GetDataBufferSize() const;
81 };
82 
83 }  // namespace pp
84 
85 #endif  // PPAPI_CPP_AUDIO_BUFFER_H_
86