comparison Plugins/Input/wma/libffwma/wmadec.c @ 1668:778f078cda5a trunk

[svn] Partial sync with upstream.
author chainsaw
date Mon, 11 Sep 2006 13:15:31 -0700
parents 705d4c089fce
children
comparison
equal deleted inserted replaced
1667:991fa4c7271d 1668:778f078cda5a
276 else if (sample_rate1 >= 8000) 276 else if (sample_rate1 >= 8000)
277 sample_rate1 = 8000; 277 sample_rate1 = 8000;
278 } 278 }
279 279
280 bps = (float)s->bit_rate / (float)(s->nb_channels * s->sample_rate); 280 bps = (float)s->bit_rate / (float)(s->nb_channels * s->sample_rate);
281 s->byte_offset_bits = av_log2((int)(bps * s->frame_len / 8.0)) + 2; 281 s->byte_offset_bits = av_log2((int)(bps * s->frame_len / 8.0 + 0.5)) + 2;
282 282
283 /* compute high frequency value and choose if noise coding should 283 /* compute high frequency value and choose if noise coding should
284 be activated */ 284 be activated */
285 bps1 = bps; 285 bps1 = bps;
286 if (s->nb_channels == 2) 286 if (s->nb_channels == 2)
891 sign = get_bits(&s->gb, 1); 891 sign = get_bits(&s->gb, 1);
892 if (!sign) 892 if (!sign)
893 level = -level; 893 level = -level;
894 ptr += run; 894 ptr += run;
895 if (ptr >= eptr) 895 if (ptr >= eptr)
896 return -1; 896 {
897 av_log(NULL, AV_LOG_ERROR, "overflow in spectral RLE, ignoring\n");
898 break;
899 }
897 *ptr++ = level; 900 *ptr++ = level;
898 /* NOTE: EOB can be omitted */ 901 /* NOTE: EOB can be omitted */
899 if (ptr >= eptr) 902 if (ptr >= eptr)
900 break; 903 break;
901 } 904 }
1219 if ((s->last_superframe_len + ((bit_offset + 7) >> 3)) > 1222 if ((s->last_superframe_len + ((bit_offset + 7) >> 3)) >
1220 MAX_CODED_SUPERFRAME_SIZE) 1223 MAX_CODED_SUPERFRAME_SIZE)
1221 goto fail; 1224 goto fail;
1222 q = s->last_superframe + s->last_superframe_len; 1225 q = s->last_superframe + s->last_superframe_len;
1223 len = bit_offset; 1226 len = bit_offset;
1224 while (len > 0) { 1227 while (len > 7) {
1225 *q++ = (get_bits)(&s->gb, 8); 1228 *q++ = (get_bits)(&s->gb, 8);
1226 len -= 8; 1229 len -= 8;
1227 } 1230 }
1228 if (len > 0) { 1231 if (len > 0) {
1229 *q++ = (get_bits)(&s->gb, len) << (8 - len); 1232 *q++ = (get_bits)(&s->gb, len) << (8 - len);