Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(114)

Side by Side Diff: ppapi/cpp/video_decoder.cc

Issue 1207043002: Introduce a client minimum picture pool size (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Moved constant to shared header, validate min_picture_size now in resource proxy as well as host co… Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « ppapi/cpp/video_decoder.h ('k') | ppapi/examples/video_decode/video_decode.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2014 The Chromium Authors. All rights reserved. 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 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/cpp/video_decoder.h" 5 #include "ppapi/cpp/video_decoder.h"
6 6
7 #include "ppapi/c/pp_errors.h" 7 #include "ppapi/c/pp_errors.h"
8 #include "ppapi/c/ppb_video_decoder.h" 8 #include "ppapi/c/ppb_video_decoder.h"
9 #include "ppapi/cpp/completion_callback.h" 9 #include "ppapi/cpp/completion_callback.h"
10 #include "ppapi/cpp/instance_handle.h" 10 #include "ppapi/cpp/instance_handle.h"
(...skipping 12 matching lines...) Expand all
23 template <> 23 template <>
24 const char* interface_name<PPB_VideoDecoder_0_2>() { 24 const char* interface_name<PPB_VideoDecoder_0_2>() {
25 return PPB_VIDEODECODER_INTERFACE_0_2; 25 return PPB_VIDEODECODER_INTERFACE_0_2;
26 } 26 }
27 27
28 template <> 28 template <>
29 const char* interface_name<PPB_VideoDecoder_1_0>() { 29 const char* interface_name<PPB_VideoDecoder_1_0>() {
30 return PPB_VIDEODECODER_INTERFACE_1_0; 30 return PPB_VIDEODECODER_INTERFACE_1_0;
31 } 31 }
32 32
33 template <>
34 const char* interface_name<PPB_VideoDecoder_1_1>() {
35 return PPB_VIDEODECODER_INTERFACE_1_1;
36 }
37
33 // This struct is used to adapt CompletionCallbackWithOutput<PP_VideoPicture> to 38 // This struct is used to adapt CompletionCallbackWithOutput<PP_VideoPicture> to
34 // the pre-1.0 APIs, which return PP_VideoPicture_0_1. This struct is allocated 39 // the pre-1.0 APIs, which return PP_VideoPicture_0_1. This struct is allocated
35 // on the heap, and deleted in CallbackConverter. 40 // on the heap, and deleted in CallbackConverter.
36 struct CallbackData_0_1 { 41 struct CallbackData_0_1 {
37 explicit CallbackData_0_1( 42 explicit CallbackData_0_1(
38 const CompletionCallbackWithOutput<PP_VideoPicture>& cc) 43 const CompletionCallbackWithOutput<PP_VideoPicture>& cc)
39 : original_picture(cc.output()), 44 : original_picture(cc.output()),
40 original_callback(cc.pp_completion_callback()) {} 45 original_callback(cc.pp_completion_callback()) {}
41 PP_VideoPicture_0_1 picture; 46 PP_VideoPicture_0_1 picture;
42 PP_VideoPicture* original_picture; 47 PP_VideoPicture* original_picture;
(...skipping 19 matching lines...) Expand all
62 PP_RunCompletionCallback(&data->original_callback, result); 67 PP_RunCompletionCallback(&data->original_callback, result);
63 delete data; 68 delete data;
64 } 69 }
65 70
66 } // namespace 71 } // namespace
67 72
68 VideoDecoder::VideoDecoder() { 73 VideoDecoder::VideoDecoder() {
69 } 74 }
70 75
71 VideoDecoder::VideoDecoder(const InstanceHandle& instance) { 76 VideoDecoder::VideoDecoder(const InstanceHandle& instance) {
72 if (has_interface<PPB_VideoDecoder_1_0>()) { 77 if (has_interface<PPB_VideoDecoder_1_1>()) {
78 PassRefFromConstructor(
79 get_interface<PPB_VideoDecoder_1_1>()->Create(instance.pp_instance()));
80 } else if (has_interface<PPB_VideoDecoder_1_0>()) {
73 PassRefFromConstructor( 81 PassRefFromConstructor(
74 get_interface<PPB_VideoDecoder_1_0>()->Create(instance.pp_instance())); 82 get_interface<PPB_VideoDecoder_1_0>()->Create(instance.pp_instance()));
75 } else if (has_interface<PPB_VideoDecoder_0_2>()) { 83 } else if (has_interface<PPB_VideoDecoder_0_2>()) {
76 PassRefFromConstructor( 84 PassRefFromConstructor(
77 get_interface<PPB_VideoDecoder_0_2>()->Create(instance.pp_instance())); 85 get_interface<PPB_VideoDecoder_0_2>()->Create(instance.pp_instance()));
78 } else if (has_interface<PPB_VideoDecoder_0_1>()) { 86 } else if (has_interface<PPB_VideoDecoder_0_1>()) {
79 PassRefFromConstructor( 87 PassRefFromConstructor(
80 get_interface<PPB_VideoDecoder_0_1>()->Create(instance.pp_instance())); 88 get_interface<PPB_VideoDecoder_0_1>()->Create(instance.pp_instance()));
81 } 89 }
82 } 90 }
83 91
84 VideoDecoder::VideoDecoder(const VideoDecoder& other) : Resource(other) { 92 VideoDecoder::VideoDecoder(const VideoDecoder& other) : Resource(other) {
85 } 93 }
86 94
87 int32_t VideoDecoder::Initialize(const Graphics3D& context, 95 int32_t VideoDecoder::Initialize(const Graphics3D& context,
88 PP_VideoProfile profile, 96 PP_VideoProfile profile,
89 PP_HardwareAcceleration acceleration, 97 PP_HardwareAcceleration acceleration,
98 uint32_t min_picture_count,
90 const CompletionCallback& cc) { 99 const CompletionCallback& cc) {
100 if (has_interface<PPB_VideoDecoder_1_1>()) {
101 return get_interface<PPB_VideoDecoder_1_1>()->Initialize(
102 pp_resource(), context.pp_resource(), profile, acceleration,
103 min_picture_count, cc.pp_completion_callback());
104 }
91 if (has_interface<PPB_VideoDecoder_1_0>()) { 105 if (has_interface<PPB_VideoDecoder_1_0>()) {
106 if (min_picture_count != 0)
107 return cc.MayForce(PP_ERROR_NOTSUPPORTED);
92 return get_interface<PPB_VideoDecoder_1_0>()->Initialize( 108 return get_interface<PPB_VideoDecoder_1_0>()->Initialize(
93 pp_resource(), context.pp_resource(), profile, acceleration, 109 pp_resource(), context.pp_resource(), profile, acceleration,
94 cc.pp_completion_callback()); 110 cc.pp_completion_callback());
95 } 111 }
96 if (has_interface<PPB_VideoDecoder_0_2>()) { 112 if (has_interface<PPB_VideoDecoder_0_2>()) {
113 if (min_picture_count != 0)
114 return cc.MayForce(PP_ERROR_NOTSUPPORTED);
97 return get_interface<PPB_VideoDecoder_0_2>()->Initialize( 115 return get_interface<PPB_VideoDecoder_0_2>()->Initialize(
98 pp_resource(), context.pp_resource(), profile, acceleration, 116 pp_resource(), context.pp_resource(), profile, acceleration,
99 cc.pp_completion_callback()); 117 cc.pp_completion_callback());
100 } 118 }
101 if (has_interface<PPB_VideoDecoder_0_1>()) { 119 if (has_interface<PPB_VideoDecoder_0_1>()) {
120 if (min_picture_count != 0)
121 return cc.MayForce(PP_ERROR_NOTSUPPORTED);
102 if (acceleration == PP_HARDWAREACCELERATION_NONE) 122 if (acceleration == PP_HARDWAREACCELERATION_NONE)
103 return cc.MayForce(PP_ERROR_NOTSUPPORTED); 123 return cc.MayForce(PP_ERROR_NOTSUPPORTED);
104 return get_interface<PPB_VideoDecoder_0_1>()->Initialize( 124 return get_interface<PPB_VideoDecoder_0_1>()->Initialize(
105 pp_resource(), 125 pp_resource(),
106 context.pp_resource(), 126 context.pp_resource(),
107 profile, 127 profile,
108 acceleration == PP_HARDWAREACCELERATION_WITHFALLBACK 128 acceleration == PP_HARDWAREACCELERATION_WITHFALLBACK
109 ? PP_TRUE 129 ? PP_TRUE
110 : PP_FALSE, 130 : PP_FALSE,
111 cc.pp_completion_callback()); 131 cc.pp_completion_callback());
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
194 pp_resource(), cc.pp_completion_callback()); 214 pp_resource(), cc.pp_completion_callback());
195 } 215 }
196 if (has_interface<PPB_VideoDecoder_0_1>()) { 216 if (has_interface<PPB_VideoDecoder_0_1>()) {
197 return get_interface<PPB_VideoDecoder_0_1>()->Reset( 217 return get_interface<PPB_VideoDecoder_0_1>()->Reset(
198 pp_resource(), cc.pp_completion_callback()); 218 pp_resource(), cc.pp_completion_callback());
199 } 219 }
200 return cc.MayForce(PP_ERROR_NOINTERFACE); 220 return cc.MayForce(PP_ERROR_NOINTERFACE);
201 } 221 }
202 222
203 } // namespace pp 223 } // namespace pp
OLDNEW
« no previous file with comments | « ppapi/cpp/video_decoder.h ('k') | ppapi/examples/video_decode/video_decode.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698