Lines Matching defs:io

191 static int CustomPut(const VP8Io* io) {
192 Params *p = (Params*)io->opaque;
193 const int w = io->width;
194 const int mb_h = io->mb_h;
196 assert(!(io->mb_y & 1));
203 uint8_t* const y_dst = p->output + io->mb_y * p->stride;
204 uint8_t* const u_dst = p->u + (io->mb_y >> 1) * p->u_stride;
205 uint8_t* const v_dst = p->v + (io->mb_y >> 1) * p->v_stride;
208 memcpy(y_dst + j * p->stride, io->y + j * io->y_stride, w);
211 memcpy(u_dst + j * p->u_stride, io->u + j * io->uv_stride, uv_w);
212 memcpy(v_dst + j * p->v_stride, io->v + j * io->uv_stride, uv_w);
215 uint8_t* dst = p->output + io->mb_y * p->stride;
216 if (io->fancy_upscaling) {
218 const uint8_t* cur_y = io->y;
219 const uint8_t* cur_u = io->u;
220 const uint8_t* cur_v = io->v;
223 int y = io->mb_y;
224 int y_end = io->mb_y + io->mb_h;
238 cur_u += io->uv_stride;
239 cur_v += io->uv_stride;
241 cur_y += 2 * io->y_stride;
242 UpscaleLinePair(cur_y - io->y_stride, cur_y,
247 cur_y += io->y_stride;
248 if (y_end != io->height) {
267 const uint8_t* y_src = io->y + j * io->y_stride;
271 const int u = io->u[(j / 2) * io->uv_stride + (i / 2)];
272 const int v = io->v[(j / 2) * io->uv_stride + (i / 2)];
292 static int CustomSetup(VP8Io* io) {
294 Params *p = (Params*)io->opaque;
297 const int uv_width = (io->width + 1) >> 1;
298 p->top_y = (uint8_t*)malloc(io->width + 2 * uv_width);
302 p->top_u = p->top_y + io->width;
304 io->fancy_upscaling = 1; // activate fancy upscaling
310 static void CustomTeardown(const VP8Io* io) {
312 Params *p = (Params*)io->opaque;
328 VP8Io io;
335 VP8InitIo(&io);
336 io.data = data;
337 io.data_size = data_size;
340 io.opaque = params;
341 io.put = CustomPut;
342 io.setup = CustomSetup;
343 io.teardown = CustomTeardown;
345 if (!VP8GetHeaders(dec, &io)) {
351 ok &= (params->stride * io.height <= output_size);
353 ok &= (params->stride >= io.width * 3);
355 ok &= (params->stride >= io.width * 4);
358 const int u_size = params->u_stride * ((io.height + 1) / 2);
359 const int v_size = params->v_stride * ((io.height + 1) / 2);
360 ok &= (params->stride >= io.width);
361 ok &= (params->u_stride >= (io.width + 1) / 2) &&
362 (params->v_stride >= (io.width + 1) / 2);
374 ok = VP8Decode(dec, &io);