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

Side by Side Diff: patched-ffmpeg-mt/libavcodec/h264_cavlc.c

Issue 789004: ffmpeg roll of source to mar 9 version... (Closed) Base URL: svn://chrome-svn/chrome/trunk/deps/third_party/ffmpeg/
Patch Set: '' Created 10 years, 9 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 | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * H.26L/H.264/AVC/JVT/14496-10/... cavlc bitstream decoding 2 * H.26L/H.264/AVC/JVT/14496-10/... cavlc bitstream decoding
3 * Copyright (c) 2003 Michael Niedermayer <michaelni@gmx.at> 3 * Copyright (c) 2003 Michael Niedermayer <michaelni@gmx.at>
4 * 4 *
5 * This file is part of FFmpeg. 5 * This file is part of FFmpeg.
6 * 6 *
7 * FFmpeg is free software; you can redistribute it and/or 7 * FFmpeg is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public 8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either 9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version. 10 * version 2.1 of the License, or (at your option) any later version.
(...skipping 529 matching lines...) Expand 10 before | Expand all | Expand 10 after
540 cbp = 0; /* avoid warning. FIXME: find a solution without slowing 540 cbp = 0; /* avoid warning. FIXME: find a solution without slowing
541 down the code */ 541 down the code */
542 if(h->slice_type_nos != FF_I_TYPE){ 542 if(h->slice_type_nos != FF_I_TYPE){
543 if(s->mb_skip_run==-1) 543 if(s->mb_skip_run==-1)
544 s->mb_skip_run= get_ue_golomb(&s->gb); 544 s->mb_skip_run= get_ue_golomb(&s->gb);
545 545
546 if (s->mb_skip_run--) { 546 if (s->mb_skip_run--) {
547 if(FRAME_MBAFF && (s->mb_y&1) == 0){ 547 if(FRAME_MBAFF && (s->mb_y&1) == 0){
548 if(s->mb_skip_run==0) 548 if(s->mb_skip_run==0)
549 h->mb_mbaff = h->mb_field_decoding_flag = get_bits1(&s->gb); 549 h->mb_mbaff = h->mb_field_decoding_flag = get_bits1(&s->gb);
550 else
551 predict_field_decoding_flag(h);
552 } 550 }
553 decode_mb_skip(h); 551 decode_mb_skip(h);
554 return 0; 552 return 0;
555 } 553 }
556 } 554 }
557 if(FRAME_MBAFF){ 555 if(FRAME_MBAFF){
558 if( (s->mb_y&1) == 0 ) 556 if( (s->mb_y&1) == 0 )
559 h->mb_mbaff = h->mb_field_decoding_flag = get_bits1(&s->gb); 557 h->mb_mbaff = h->mb_field_decoding_flag = get_bits1(&s->gb);
560 } 558 }
561 559
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
616 614
617 s->current_picture.mb_type[mb_xy]= mb_type; 615 s->current_picture.mb_type[mb_xy]= mb_type;
618 return 0; 616 return 0;
619 } 617 }
620 618
621 if(MB_MBAFF){ 619 if(MB_MBAFF){
622 h->ref_count[0] <<= 1; 620 h->ref_count[0] <<= 1;
623 h->ref_count[1] <<= 1; 621 h->ref_count[1] <<= 1;
624 } 622 }
625 623
624 fill_decode_neighbors(h, mb_type);
626 fill_decode_caches(h, mb_type); 625 fill_decode_caches(h, mb_type);
627 626
628 //mb_pred 627 //mb_pred
629 if(IS_INTRA(mb_type)){ 628 if(IS_INTRA(mb_type)){
630 int pred_mode; 629 int pred_mode;
631 // init_top_left_availability(h); 630 // init_top_left_availability(h);
632 if(IS_INTRA4x4(mb_type)){ 631 if(IS_INTRA4x4(mb_type)){
633 int i; 632 int i;
634 int di = 1; 633 int di = 1;
635 if(dct8x8_allowed && get_bits1(&s->gb)){ 634 if(dct8x8_allowed && get_bits1(&s->gb)){
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
783 val= 0; 782 val= 0;
784 }else if(h->ref_count[list]==2){ 783 }else if(h->ref_count[list]==2){
785 val= get_bits1(&s->gb)^1; 784 val= get_bits1(&s->gb)^1;
786 }else{ 785 }else{
787 val= get_ue_golomb_31(&s->gb); 786 val= get_ue_golomb_31(&s->gb);
788 if(val >= h->ref_count[list]){ 787 if(val >= h->ref_count[list]){
789 av_log(h->s.avctx, AV_LOG_ERROR, "ref %u overflo w\n", val); 788 av_log(h->s.avctx, AV_LOG_ERROR, "ref %u overflo w\n", val);
790 return -1; 789 return -1;
791 } 790 }
792 } 791 }
793 }else
794 val= LIST_NOT_USED&0xFF;
795 fill_rectangle(&h->ref_cache[list][ scan8[0] ], 4, 4, 8, val , 1); 792 fill_rectangle(&h->ref_cache[list][ scan8[0] ], 4, 4, 8, val , 1);
793 }
796 } 794 }
797 for(list=0; list<h->list_count; list++){ 795 for(list=0; list<h->list_count; list++){
798 unsigned int val;
799 if(IS_DIR(mb_type, 0, list)){ 796 if(IS_DIR(mb_type, 0, list)){
800 pred_motion(h, 0, 4, list, h->ref_cache[list][ scan8[0] ], & mx, &my); 797 pred_motion(h, 0, 4, list, h->ref_cache[list][ scan8[0] ], & mx, &my);
801 mx += get_se_golomb(&s->gb); 798 mx += get_se_golomb(&s->gb);
802 my += get_se_golomb(&s->gb); 799 my += get_se_golomb(&s->gb);
803 tprintf(s->avctx, "final mv:%d %d\n", mx, my); 800 tprintf(s->avctx, "final mv:%d %d\n", mx, my);
804 801
805 val= pack16to32(mx,my); 802 fill_rectangle(h->mv_cache[list][ scan8[0] ], 4, 4, 8, pack1 6to32(mx,my), 4);
806 }else 803 }
807 val=0;
808 fill_rectangle(h->mv_cache[list][ scan8[0] ], 4, 4, 8, val, 4);
809 } 804 }
810 } 805 }
811 else if(IS_16X8(mb_type)){ 806 else if(IS_16X8(mb_type)){
812 for(list=0; list<h->list_count; list++){ 807 for(list=0; list<h->list_count; list++){
813 for(i=0; i<2; i++){ 808 for(i=0; i<2; i++){
814 unsigned int val; 809 unsigned int val;
815 if(IS_DIR(mb_type, i, list)){ 810 if(IS_DIR(mb_type, i, list)){
816 if(h->ref_count[list] == 1){ 811 if(h->ref_count[list] == 1){
817 val= 0; 812 val= 0;
818 }else if(h->ref_count[list] == 2){ 813 }else if(h->ref_count[list] == 2){
(...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after
1021 write_back_non_zero_count(h); 1016 write_back_non_zero_count(h);
1022 1017
1023 if(MB_MBAFF){ 1018 if(MB_MBAFF){
1024 h->ref_count[0] >>= 1; 1019 h->ref_count[0] >>= 1;
1025 h->ref_count[1] >>= 1; 1020 h->ref_count[1] >>= 1;
1026 } 1021 }
1027 1022
1028 return 0; 1023 return 0;
1029 } 1024 }
1030 1025
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698