mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-03-28 12:32:17 +02:00
qdm2: use get_bits_left()
Signed-off-by: Mans Rullgard <mans@mansr.com>
This commit is contained in:
parent
7bb3a302fe
commit
a31787ee3b
@ -69,8 +69,6 @@ do { \
|
||||
|
||||
#define SB_DITHERING_NOISE(sb,noise_idx) (noise_table[(noise_idx)++] * sb_noise_attenuation[(sb)])
|
||||
|
||||
#define BITS_LEFT(length,gb) ((length) - get_bits_count ((gb)))
|
||||
|
||||
#define SAMPLES_NEEDED \
|
||||
av_log (NULL,AV_LOG_INFO,"This file triggers some untested code. Please contact the developers.\n");
|
||||
|
||||
@ -793,10 +791,10 @@ static void synthfilt_build_sb_samples (QDM2Context *q, GetBitContext *gb, int l
|
||||
else if (sb >= 24)
|
||||
joined_stereo = 1;
|
||||
else
|
||||
joined_stereo = (BITS_LEFT(length,gb) >= 1) ? get_bits1 (gb) : 0;
|
||||
joined_stereo = (get_bits_left(gb) >= 1) ? get_bits1 (gb) : 0;
|
||||
|
||||
if (joined_stereo) {
|
||||
if (BITS_LEFT(length,gb) >= 16)
|
||||
if (get_bits_left(gb) >= 16)
|
||||
for (j = 0; j < 16; j++)
|
||||
sign_bits[j] = get_bits1 (gb);
|
||||
|
||||
@ -809,14 +807,14 @@ static void synthfilt_build_sb_samples (QDM2Context *q, GetBitContext *gb, int l
|
||||
}
|
||||
|
||||
for (ch = 0; ch < channels; ch++) {
|
||||
zero_encoding = (BITS_LEFT(length,gb) >= 1) ? get_bits1(gb) : 0;
|
||||
zero_encoding = (get_bits_left(gb) >= 1) ? get_bits1(gb) : 0;
|
||||
type34_predictor = 0.0;
|
||||
type34_first = 1;
|
||||
|
||||
for (j = 0; j < 128; ) {
|
||||
switch (q->coding_method[ch][sb][j / 2]) {
|
||||
case 8:
|
||||
if (BITS_LEFT(length,gb) >= 10) {
|
||||
if (get_bits_left(gb) >= 10) {
|
||||
if (zero_encoding) {
|
||||
for (k = 0; k < 5; k++) {
|
||||
if ((j + 2 * k) >= 128)
|
||||
@ -838,7 +836,7 @@ static void synthfilt_build_sb_samples (QDM2Context *q, GetBitContext *gb, int l
|
||||
break;
|
||||
|
||||
case 10:
|
||||
if (BITS_LEFT(length,gb) >= 1) {
|
||||
if (get_bits_left(gb) >= 1) {
|
||||
float f = 0.81;
|
||||
|
||||
if (get_bits1(gb))
|
||||
@ -852,7 +850,7 @@ static void synthfilt_build_sb_samples (QDM2Context *q, GetBitContext *gb, int l
|
||||
break;
|
||||
|
||||
case 16:
|
||||
if (BITS_LEFT(length,gb) >= 10) {
|
||||
if (get_bits_left(gb) >= 10) {
|
||||
if (zero_encoding) {
|
||||
for (k = 0; k < 5; k++) {
|
||||
if ((j + k) >= 128)
|
||||
@ -872,7 +870,7 @@ static void synthfilt_build_sb_samples (QDM2Context *q, GetBitContext *gb, int l
|
||||
break;
|
||||
|
||||
case 24:
|
||||
if (BITS_LEFT(length,gb) >= 7) {
|
||||
if (get_bits_left(gb) >= 7) {
|
||||
n = get_bits(gb, 7);
|
||||
for (k = 0; k < 3; k++)
|
||||
samples[k] = (random_dequant_type24[n][k] - 2.0) * 0.5;
|
||||
@ -884,7 +882,7 @@ static void synthfilt_build_sb_samples (QDM2Context *q, GetBitContext *gb, int l
|
||||
break;
|
||||
|
||||
case 30:
|
||||
if (BITS_LEFT(length,gb) >= 4)
|
||||
if (get_bits_left(gb) >= 4)
|
||||
samples[0] = type30_dequant[qdm2_get_vlc(gb, &vlc_tab_type30, 0, 1)];
|
||||
else
|
||||
samples[0] = SB_DITHERING_NOISE(sb,q->noise_idx);
|
||||
@ -893,7 +891,7 @@ static void synthfilt_build_sb_samples (QDM2Context *q, GetBitContext *gb, int l
|
||||
break;
|
||||
|
||||
case 34:
|
||||
if (BITS_LEFT(length,gb) >= 7) {
|
||||
if (get_bits_left(gb) >= 7) {
|
||||
if (type34_first) {
|
||||
type34_div = (float)(1 << get_bits(gb, 2));
|
||||
samples[0] = ((float)get_bits(gb, 5) - 16.0) / 15.0;
|
||||
@ -946,24 +944,23 @@ static void synthfilt_build_sb_samples (QDM2Context *q, GetBitContext *gb, int l
|
||||
*
|
||||
* @param quantized_coeffs pointer to quantized_coeffs[ch][0]
|
||||
* @param gb bitreader context
|
||||
* @param length packet length in bits
|
||||
*/
|
||||
static void init_quantized_coeffs_elem0 (int8_t *quantized_coeffs, GetBitContext *gb, int length)
|
||||
static void init_quantized_coeffs_elem0 (int8_t *quantized_coeffs, GetBitContext *gb)
|
||||
{
|
||||
int i, k, run, level, diff;
|
||||
|
||||
if (BITS_LEFT(length,gb) < 16)
|
||||
if (get_bits_left(gb) < 16)
|
||||
return;
|
||||
level = qdm2_get_vlc(gb, &vlc_tab_level, 0, 2);
|
||||
|
||||
quantized_coeffs[0] = level;
|
||||
|
||||
for (i = 0; i < 7; ) {
|
||||
if (BITS_LEFT(length,gb) < 16)
|
||||
if (get_bits_left(gb) < 16)
|
||||
break;
|
||||
run = qdm2_get_vlc(gb, &vlc_tab_run, 0, 1) + 1;
|
||||
|
||||
if (BITS_LEFT(length,gb) < 16)
|
||||
if (get_bits_left(gb) < 16)
|
||||
break;
|
||||
diff = qdm2_get_se_vlc(&vlc_tab_diff, gb, 2);
|
||||
|
||||
@ -983,16 +980,15 @@ static void init_quantized_coeffs_elem0 (int8_t *quantized_coeffs, GetBitContext
|
||||
*
|
||||
* @param q context
|
||||
* @param gb bitreader context
|
||||
* @param length packet length in bits
|
||||
*/
|
||||
static void init_tone_level_dequantization (QDM2Context *q, GetBitContext *gb, int length)
|
||||
static void init_tone_level_dequantization (QDM2Context *q, GetBitContext *gb)
|
||||
{
|
||||
int sb, j, k, n, ch;
|
||||
|
||||
for (ch = 0; ch < q->nb_channels; ch++) {
|
||||
init_quantized_coeffs_elem0(q->quantized_coeffs[ch][0], gb, length);
|
||||
init_quantized_coeffs_elem0(q->quantized_coeffs[ch][0], gb);
|
||||
|
||||
if (BITS_LEFT(length,gb) < 16) {
|
||||
if (get_bits_left(gb) < 16) {
|
||||
memset(q->quantized_coeffs[ch][0], 0, 8);
|
||||
break;
|
||||
}
|
||||
@ -1003,11 +999,11 @@ static void init_tone_level_dequantization (QDM2Context *q, GetBitContext *gb, i
|
||||
for (sb = 0; sb < n; sb++)
|
||||
for (ch = 0; ch < q->nb_channels; ch++)
|
||||
for (j = 0; j < 8; j++) {
|
||||
if (BITS_LEFT(length,gb) < 1)
|
||||
if (get_bits_left(gb) < 1)
|
||||
break;
|
||||
if (get_bits1(gb)) {
|
||||
for (k=0; k < 8; k++) {
|
||||
if (BITS_LEFT(length,gb) < 16)
|
||||
if (get_bits_left(gb) < 16)
|
||||
break;
|
||||
q->tone_level_idx_hi1[ch][sb][j][k] = qdm2_get_vlc(gb, &vlc_tab_tone_level_idx_hi1, 0, 2);
|
||||
}
|
||||
@ -1021,7 +1017,7 @@ static void init_tone_level_dequantization (QDM2Context *q, GetBitContext *gb, i
|
||||
|
||||
for (sb = 0; sb < n; sb++)
|
||||
for (ch = 0; ch < q->nb_channels; ch++) {
|
||||
if (BITS_LEFT(length,gb) < 16)
|
||||
if (get_bits_left(gb) < 16)
|
||||
break;
|
||||
q->tone_level_idx_hi2[ch][sb] = qdm2_get_vlc(gb, &vlc_tab_tone_level_idx_hi2, 0, 2);
|
||||
if (sb > 19)
|
||||
@ -1036,7 +1032,7 @@ static void init_tone_level_dequantization (QDM2Context *q, GetBitContext *gb, i
|
||||
for (sb = 0; sb < n; sb++)
|
||||
for (ch = 0; ch < q->nb_channels; ch++)
|
||||
for (j = 0; j < 8; j++) {
|
||||
if (BITS_LEFT(length,gb) < 16)
|
||||
if (get_bits_left(gb) < 16)
|
||||
break;
|
||||
q->tone_level_idx_mid[ch][sb][j] = qdm2_get_vlc(gb, &vlc_tab_tone_level_idx_mid, 0, 2) - 32;
|
||||
}
|
||||
@ -1094,7 +1090,7 @@ static void process_subpacket_10 (QDM2Context *q, QDM2SubPNode *node, int length
|
||||
init_get_bits(&gb, ((node == NULL) ? empty_buffer : node->packet->data), ((node == NULL) ? 0 : node->packet->size*8));
|
||||
|
||||
if (length != 0) {
|
||||
init_tone_level_dequantization(q, &gb, length);
|
||||
init_tone_level_dequantization(q, &gb);
|
||||
fill_tone_level_array(q, 1);
|
||||
} else {
|
||||
fill_tone_level_array(q, 0);
|
||||
|
Loading…
x
Reference in New Issue
Block a user