comparison vp56.c @ 5715:fbd55dbbf809 libavcodec

cosmetic: indent
author aurel
date Tue, 25 Sep 2007 19:16:38 +0000
parents 314be1cfdcb0
children 7577e3036290
comparison
equal deleted inserted replaced
5714:314be1cfdcb0 5715:fbd55dbbf809
508 alpha_offset = bytestream_get_be24(&buf); 508 alpha_offset = bytestream_get_be24(&buf);
509 buf_size -= 3; 509 buf_size -= 3;
510 } 510 }
511 511
512 for (is_alpha=0; is_alpha < 1+s->has_alpha; is_alpha++) { 512 for (is_alpha=0; is_alpha < 1+s->has_alpha; is_alpha++) {
513 int mb_row, mb_col, mb_row_flip, mb_offset = 0; 513 int mb_row, mb_col, mb_row_flip, mb_offset = 0;
514 int block, y, uv, stride_y, stride_uv; 514 int block, y, uv, stride_y, stride_uv;
515 int golden_frame = 0; 515 int golden_frame = 0;
516 int res; 516 int res;
517 517
518 s->modelp = &s->models[is_alpha]; 518 s->modelp = &s->models[is_alpha];
519 519
520 res = s->parse_header(s, buf, buf_size, &golden_frame); 520 res = s->parse_header(s, buf, buf_size, &golden_frame);
521 if (!res) 521 if (!res)
522 return -1;
523
524 if (!is_alpha) {
525 p->reference = 1;
526 if (avctx->get_buffer(avctx, p) < 0) {
527 av_log(avctx, AV_LOG_ERROR, "get_buffer() failed\n");
528 return -1;
529 }
530
531 if (res == 2)
532 if (vp56_size_changed(avctx)) {
533 avctx->release_buffer(avctx, p);
534 return -1; 522 return -1;
535 } 523
536 } 524 if (!is_alpha) {
537 525 p->reference = 1;
538 if (p->key_frame) { 526 if (avctx->get_buffer(avctx, p) < 0) {
539 p->pict_type = FF_I_TYPE; 527 av_log(avctx, AV_LOG_ERROR, "get_buffer() failed\n");
540 s->default_models_init(s); 528 return -1;
541 for (block=0; block<s->mb_height*s->mb_width; block++) 529 }
542 s->macroblocks[block].type = VP56_MB_INTRA; 530
543 } else { 531 if (res == 2)
544 p->pict_type = FF_P_TYPE; 532 if (vp56_size_changed(avctx)) {
545 vp56_parse_mb_type_models(s); 533 avctx->release_buffer(avctx, p);
546 s->parse_vector_models(s); 534 return -1;
547 s->mb_type = VP56_MB_INTER_NOVEC_PF; 535 }
548 } 536 }
549 537
550 s->parse_coeff_models(s); 538 if (p->key_frame) {
551 539 p->pict_type = FF_I_TYPE;
552 memset(s->prev_dc, 0, sizeof(s->prev_dc)); 540 s->default_models_init(s);
553 s->prev_dc[1][VP56_FRAME_CURRENT] = 128; 541 for (block=0; block<s->mb_height*s->mb_width; block++)
554 s->prev_dc[2][VP56_FRAME_CURRENT] = 128; 542 s->macroblocks[block].type = VP56_MB_INTRA;
555 543 } else {
556 for (block=0; block < 4*s->mb_width+6; block++) { 544 p->pict_type = FF_P_TYPE;
557 s->above_blocks[block].ref_frame = -1; 545 vp56_parse_mb_type_models(s);
558 s->above_blocks[block].dc_coeff = 0; 546 s->parse_vector_models(s);
559 s->above_blocks[block].not_null_dc = 0; 547 s->mb_type = VP56_MB_INTER_NOVEC_PF;
560 } 548 }
561 s->above_blocks[2*s->mb_width + 2].ref_frame = 0; 549
562 s->above_blocks[3*s->mb_width + 4].ref_frame = 0; 550 s->parse_coeff_models(s);
563 551
564 stride_y = p->linesize[0]; 552 memset(s->prev_dc, 0, sizeof(s->prev_dc));
565 stride_uv = p->linesize[1]; 553 s->prev_dc[1][VP56_FRAME_CURRENT] = 128;
566 554 s->prev_dc[2][VP56_FRAME_CURRENT] = 128;
567 if (s->flip < 0) 555
568 mb_offset = 7; 556 for (block=0; block < 4*s->mb_width+6; block++) {
569 557 s->above_blocks[block].ref_frame = -1;
570 /* main macroblocks loop */ 558 s->above_blocks[block].dc_coeff = 0;
571 for (mb_row=0; mb_row<s->mb_height; mb_row++) { 559 s->above_blocks[block].not_null_dc = 0;
560 }
561 s->above_blocks[2*s->mb_width + 2].ref_frame = 0;
562 s->above_blocks[3*s->mb_width + 4].ref_frame = 0;
563
564 stride_y = p->linesize[0];
565 stride_uv = p->linesize[1];
566
572 if (s->flip < 0) 567 if (s->flip < 0)
573 mb_row_flip = s->mb_height - mb_row - 1; 568 mb_offset = 7;
574 else 569
575 mb_row_flip = mb_row; 570 /* main macroblocks loop */
576 571 for (mb_row=0; mb_row<s->mb_height; mb_row++) {
577 for (block=0; block<4; block++) { 572 if (s->flip < 0)
578 s->left_block[block].ref_frame = -1; 573 mb_row_flip = s->mb_height - mb_row - 1;
579 s->left_block[block].dc_coeff = 0; 574 else
580 s->left_block[block].not_null_dc = 0; 575 mb_row_flip = mb_row;
581 memset(s->coeff_ctx[block], 0, 64*sizeof(s->coeff_ctx[block][0])); 576
582 } 577 for (block=0; block<4; block++) {
583 memset(s->coeff_ctx_last, 24, sizeof(s->coeff_ctx_last)); 578 s->left_block[block].ref_frame = -1;
584 579 s->left_block[block].dc_coeff = 0;
585 s->above_block_idx[0] = 1; 580 s->left_block[block].not_null_dc = 0;
586 s->above_block_idx[1] = 2; 581 memset(s->coeff_ctx[block], 0, 64*sizeof(s->coeff_ctx[block][0]));
587 s->above_block_idx[2] = 1; 582 }
588 s->above_block_idx[3] = 2; 583 memset(s->coeff_ctx_last, 24, sizeof(s->coeff_ctx_last));
589 s->above_block_idx[4] = 2*s->mb_width + 2 + 1; 584
590 s->above_block_idx[5] = 3*s->mb_width + 4 + 1; 585 s->above_block_idx[0] = 1;
591 586 s->above_block_idx[1] = 2;
592 s->block_offset[s->frbi] = (mb_row_flip*16 + mb_offset) * stride_y; 587 s->above_block_idx[2] = 1;
593 s->block_offset[s->srbi] = s->block_offset[s->frbi] + 8*stride_y; 588 s->above_block_idx[3] = 2;
594 s->block_offset[1] = s->block_offset[0] + 8; 589 s->above_block_idx[4] = 2*s->mb_width + 2 + 1;
595 s->block_offset[3] = s->block_offset[2] + 8; 590 s->above_block_idx[5] = 3*s->mb_width + 4 + 1;
596 s->block_offset[4] = (mb_row_flip*8 + mb_offset) * stride_uv; 591
597 s->block_offset[5] = s->block_offset[4]; 592 s->block_offset[s->frbi] = (mb_row_flip*16 + mb_offset) * stride_y;
598 593 s->block_offset[s->srbi] = s->block_offset[s->frbi] + 8*stride_y;
599 for (mb_col=0; mb_col<s->mb_width; mb_col++) { 594 s->block_offset[1] = s->block_offset[0] + 8;
600 vp56_decode_mb(s, mb_row, mb_col, is_alpha); 595 s->block_offset[3] = s->block_offset[2] + 8;
601 596 s->block_offset[4] = (mb_row_flip*8 + mb_offset) * stride_uv;
602 for (y=0; y<4; y++) { 597 s->block_offset[5] = s->block_offset[4];
603 s->above_block_idx[y] += 2; 598
604 s->block_offset[y] += 16; 599 for (mb_col=0; mb_col<s->mb_width; mb_col++) {
605 } 600 vp56_decode_mb(s, mb_row, mb_col, is_alpha);
606 601
607 for (uv=4; uv<6; uv++) { 602 for (y=0; y<4; y++) {
608 s->above_block_idx[uv] += 1; 603 s->above_block_idx[y] += 2;
609 s->block_offset[uv] += 8; 604 s->block_offset[y] += 16;
610 } 605 }
611 } 606
612 } 607 for (uv=4; uv<6; uv++) {
613 608 s->above_block_idx[uv] += 1;
614 if (p->key_frame || golden_frame) { 609 s->block_offset[uv] += 8;
615 if (s->framep[VP56_FRAME_GOLDEN]->data[0] && 610 }
616 s->framep[VP56_FRAME_GOLDEN] != s->framep[VP56_FRAME_GOLDEN2]) 611 }
617 avctx->release_buffer(avctx, s->framep[VP56_FRAME_GOLDEN]); 612 }
618 s->framep[VP56_FRAME_GOLDEN] = p; 613
619 } 614 if (p->key_frame || golden_frame) {
620 615 if (s->framep[VP56_FRAME_GOLDEN]->data[0] &&
621 if (s->has_alpha) { 616 s->framep[VP56_FRAME_GOLDEN] != s->framep[VP56_FRAME_GOLDEN2])
622 FFSWAP(AVFrame *, s->framep[VP56_FRAME_GOLDEN], 617 avctx->release_buffer(avctx, s->framep[VP56_FRAME_GOLDEN]);
623 s->framep[VP56_FRAME_GOLDEN2]); 618 s->framep[VP56_FRAME_GOLDEN] = p;
624 buf += alpha_offset; 619 }
625 buf_size -= alpha_offset; 620
626 } 621 if (s->has_alpha) {
622 FFSWAP(AVFrame *, s->framep[VP56_FRAME_GOLDEN],
623 s->framep[VP56_FRAME_GOLDEN2]);
624 buf += alpha_offset;
625 buf_size -= alpha_offset;
626 }
627 } 627 }
628 628
629 if (s->framep[VP56_FRAME_PREVIOUS] == s->framep[VP56_FRAME_GOLDEN] || 629 if (s->framep[VP56_FRAME_PREVIOUS] == s->framep[VP56_FRAME_GOLDEN] ||
630 s->framep[VP56_FRAME_PREVIOUS] == s->framep[VP56_FRAME_GOLDEN2]) { 630 s->framep[VP56_FRAME_PREVIOUS] == s->framep[VP56_FRAME_GOLDEN2]) {
631 if (s->framep[VP56_FRAME_UNUSED] != s->framep[VP56_FRAME_GOLDEN] && 631 if (s->framep[VP56_FRAME_UNUSED] != s->framep[VP56_FRAME_GOLDEN] &&