Lines Matching defs:frame

281 static int decode_speedhq_border(const SHQContext *s, GetBitContext *gb, AVFrame *frame, int field_number, int line_stride)
283 int linesize_y = frame->linesize[0] * line_stride;
284 int linesize_cb = frame->linesize[1] * line_stride;
285 int linesize_cr = frame->linesize[2] * line_stride;
290 linesize_a = frame->linesize[3] * line_stride;
292 for (int y = 0; y < frame->height; y += 16 * line_stride) {
296 int x = frame->width - 8;
298 dest_y = frame->data[0] + frame->linesize[0] * (y + field_number) + x;
300 dest_cb = frame->data[1] + frame->linesize[1] * (y/2 + field_number) + x / 2;
301 dest_cr = frame->data[2] + frame->linesize[2] * (y/2 + field_number) + x / 2;
304 dest_cb = frame->data[1] + frame->linesize[1] * (y + field_number) + x / 2;
305 dest_cr = frame->data[2] + frame->linesize[2] * (y + field_number) + x / 2;
309 dest_a = frame->data[3] + frame->linesize[3] * (y + field_number) + x;
354 static int decode_speedhq_field(const SHQContext *s, const uint8_t *buf, int buf_size, AVFrame *frame, int field_number, int start, int end, int line_stride)
357 int linesize_y = frame->linesize[0] * line_stride;
358 int linesize_cb = frame->linesize[1] * line_stride;
359 int linesize_cr = frame->linesize[2] * line_stride;
364 linesize_a = frame->linesize[3] * line_stride;
392 for (y = slice_number * 16 * line_stride; y < frame->height; y += line_stride * 64) {
399 dest_y = frame->data[0] + frame->linesize[0] * (y + field_number);
401 dest_cb = frame->data[1] + frame->linesize[1] * (y/2 + field_number);
402 dest_cr = frame->data[2] + frame->linesize[2] * (y/2 + field_number);
404 dest_cb = frame->data[1] + frame->linesize[1] * (y + field_number);
405 dest_cr = frame->data[2] + frame->linesize[2] * (y + field_number);
408 dest_a = frame->data[3] + frame->linesize[3] * (y + field_number);
411 for (x = 0; x < frame->width - 8 * (s->subsampling != SHQ_SUBSAMPLING_444); x += 16) {
480 if (s->subsampling != SHQ_SUBSAMPLING_444 && (frame->width & 15))
481 return decode_speedhq_border(s, &gb, frame, field_number, line_stride);
492 static int speedhq_decode_frame(AVCodecContext *avctx, AVFrame *frame,
522 if ((ret = ff_get_buffer(avctx, frame, 0)) < 0) {
525 frame->key_frame = 1;
532 * frame as a whole, or of the field. The former would make
537 if ((ret = decode_speedhq_field(s, buf, buf_size, frame, 0, 4, buf_size, 1)) < 0)
540 if ((ret = decode_speedhq_field(s, buf, buf_size, frame, 0, 4, second_field_offset, 2)) < 0)
542 if ((ret = decode_speedhq_field(s, buf, buf_size, frame, 1, second_field_offset, buf_size, 2)) < 0)