| 
																	
																	
																		
																	
																	
																 | 
																@@ -63,7 +63,7 @@ | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																#define KEYFRAMES_ONLY 0 | 
																 | 
																 | 
																#define KEYFRAMES_ONLY 0 | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																#define DEBUG_VP3 0 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																#define DEBUG_VP3 1 | 
															
														
														
													
														
															
																 | 
																 | 
																#define DEBUG_INIT 0 | 
																 | 
																 | 
																#define DEBUG_INIT 0 | 
															
														
														
													
														
															
																 | 
																 | 
																#define DEBUG_DEQUANTIZERS 0 | 
																 | 
																 | 
																#define DEBUG_DEQUANTIZERS 0 | 
															
														
														
													
														
															
																 | 
																 | 
																#define DEBUG_BLOCK_CODING 0 | 
																 | 
																 | 
																#define DEBUG_BLOCK_CODING 0 | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																	
																	
																		
																	
																	
																 | 
																@@ -2780,7 +2780,7 @@ static int theora_decode_comments(AVCodecContext *avctx, GetBitContext gb) | 
															
														
														
													
														
															
																 | 
																 | 
																static int theora_decode_tables(AVCodecContext *avctx, GetBitContext gb) | 
																 | 
																 | 
																static int theora_decode_tables(AVCodecContext *avctx, GetBitContext gb) | 
															
														
														
													
														
															
																 | 
																 | 
																{ | 
																 | 
																 | 
																{ | 
															
														
														
													
														
															
																 | 
																 | 
																    Vp3DecodeContext *s = avctx->priv_data; | 
																 | 
																 | 
																    Vp3DecodeContext *s = avctx->priv_data; | 
															
														
														
													
														
															
																 | 
																 | 
																    int i, n; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    int i, n, matrices; | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																    if (s->theora >= 0x030200) { | 
																 | 
																 | 
																    if (s->theora >= 0x030200) { | 
															
														
														
													
														
															
																 | 
																 | 
																        n = get_bits(&gb, 3); | 
																 | 
																 | 
																        n = get_bits(&gb, 3); | 
															
														
														
													
												
													
														
															
																| 
																	
																	
																	
																		
																	
																 | 
																@@ -2806,12 +2806,12 @@ static int theora_decode_tables(AVCodecContext *avctx, GetBitContext gb) | 
															
														
														
													
														
															
																 | 
																 | 
																	s->coded_dc_scale_factor[i] = get_bits(&gb, n); | 
																 | 
																 | 
																	s->coded_dc_scale_factor[i] = get_bits(&gb, n); | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																    if (s->theora >= 0x030200) | 
																 | 
																 | 
																    if (s->theora >= 0x030200) | 
															
														
														
													
														
															
																 | 
																 | 
																        n = get_bits(&gb, 9) + 1; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        matrices = get_bits(&gb, 9) + 1; | 
															
														
														
													
														
															
																 | 
																 | 
																    else | 
																 | 
																 | 
																    else | 
															
														
														
													
														
															
																 | 
																 | 
																        n = 3; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																    if (n != 3) { | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																        av_log(avctx,AV_LOG_ERROR, "unsupported nbms : %d\n", n); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																        return -1; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        matrices = 3; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    if (matrices != 3) { | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																        av_log(avctx,AV_LOG_ERROR, "unsupported matrices: %d\n", matrices); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																//        return -1; | 
															
														
														
													
														
															
																 | 
																 | 
																    } | 
																 | 
																 | 
																    } | 
															
														
														
													
														
															
																 | 
																 | 
																    /* y coeffs */ | 
																 | 
																 | 
																    /* y coeffs */ | 
															
														
														
													
														
															
																 | 
																 | 
																    for (i = 0; i < 64; i++) | 
																 | 
																 | 
																    for (i = 0; i < 64; i++) | 
															
														
														
													
												
													
														
															
																| 
																	
																	
																	
																		
																	
																 | 
																@@ -2825,7 +2825,12 @@ static int theora_decode_tables(AVCodecContext *avctx, GetBitContext gb) | 
															
														
														
													
														
															
																 | 
																 | 
																    for (i = 0; i < 64; i++) | 
																 | 
																 | 
																    for (i = 0; i < 64; i++) | 
															
														
														
													
														
															
																 | 
																 | 
																	s->coded_inter_dequant[i] = get_bits(&gb, 8); | 
																 | 
																 | 
																	s->coded_inter_dequant[i] = get_bits(&gb, 8); | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																    /* Huffman tables */ | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    /* skip unknown matrices */ | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    n = matrices - 3; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    while(n--) | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	for (i = 0; i < 64; i++) | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	    skip_bits(&gb, 8); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																    for (i = 0; i <= 1; i++) { | 
																 | 
																 | 
																    for (i = 0; i <= 1; i++) { | 
															
														
														
													
														
															
																 | 
																 | 
																        for (n = 0; n <= 2; n++) { | 
																 | 
																 | 
																        for (n = 0; n <= 2; n++) { | 
															
														
														
													
														
															
																 | 
																 | 
																            int newqr; | 
																 | 
																 | 
																            int newqr; | 
															
														
														
													
												
													
														
															
																| 
																	
																	
																	
																		
																	
																 | 
																@@ -2839,17 +2844,20 @@ static int theora_decode_tables(AVCodecContext *avctx, GetBitContext gb) | 
															
														
														
													
														
															
																 | 
																 | 
																            } | 
																 | 
																 | 
																            } | 
															
														
														
													
														
															
																 | 
																 | 
																            else { | 
																 | 
																 | 
																            else { | 
															
														
														
													
														
															
																 | 
																 | 
																                int qi = 0; | 
																 | 
																 | 
																                int qi = 0; | 
															
														
														
													
														
															
																 | 
																 | 
																                skip_bits(&gb, av_log2(2)+1); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                skip_bits(&gb, av_log2(matrices-1)+1); | 
															
														
														
													
														
															
																 | 
																 | 
																                while (qi < 63) { | 
																 | 
																 | 
																                while (qi < 63) { | 
															
														
														
													
														
															
																 | 
																 | 
																                    qi += get_bits(&gb, av_log2(63-qi)+1) + 1; | 
																 | 
																 | 
																                    qi += get_bits(&gb, av_log2(63-qi)+1) + 1; | 
															
														
														
													
														
															
																 | 
																 | 
																                    skip_bits(&gb, av_log2(2)+1); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                    skip_bits(&gb, av_log2(matrices-1)+1); | 
															
														
														
													
														
															
																 | 
																 | 
																                } | 
																 | 
																 | 
																                } | 
															
														
														
													
														
															
																 | 
																 | 
																                if (qi > 63) | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																                if (qi > 63) { | 
															
														
														
													
														
															
																 | 
																 | 
																                    av_log(avctx, AV_LOG_ERROR, "invalid qi %d > 63\n", qi); | 
																 | 
																 | 
																                    av_log(avctx, AV_LOG_ERROR, "invalid qi %d > 63\n", qi); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		    return -1; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		} | 
															
														
														
													
														
															
																 | 
																 | 
																            } | 
																 | 
																 | 
																            } | 
															
														
														
													
														
															
																 | 
																 | 
																        } | 
																 | 
																 | 
																        } | 
															
														
														
													
														
															
																 | 
																 | 
																    } | 
																 | 
																 | 
																    } | 
															
														
														
													
														
															
																 | 
																 | 
																
  | 
																 | 
																 | 
																
  | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																    /* Huffman tables */ | 
															
														
														
													
														
															
																 | 
																 | 
																    for (s->hti = 0; s->hti < 80; s->hti++) { | 
																 | 
																 | 
																    for (s->hti = 0; s->hti < 80; s->hti++) { | 
															
														
														
													
														
															
																 | 
																 | 
																        s->entries = 0; | 
																 | 
																 | 
																        s->entries = 0; | 
															
														
														
													
														
															
																 | 
																 | 
																        s->huff_code_size = 1; | 
																 | 
																 | 
																        s->huff_code_size = 1; | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																	
																	
																		
																	
																	
																 | 
																@@ -2907,7 +2915,8 @@ static int theora_decode_init(AVCodecContext *avctx) | 
															
														
														
													
														
															
																 | 
																 | 
																            theora_decode_header(avctx, gb); | 
																 | 
																 | 
																            theora_decode_header(avctx, gb); | 
															
														
														
													
														
															
																 | 
																 | 
																    	    break; | 
																 | 
																 | 
																    	    break; | 
															
														
														
													
														
															
																 | 
																 | 
																	case 0x81: | 
																 | 
																 | 
																	case 0x81: | 
															
														
														
													
														
															
																 | 
																 | 
																	    theora_decode_comments(avctx, gb); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																// FIXME: is this needed? it breaks sometimes | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																//	    theora_decode_comments(avctx, gb); | 
															
														
														
													
														
															
																 | 
																 | 
																	    break; | 
																 | 
																 | 
																	    break; | 
															
														
														
													
														
															
																 | 
																 | 
																	case 0x82: | 
																 | 
																 | 
																	case 0x82: | 
															
														
														
													
														
															
																 | 
																 | 
																	    theora_decode_tables(avctx, gb); | 
																 | 
																 | 
																	    theora_decode_tables(avctx, gb); | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																	
																	
																	
																 | 
																
  |