ppb_audio_encoder_thunk.cc 5.1 KB

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