ash: Update app list layout:
[chromium-blink-merge.git] / ppapi / thunk / ppb_video_decoder_thunk.cc
blob3895c71d907332dc7b01303363aba655a7b0a156
1 // Copyright (c) 2012 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.
5 #include "ppapi/c/pp_errors.h"
6 #include "ppapi/thunk/enter.h"
7 #include "ppapi/thunk/thunk.h"
8 #include "ppapi/thunk/ppb_video_decoder_api.h"
9 #include "ppapi/thunk/resource_creation_api.h"
11 namespace ppapi {
12 namespace thunk {
14 namespace {
16 typedef EnterResource<PPB_VideoDecoder_API> EnterVideoDecoder;
18 PP_Resource Create(PP_Instance instance,
19 PP_Resource graphics_3d,
20 PP_VideoDecoder_Profile profile) {
21 EnterFunction<ResourceCreationAPI> enter(instance, true);
22 if (enter.failed())
23 return 0;
24 return enter.functions()->CreateVideoDecoder(instance, graphics_3d, profile);
27 PP_Bool IsVideoDecoder(PP_Resource resource) {
28 EnterVideoDecoder enter(resource, false);
29 return PP_FromBool(enter.succeeded());
32 int32_t Decode(PP_Resource video_decoder,
33 const PP_VideoBitstreamBuffer_Dev* bitstream_buffer,
34 PP_CompletionCallback callback) {
35 EnterVideoDecoder enter(video_decoder, callback, true);
36 if (enter.failed())
37 return enter.retval();
38 return enter.SetResult(enter.object()->Decode(bitstream_buffer, callback));
41 void AssignPictureBuffers(PP_Resource video_decoder,
42 uint32_t no_of_buffers,
43 const PP_PictureBuffer_Dev* buffers) {
44 EnterVideoDecoder enter(video_decoder, true);
45 if (enter.succeeded())
46 enter.object()->AssignPictureBuffers(no_of_buffers, buffers);
49 void ReusePictureBuffer(PP_Resource video_decoder, int32_t picture_buffer_id) {
50 EnterVideoDecoder enter(video_decoder, true);
51 if (enter.succeeded())
52 enter.object()->ReusePictureBuffer(picture_buffer_id);
55 int32_t Flush(PP_Resource video_decoder, PP_CompletionCallback callback) {
56 EnterVideoDecoder enter(video_decoder, callback, true);
57 if (enter.failed())
58 return enter.retval();
59 return enter.SetResult(enter.object()->Flush(callback));
62 int32_t Reset(PP_Resource video_decoder,
63 PP_CompletionCallback callback) {
64 EnterVideoDecoder enter(video_decoder, callback, true);
65 if (enter.failed())
66 return enter.retval();
67 return enter.SetResult(enter.object()->Reset(callback));
70 void Destroy(PP_Resource video_decoder) {
71 EnterVideoDecoder enter(video_decoder, true);
72 if (enter.succeeded())
73 enter.object()->Destroy();
76 const PPB_VideoDecoder_Dev g_ppb_videodecoder_thunk = {
77 &Create,
78 &IsVideoDecoder,
79 &Decode,
80 &AssignPictureBuffers,
81 &ReusePictureBuffer,
82 &Flush,
83 &Reset,
84 &Destroy
87 } // namespace
89 const PPB_VideoDecoder_Dev_0_16* GetPPB_VideoDecoder_Dev_0_16_Thunk() {
90 return &g_ppb_videodecoder_thunk;
93 } // namespace thunk
94 } // namespace ppapi