Index: patched-ffmpeg-mt/libavcodec/bitstream.c |
=================================================================== |
--- patched-ffmpeg-mt/libavcodec/bitstream.c (revision 41250) |
+++ patched-ffmpeg-mt/libavcodec/bitstream.c (working copy) |
@@ -158,42 +158,44 @@ |
#endif |
/* if code matches the prefix, it is in the table */ |
n -= n_prefix; |
- if(flags & INIT_VLC_LE) |
- code_prefix2= code & (n_prefix>=32 ? 0xffffffff : (1 << n_prefix)-1); |
- else |
- code_prefix2= code >> n; |
- if (n > 0 && code_prefix2 == code_prefix) { |
- if (n <= table_nb_bits) { |
- /* no need to add another table */ |
- j = (code << (table_nb_bits - n)) & (table_size - 1); |
- nb = 1 << (table_nb_bits - n); |
- for(k=0;k<nb;k++) { |
- if(flags & INIT_VLC_LE) |
- j = (code >> n_prefix) + (k<<n); |
+ if (n > 0) { |
+ if(flags & INIT_VLC_LE) |
+ code_prefix2= code & (n_prefix>=32 ? 0xffffffff : (1 << n_prefix)-1); |
+ else |
+ code_prefix2= code >> n; |
+ if (code_prefix2 == code_prefix) { |
+ if (n <= table_nb_bits) { |
+ /* no need to add another table */ |
+ j = (code << (table_nb_bits - n)) & (table_size - 1); |
+ nb = 1 << (table_nb_bits - n); |
+ for(k=0;k<nb;k++) { |
+ if(flags & INIT_VLC_LE) |
+ j = (code >> n_prefix) + (k<<n); |
#ifdef DEBUG_VLC |
- av_log(NULL, AV_LOG_DEBUG, "%4x: code=%d n=%d\n", |
- j, i, n); |
+ av_log(NULL, AV_LOG_DEBUG, "%4x: code=%d n=%d\n", |
+ j, i, n); |
#endif |
- if (table[j][1] /*bits*/ != 0) { |
- av_log(NULL, AV_LOG_ERROR, "incorrect codes\n"); |
- return -1; |
+ if (table[j][1] /*bits*/ != 0) { |
+ av_log(NULL, AV_LOG_ERROR, "incorrect codes\n"); |
+ return -1; |
+ } |
+ table[j][1] = n; //bits |
+ table[j][0] = symbol; |
+ j++; |
} |
- table[j][1] = n; //bits |
- table[j][0] = symbol; |
- j++; |
- } |
- } else { |
- n -= table_nb_bits; |
- j = (code >> ((flags & INIT_VLC_LE) ? n_prefix : n)) & ((1 << table_nb_bits) - 1); |
+ } else { |
+ n -= table_nb_bits; |
+ j = (code >> ((flags & INIT_VLC_LE) ? n_prefix : n)) & ((1 << table_nb_bits) - 1); |
#ifdef DEBUG_VLC |
- av_log(NULL,AV_LOG_DEBUG,"%4x: n=%d (subtable)\n", |
- j, n); |
+ av_log(NULL,AV_LOG_DEBUG,"%4x: n=%d (subtable)\n", |
+ j, n); |
#endif |
- /* compute table size */ |
- n1 = -table[j][1]; //bits |
- if (n > n1) |
- n1 = n; |
- table[j][1] = -n1; //bits |
+ /* compute table size */ |
+ n1 = -table[j][1]; //bits |
+ if (n > n1) |
+ n1 = n; |
+ table[j][1] = -n1; //bits |
+ } |
} |
} |
} |