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 // From ppb_audio_buffer.idl modified Wed Jan 27 17:10:16 2016.
6 
7 #include <stdint.h>
8 
9 #include "ppapi/c/pp_errors.h"
10 #include "ppapi/c/ppb_audio_buffer.h"
11 #include "ppapi/shared_impl/tracked_callback.h"
12 #include "ppapi/thunk/enter.h"
13 #include "ppapi/thunk/ppapi_thunk_export.h"
14 #include "ppapi/thunk/ppb_audio_buffer_api.h"
15 
16 namespace ppapi {
17 namespace thunk {
18 
19 namespace {
20 
IsAudioBuffer(PP_Resource resource)21 PP_Bool IsAudioBuffer(PP_Resource resource) {
22   VLOG(4) << "PPB_AudioBuffer::IsAudioBuffer()";
23   EnterResource<PPB_AudioBuffer_API> enter(resource, false);
24   return PP_FromBool(enter.succeeded());
25 }
26 
GetTimestamp(PP_Resource buffer)27 PP_TimeDelta GetTimestamp(PP_Resource buffer) {
28   VLOG(4) << "PPB_AudioBuffer::GetTimestamp()";
29   EnterResource<PPB_AudioBuffer_API> enter(buffer, true);
30   if (enter.failed())
31     return 0.0;
32   return enter.object()->GetTimestamp();
33 }
34 
SetTimestamp(PP_Resource buffer,PP_TimeDelta timestamp)35 void SetTimestamp(PP_Resource buffer, PP_TimeDelta timestamp) {
36   VLOG(4) << "PPB_AudioBuffer::SetTimestamp()";
37   EnterResource<PPB_AudioBuffer_API> enter(buffer, true);
38   if (enter.failed())
39     return;
40   enter.object()->SetTimestamp(timestamp);
41 }
42 
GetSampleRate(PP_Resource buffer)43 PP_AudioBuffer_SampleRate GetSampleRate(PP_Resource buffer) {
44   VLOG(4) << "PPB_AudioBuffer::GetSampleRate()";
45   EnterResource<PPB_AudioBuffer_API> enter(buffer, true);
46   if (enter.failed())
47     return PP_AUDIOBUFFER_SAMPLERATE_UNKNOWN;
48   return enter.object()->GetSampleRate();
49 }
50 
GetSampleSize(PP_Resource buffer)51 PP_AudioBuffer_SampleSize GetSampleSize(PP_Resource buffer) {
52   VLOG(4) << "PPB_AudioBuffer::GetSampleSize()";
53   EnterResource<PPB_AudioBuffer_API> enter(buffer, true);
54   if (enter.failed())
55     return PP_AUDIOBUFFER_SAMPLESIZE_UNKNOWN;
56   return enter.object()->GetSampleSize();
57 }
58 
GetNumberOfChannels(PP_Resource buffer)59 uint32_t GetNumberOfChannels(PP_Resource buffer) {
60   VLOG(4) << "PPB_AudioBuffer::GetNumberOfChannels()";
61   EnterResource<PPB_AudioBuffer_API> enter(buffer, true);
62   if (enter.failed())
63     return 0;
64   return enter.object()->GetNumberOfChannels();
65 }
66 
GetNumberOfSamples(PP_Resource buffer)67 uint32_t GetNumberOfSamples(PP_Resource buffer) {
68   VLOG(4) << "PPB_AudioBuffer::GetNumberOfSamples()";
69   EnterResource<PPB_AudioBuffer_API> enter(buffer, true);
70   if (enter.failed())
71     return 0;
72   return enter.object()->GetNumberOfSamples();
73 }
74 
GetDataBuffer(PP_Resource buffer)75 void* GetDataBuffer(PP_Resource buffer) {
76   VLOG(4) << "PPB_AudioBuffer::GetDataBuffer()";
77   EnterResource<PPB_AudioBuffer_API> enter(buffer, true);
78   if (enter.failed())
79     return NULL;
80   return enter.object()->GetDataBuffer();
81 }
82 
GetDataBufferSize(PP_Resource buffer)83 uint32_t GetDataBufferSize(PP_Resource buffer) {
84   VLOG(4) << "PPB_AudioBuffer::GetDataBufferSize()";
85   EnterResource<PPB_AudioBuffer_API> enter(buffer, true);
86   if (enter.failed())
87     return 0;
88   return enter.object()->GetDataBufferSize();
89 }
90 
91 const PPB_AudioBuffer_0_1 g_ppb_audiobuffer_thunk_0_1 = {
92     &IsAudioBuffer,      &GetTimestamp,  &SetTimestamp,
93     &GetSampleRate,      &GetSampleSize, &GetNumberOfChannels,
94     &GetNumberOfSamples, &GetDataBuffer, &GetDataBufferSize};
95 
96 }  // namespace
97 
GetPPB_AudioBuffer_0_1_Thunk()98 PPAPI_THUNK_EXPORT const PPB_AudioBuffer_0_1* GetPPB_AudioBuffer_0_1_Thunk() {
99   return &g_ppb_audiobuffer_thunk_0_1;
100 }
101 
102 }  // namespace thunk
103 }  // namespace ppapi
104