| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "ppapi/c/pp_errors.h" | 5 #include "ppapi/c/pp_errors.h" |
| 6 #include "ppapi/thunk/common.h" | |
| 7 #include "ppapi/thunk/enter.h" | 6 #include "ppapi/thunk/enter.h" |
| 8 #include "ppapi/thunk/thunk.h" | 7 #include "ppapi/thunk/thunk.h" |
| 9 #include "ppapi/thunk/ppb_video_decoder_api.h" | 8 #include "ppapi/thunk/ppb_video_decoder_api.h" |
| 10 #include "ppapi/thunk/resource_creation_api.h" | 9 #include "ppapi/thunk/resource_creation_api.h" |
| 11 | 10 |
| 12 namespace ppapi { | 11 namespace ppapi { |
| 13 namespace thunk { | 12 namespace thunk { |
| 14 | 13 |
| 15 namespace { | 14 namespace { |
| 16 | 15 |
| 17 typedef EnterResource<PPB_VideoDecoder_API> EnterVideoDecoder; | 16 typedef EnterResource<PPB_VideoDecoder_API> EnterVideoDecoder; |
| 18 | 17 |
| 19 PP_Resource Create(PP_Instance instance, | 18 PP_Resource Create(PP_Instance instance, |
| 20 PP_Resource graphics_3d, | 19 PP_Resource graphics_3d, |
| 21 PP_VideoDecoder_Profile profile) { | 20 PP_VideoDecoder_Profile profile) { |
| 22 EnterFunction<ResourceCreationAPI> enter(instance, true); | 21 EnterFunction<ResourceCreationAPI> enter(instance, true); |
| 23 if (enter.failed()) | 22 if (enter.failed()) |
| 24 return 0; | 23 return 0; |
| 25 return enter.functions()->CreateVideoDecoder(instance, graphics_3d, profile); | 24 return enter.functions()->CreateVideoDecoder(instance, graphics_3d, profile); |
| 26 } | 25 } |
| 27 | 26 |
| 28 PP_Bool IsVideoDecoder(PP_Resource resource) { | 27 PP_Bool IsVideoDecoder(PP_Resource resource) { |
| 29 EnterVideoDecoder enter(resource, false); | 28 EnterVideoDecoder enter(resource, false); |
| 30 return PP_FromBool(enter.succeeded()); | 29 return PP_FromBool(enter.succeeded()); |
| 31 } | 30 } |
| 32 | 31 |
| 33 int32_t Decode(PP_Resource video_decoder, | 32 int32_t Decode(PP_Resource video_decoder, |
| 34 const PP_VideoBitstreamBuffer_Dev* bitstream_buffer, | 33 const PP_VideoBitstreamBuffer_Dev* bitstream_buffer, |
| 35 PP_CompletionCallback callback) { | 34 PP_CompletionCallback callback) { |
| 36 EnterVideoDecoder enter(video_decoder, true); | 35 EnterVideoDecoder enter(video_decoder, callback, true); |
| 37 if (enter.failed()) | 36 if (enter.failed()) |
| 38 return MayForceCallback(callback, PP_ERROR_BADRESOURCE); | 37 return enter.retval(); |
| 39 int32_t result = enter.object()->Decode(bitstream_buffer, callback); | 38 return enter.SetResult(enter.object()->Decode(bitstream_buffer, callback)); |
| 40 return MayForceCallback(callback, result); | |
| 41 } | 39 } |
| 42 | 40 |
| 43 void AssignPictureBuffers(PP_Resource video_decoder, | 41 void AssignPictureBuffers(PP_Resource video_decoder, |
| 44 uint32_t no_of_buffers, | 42 uint32_t no_of_buffers, |
| 45 const PP_PictureBuffer_Dev* buffers) { | 43 const PP_PictureBuffer_Dev* buffers) { |
| 46 EnterVideoDecoder enter(video_decoder, true); | 44 EnterVideoDecoder enter(video_decoder, true); |
| 47 if (enter.succeeded()) | 45 if (enter.succeeded()) |
| 48 enter.object()->AssignPictureBuffers(no_of_buffers, buffers); | 46 enter.object()->AssignPictureBuffers(no_of_buffers, buffers); |
| 49 } | 47 } |
| 50 | 48 |
| 51 void ReusePictureBuffer(PP_Resource video_decoder, int32_t picture_buffer_id) { | 49 void ReusePictureBuffer(PP_Resource video_decoder, int32_t picture_buffer_id) { |
| 52 EnterVideoDecoder enter(video_decoder, true); | 50 EnterVideoDecoder enter(video_decoder, true); |
| 53 if (enter.succeeded()) | 51 if (enter.succeeded()) |
| 54 enter.object()->ReusePictureBuffer(picture_buffer_id); | 52 enter.object()->ReusePictureBuffer(picture_buffer_id); |
| 55 } | 53 } |
| 56 | 54 |
| 57 int32_t Flush(PP_Resource video_decoder, PP_CompletionCallback callback) { | 55 int32_t Flush(PP_Resource video_decoder, PP_CompletionCallback callback) { |
| 58 EnterVideoDecoder enter(video_decoder, true); | 56 EnterVideoDecoder enter(video_decoder, callback, true); |
| 59 if (enter.failed()) | 57 if (enter.failed()) |
| 60 return MayForceCallback(callback, PP_ERROR_BADRESOURCE); | 58 return enter.retval(); |
| 61 int32_t result = enter.object()->Flush(callback); | 59 return enter.SetResult(enter.object()->Flush(callback)); |
| 62 return MayForceCallback(callback, result); | |
| 63 } | 60 } |
| 64 | 61 |
| 65 int32_t Reset(PP_Resource video_decoder, | 62 int32_t Reset(PP_Resource video_decoder, |
| 66 PP_CompletionCallback callback) { | 63 PP_CompletionCallback callback) { |
| 67 EnterVideoDecoder enter(video_decoder, true); | 64 EnterVideoDecoder enter(video_decoder, callback, true); |
| 68 if (enter.failed()) | 65 if (enter.failed()) |
| 69 return MayForceCallback(callback, PP_ERROR_BADRESOURCE); | 66 return enter.retval(); |
| 70 int32_t result = enter.object()->Reset(callback); | 67 return enter.SetResult(enter.object()->Reset(callback)); |
| 71 return MayForceCallback(callback, result); | |
| 72 } | 68 } |
| 73 | 69 |
| 74 void Destroy(PP_Resource video_decoder) { | 70 void Destroy(PP_Resource video_decoder) { |
| 75 EnterVideoDecoder enter(video_decoder, true); | 71 EnterVideoDecoder enter(video_decoder, true); |
| 76 if (enter.succeeded()) | 72 if (enter.succeeded()) |
| 77 enter.object()->Destroy(); | 73 enter.object()->Destroy(); |
| 78 } | 74 } |
| 79 | 75 |
| 80 const PPB_VideoDecoder_Dev g_ppb_videodecoder_thunk = { | 76 const PPB_VideoDecoder_Dev g_ppb_videodecoder_thunk = { |
| 81 &Create, | 77 &Create, |
| 82 &IsVideoDecoder, | 78 &IsVideoDecoder, |
| 83 &Decode, | 79 &Decode, |
| 84 &AssignPictureBuffers, | 80 &AssignPictureBuffers, |
| 85 &ReusePictureBuffer, | 81 &ReusePictureBuffer, |
| 86 &Flush, | 82 &Flush, |
| 87 &Reset, | 83 &Reset, |
| 88 &Destroy | 84 &Destroy |
| 89 }; | 85 }; |
| 90 | 86 |
| 91 } // namespace | 87 } // namespace |
| 92 | 88 |
| 93 const PPB_VideoDecoder_Dev_0_16* GetPPB_VideoDecoder_Dev_0_16_Thunk() { | 89 const PPB_VideoDecoder_Dev_0_16* GetPPB_VideoDecoder_Dev_0_16_Thunk() { |
| 94 return &g_ppb_videodecoder_thunk; | 90 return &g_ppb_videodecoder_thunk; |
| 95 } | 91 } |
| 96 | 92 |
| 97 } // namespace thunk | 93 } // namespace thunk |
| 98 } // namespace ppapi | 94 } // namespace ppapi |
| OLD | NEW |