1 // Copyright 2015 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_encoder.idl modified Wed Jan 27 17:39:22 2016.
6 
7 #include <stdint.h>
8 
9 #include "base/logging.h"
10 #include "ppapi/c/pp_completion_callback.h"
11 #include "ppapi/c/pp_errors.h"
12 #include "ppapi/c/ppb_audio_encoder.h"
13 #include "ppapi/shared_impl/tracked_callback.h"
14 #include "ppapi/thunk/enter.h"
15 #include "ppapi/thunk/ppapi_thunk_export.h"
16 #include "ppapi/thunk/ppb_audio_encoder_api.h"
17 
18 namespace ppapi {
19 namespace thunk {
20 
21 namespace {
22 
Create(PP_Instance instance)23 PP_Resource Create(PP_Instance instance) {
24   VLOG(4) << "PPB_AudioEncoder::Create()";
25   EnterResourceCreation enter(instance);
26   if (enter.failed())
27     return 0;
28   return enter.functions()->CreateAudioEncoder(instance);
29 }
30 
IsAudioEncoder(PP_Resource resource)31 PP_Bool IsAudioEncoder(PP_Resource resource) {
32   VLOG(4) << "PPB_AudioEncoder::IsAudioEncoder()";
33   EnterResource<PPB_AudioEncoder_API> enter(resource, false);
34   return PP_FromBool(enter.succeeded());
35 }
36 
GetSupportedProfiles(PP_Resource audio_encoder,struct PP_ArrayOutput output,struct PP_CompletionCallback callback)37 int32_t GetSupportedProfiles(PP_Resource audio_encoder,
38                              struct PP_ArrayOutput output,
39                              struct PP_CompletionCallback callback) {
40   VLOG(4) << "PPB_AudioEncoder::GetSupportedProfiles()";
41   EnterResource<PPB_AudioEncoder_API> enter(audio_encoder, callback, true);
42   if (enter.failed())
43     return enter.retval();
44   return enter.SetResult(
45       enter.object()->GetSupportedProfiles(output, enter.callback()));
46 }
47 
Initialize(PP_Resource audio_encoder,uint32_t channels,PP_AudioBuffer_SampleRate input_sample_rate,PP_AudioBuffer_SampleSize input_sample_size,PP_AudioProfile output_profile,uint32_t initial_bitrate,PP_HardwareAcceleration acceleration,struct PP_CompletionCallback callback)48 int32_t Initialize(PP_Resource audio_encoder,
49                    uint32_t channels,
50                    PP_AudioBuffer_SampleRate input_sample_rate,
51                    PP_AudioBuffer_SampleSize input_sample_size,
52                    PP_AudioProfile output_profile,
53                    uint32_t initial_bitrate,
54                    PP_HardwareAcceleration acceleration,
55                    struct PP_CompletionCallback callback) {
56   VLOG(4) << "PPB_AudioEncoder::Initialize()";
57   EnterResource<PPB_AudioEncoder_API> enter(audio_encoder, callback, true);
58   if (enter.failed())
59     return enter.retval();
60   return enter.SetResult(enter.object()->Initialize(
61       channels, input_sample_rate, input_sample_size, output_profile,
62       initial_bitrate, acceleration, enter.callback()));
63 }
64 
GetNumberOfSamples(PP_Resource audio_encoder)65 int32_t GetNumberOfSamples(PP_Resource audio_encoder) {
66   VLOG(4) << "PPB_AudioEncoder::GetNumberOfSamples()";
67   EnterResource<PPB_AudioEncoder_API> enter(audio_encoder, true);
68   if (enter.failed())
69     return enter.retval();
70   return enter.object()->GetNumberOfSamples();
71 }
72 
GetBuffer(PP_Resource audio_encoder,PP_Resource * audio_buffer,struct PP_CompletionCallback callback)73 int32_t GetBuffer(PP_Resource audio_encoder,
74                   PP_Resource* audio_buffer,
75                   struct PP_CompletionCallback callback) {
76   VLOG(4) << "PPB_AudioEncoder::GetBuffer()";
77   EnterResource<PPB_AudioEncoder_API> enter(audio_encoder, callback, true);
78   if (enter.failed())
79     return enter.retval();
80   return enter.SetResult(
81       enter.object()->GetBuffer(audio_buffer, enter.callback()));
82 }
83 
Encode(PP_Resource audio_encoder,PP_Resource audio_buffer,struct PP_CompletionCallback callback)84 int32_t Encode(PP_Resource audio_encoder,
85                PP_Resource audio_buffer,
86                struct PP_CompletionCallback callback) {
87   VLOG(4) << "PPB_AudioEncoder::Encode()";
88   EnterResource<PPB_AudioEncoder_API> enter(audio_encoder, callback, true);
89   if (enter.failed())
90     return enter.retval();
91   return enter.SetResult(
92       enter.object()->Encode(audio_buffer, enter.callback()));
93 }
94 
GetBitstreamBuffer(PP_Resource audio_encoder,struct PP_AudioBitstreamBuffer * bitstream_buffer,struct PP_CompletionCallback callback)95 int32_t GetBitstreamBuffer(PP_Resource audio_encoder,
96                            struct PP_AudioBitstreamBuffer* bitstream_buffer,
97                            struct PP_CompletionCallback callback) {
98   VLOG(4) << "PPB_AudioEncoder::GetBitstreamBuffer()";
99   EnterResource<PPB_AudioEncoder_API> enter(audio_encoder, callback, true);
100   if (enter.failed())
101     return enter.retval();
102   return enter.SetResult(
103       enter.object()->GetBitstreamBuffer(bitstream_buffer, enter.callback()));
104 }
105 
RecycleBitstreamBuffer(PP_Resource audio_encoder,const struct PP_AudioBitstreamBuffer * bitstream_buffer)106 void RecycleBitstreamBuffer(
107     PP_Resource audio_encoder,
108     const struct PP_AudioBitstreamBuffer* bitstream_buffer) {
109   VLOG(4) << "PPB_AudioEncoder::RecycleBitstreamBuffer()";
110   EnterResource<PPB_AudioEncoder_API> enter(audio_encoder, true);
111   if (enter.failed())
112     return;
113   enter.object()->RecycleBitstreamBuffer(bitstream_buffer);
114 }
115 
RequestBitrateChange(PP_Resource audio_encoder,uint32_t bitrate)116 void RequestBitrateChange(PP_Resource audio_encoder, uint32_t bitrate) {
117   VLOG(4) << "PPB_AudioEncoder::RequestBitrateChange()";
118   EnterResource<PPB_AudioEncoder_API> enter(audio_encoder, true);
119   if (enter.failed())
120     return;
121   enter.object()->RequestBitrateChange(bitrate);
122 }
123 
Close(PP_Resource audio_encoder)124 void Close(PP_Resource audio_encoder) {
125   VLOG(4) << "PPB_AudioEncoder::Close()";
126   EnterResource<PPB_AudioEncoder_API> enter(audio_encoder, true);
127   if (enter.failed())
128     return;
129   enter.object()->Close();
130 }
131 
132 const PPB_AudioEncoder_0_1 g_ppb_audioencoder_thunk_0_1 = {
133     &Create,
134     &IsAudioEncoder,
135     &GetSupportedProfiles,
136     &Initialize,
137     &GetNumberOfSamples,
138     &GetBuffer,
139     &Encode,
140     &GetBitstreamBuffer,
141     &RecycleBitstreamBuffer,
142     &RequestBitrateChange,
143     &Close};
144 
145 }  // namespace
146 
GetPPB_AudioEncoder_0_1_Thunk()147 PPAPI_THUNK_EXPORT const PPB_AudioEncoder_0_1* GetPPB_AudioEncoder_0_1_Thunk() {
148   return &g_ppb_audioencoder_thunk_0_1;
149 }
150 
151 }  // namespace thunk
152 }  // namespace ppapi
153