Home | History | Annotate | Download | only in thunk
      1 // Copyright (c) 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_video_decoder.idl modified Tue May  6 05:06:35 2014.
      6 
      7 #include "ppapi/c/pp_completion_callback.h"
      8 #include "ppapi/c/pp_errors.h"
      9 #include "ppapi/c/ppb_video_decoder.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_video_decoder_api.h"
     14 
     15 namespace ppapi {
     16 namespace thunk {
     17 
     18 namespace {
     19 
     20 PP_Resource Create(PP_Instance instance) {
     21   VLOG(4) << "PPB_VideoDecoder::Create()";
     22   EnterResourceCreation enter(instance);
     23   if (enter.failed())
     24     return 0;
     25   return enter.functions()->CreateVideoDecoder(instance);
     26 }
     27 
     28 PP_Bool IsVideoDecoder(PP_Resource resource) {
     29   VLOG(4) << "PPB_VideoDecoder::IsVideoDecoder()";
     30   EnterResource<PPB_VideoDecoder_API> enter(resource, false);
     31   return PP_FromBool(enter.succeeded());
     32 }
     33 
     34 int32_t Initialize(PP_Resource video_decoder,
     35                    PP_Resource graphics3d_context,
     36                    PP_VideoProfile profile,
     37                    PP_Bool allow_software_fallback,
     38                    struct PP_CompletionCallback callback) {
     39   VLOG(4) << "PPB_VideoDecoder::Initialize()";
     40   EnterResource<PPB_VideoDecoder_API> enter(video_decoder, callback, true);
     41   if (enter.failed())
     42     return enter.retval();
     43   return enter.SetResult(enter.object()->Initialize(graphics3d_context,
     44                                                     profile,
     45                                                     allow_software_fallback,
     46                                                     enter.callback()));
     47 }
     48 
     49 int32_t Decode(PP_Resource video_decoder,
     50                uint32_t decode_id,
     51                uint32_t size,
     52                const void* buffer,
     53                struct PP_CompletionCallback callback) {
     54   VLOG(4) << "PPB_VideoDecoder::Decode()";
     55   EnterResource<PPB_VideoDecoder_API> enter(video_decoder, callback, true);
     56   if (enter.failed())
     57     return enter.retval();
     58   return enter.SetResult(enter.object()->Decode(decode_id,
     59                                                 size,
     60                                                 buffer,
     61                                                 enter.callback()));
     62 }
     63 
     64 int32_t GetPicture(PP_Resource video_decoder,
     65                    struct PP_VideoPicture* picture,
     66                    struct PP_CompletionCallback callback) {
     67   VLOG(4) << "PPB_VideoDecoder::GetPicture()";
     68   EnterResource<PPB_VideoDecoder_API> enter(video_decoder, callback, true);
     69   if (enter.failed())
     70     return enter.retval();
     71   return enter.SetResult(enter.object()->GetPicture(picture, enter.callback()));
     72 }
     73 
     74 void RecyclePicture(PP_Resource video_decoder,
     75                     const struct PP_VideoPicture* picture) {
     76   VLOG(4) << "PPB_VideoDecoder::RecyclePicture()";
     77   EnterResource<PPB_VideoDecoder_API> enter(video_decoder, true);
     78   if (enter.failed())
     79     return;
     80   enter.object()->RecyclePicture(picture);
     81 }
     82 
     83 int32_t Flush(PP_Resource video_decoder,
     84               struct PP_CompletionCallback callback) {
     85   VLOG(4) << "PPB_VideoDecoder::Flush()";
     86   EnterResource<PPB_VideoDecoder_API> enter(video_decoder, callback, true);
     87   if (enter.failed())
     88     return enter.retval();
     89   return enter.SetResult(enter.object()->Flush(enter.callback()));
     90 }
     91 
     92 int32_t Reset(PP_Resource video_decoder,
     93               struct PP_CompletionCallback callback) {
     94   VLOG(4) << "PPB_VideoDecoder::Reset()";
     95   EnterResource<PPB_VideoDecoder_API> enter(video_decoder, callback, true);
     96   if (enter.failed())
     97     return enter.retval();
     98   return enter.SetResult(enter.object()->Reset(enter.callback()));
     99 }
    100 
    101 const PPB_VideoDecoder_0_1 g_ppb_videodecoder_thunk_0_1 = {
    102   &Create,
    103   &IsVideoDecoder,
    104   &Initialize,
    105   &Decode,
    106   &GetPicture,
    107   &RecyclePicture,
    108   &Flush,
    109   &Reset
    110 };
    111 
    112 }  // namespace
    113 
    114 PPAPI_THUNK_EXPORT const PPB_VideoDecoder_0_1*
    115     GetPPB_VideoDecoder_0_1_Thunk() {
    116   return &g_ppb_videodecoder_thunk_0_1;
    117 }
    118 
    119 }  // namespace thunk
    120 }  // namespace ppapi
    121