projects
/
paraslash.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'refs/heads/t/format-signedness'
[paraslash.git]
/
wmadec_filter.c
diff --git
a/wmadec_filter.c
b/wmadec_filter.c
index 7691553e4723ebaac01294ca40290be9b3eb2899..4c7c047a482e2b3f256cfb8c12dcd6b4de3a7500 100644
(file)
--- a/
wmadec_filter.c
+++ b/
wmadec_filter.c
@@
-1028,7
+1028,7
@@
static inline int16_t av_clip_int16(int a)
/* Decode a frame of frame_len samples. */
static int wma_decode_frame(struct private_wmadec_data *pwd, int16_t *samples)
{
/* Decode a frame of frame_len samples. */
static int wma_decode_frame(struct private_wmadec_data *pwd, int16_t *samples)
{
- int ret, i,
n, ch, incr
;
+ int ret, i,
ch
;
int16_t *ptr;
float *iptr;
int16_t *ptr;
float *iptr;
@@
-1043,15
+1043,13
@@
static int wma_decode_frame(struct private_wmadec_data *pwd, int16_t *samples)
}
/* convert frame to integer */
}
/* convert frame to integer */
- n = pwd->frame_len;
- incr = pwd->ahi.channels;
for (ch = 0; ch < pwd->ahi.channels; ch++) {
ptr = samples + ch;
iptr = pwd->frame_out[ch];
for (ch = 0; ch < pwd->ahi.channels; ch++) {
ptr = samples + ch;
iptr = pwd->frame_out[ch];
- for (i = 0; i < n; i++) {
+ for (i = 0; i <
pwd->frame_le
n; i++) {
*ptr = av_clip_int16(lrintf(*iptr++));
*ptr = av_clip_int16(lrintf(*iptr++));
- ptr +=
incr
;
+ ptr +=
pwd->ahi.channels
;
}
/* prepare for next block */
memmove(&pwd->frame_out[ch][0], &pwd->frame_out[ch][pwd->frame_len],
}
/* prepare for next block */
memmove(&pwd->frame_out[ch][0], &pwd->frame_out[ch][pwd->frame_len],
@@
-1068,10
+1066,13
@@
static int wma_decode_superframe(struct private_wmadec_data *pwd, void *data,
if (buf_size == 0) {
pwd->last_superframe_len = 0;
if (buf_size == 0) {
pwd->last_superframe_len = 0;
+ *data_size = 0;
return 0;
}
return 0;
}
- if (buf_size < pwd->ahi.block_align)
+ if (buf_size < pwd->ahi.block_align) {
+ *data_size = 0;
return 0;
return 0;
+ }
buf_size = pwd->ahi.block_align;
samples = data;
init_get_bits(&pwd->gb, buf, buf_size);
buf_size = pwd->ahi.block_align;
samples = data;
init_get_bits(&pwd->gb, buf, buf_size);
@@
-1209,7
+1210,7
@@
next_buffer:
if (ret == 0)
return 0;
btr_merge(btrn, fn->min_iqs);
if (ret == 0)
return 0;
btr_merge(btrn, fn->min_iqs);
- len = btr_next_buffer(btrn,
(char **)
&in);
+ len = btr_next_buffer(btrn, &in);
ret = -E_WMADEC_EOF;
if (len < fn->min_iqs)
goto err;
ret = -E_WMADEC_EOF;
if (len < fn->min_iqs)
goto err;
@@
-1221,12
+1222,12
@@
next_buffer:
fn->min_iqs += 4096;
goto next_buffer;
}
fn->min_iqs += 4096;
goto next_buffer;
}
- fn->min_iqs = 2 *
(WMA_FRAME_SKIP + pwd->ahi.block_align)
;
+ fn->min_iqs = 2 *
pwd->ahi.packet_size
;
fn->private_data = pwd;
converted = pwd->ahi.header_len;
goto success;
}
fn->private_data = pwd;
converted = pwd->ahi.header_len;
goto success;
}
- fn->min_iqs =
WMA_FRAME_SKIP + pwd->ahi.block_align
;
+ fn->min_iqs =
pwd->ahi.packet_size
;
if (fn->min_iqs > len)
goto success;
out_size = WMA_OUTPUT_BUFFER_SIZE;
if (fn->min_iqs > len)
goto success;
out_size = WMA_OUTPUT_BUFFER_SIZE;
@@
-1237,10
+1238,12
@@
next_buffer:
free(out);
goto err;
}
free(out);
goto err;
}
- out = para_realloc(out, out_size);
- if (out_size > 0)
+ if (out_size > 0) {
+ out = para_realloc(out, out_size);
btr_add_output(out, out_size, btrn);
btr_add_output(out, out_size, btrn);
- converted += ret + WMA_FRAME_SKIP;
+ } else
+ free(out);
+ converted += pwd->ahi.packet_size;
success:
btr_consume(btrn, converted);
return 0;
success:
btr_consume(btrn, converted);
return 0;