mirror of
https://github.com/xiph/opus.git
synced 2025-06-06 07:21:03 +00:00
Fixes code that was doing arithmetic on a void pointer.
Thanks to Kevin O'Connor for reporting this.
This commit is contained in:
parent
122971b8cc
commit
32ada84b5b
2 changed files with 5 additions and 8 deletions
|
@ -649,7 +649,7 @@ static int transient_viterbi(const float *E, const float *E_1, int N, int frame_
|
||||||
return best_state;
|
return best_state;
|
||||||
}
|
}
|
||||||
|
|
||||||
int optimize_framesize(const opus_val16 *x, int len, int C, opus_int32 Fs,
|
static int optimize_framesize(const void *x, int len, int C, opus_int32 Fs,
|
||||||
int bitrate, opus_val16 tonality, float *mem, int buffering,
|
int bitrate, opus_val16 tonality, float *mem, int buffering,
|
||||||
downmix_func downmix)
|
downmix_func downmix)
|
||||||
{
|
{
|
||||||
|
@ -661,6 +661,7 @@ int optimize_framesize(const opus_val16 *x, int len, int C, opus_int32 Fs,
|
||||||
int bestLM=0;
|
int bestLM=0;
|
||||||
int subframe;
|
int subframe;
|
||||||
int pos;
|
int pos;
|
||||||
|
int offset;
|
||||||
VARDECL(opus_val32, sub);
|
VARDECL(opus_val32, sub);
|
||||||
|
|
||||||
subframe = Fs/400;
|
subframe = Fs/400;
|
||||||
|
@ -671,9 +672,8 @@ int optimize_framesize(const opus_val16 *x, int len, int C, opus_int32 Fs,
|
||||||
{
|
{
|
||||||
/* Consider the CELT delay when not in restricted-lowdelay */
|
/* Consider the CELT delay when not in restricted-lowdelay */
|
||||||
/* We assume the buffering is between 2.5 and 5 ms */
|
/* We assume the buffering is between 2.5 and 5 ms */
|
||||||
int offset = 2*subframe - buffering;
|
offset = 2*subframe - buffering;
|
||||||
celt_assert(offset>=0 && offset <= subframe);
|
celt_assert(offset>=0 && offset <= subframe);
|
||||||
x += C*offset;
|
|
||||||
len -= offset;
|
len -= offset;
|
||||||
e[1]=mem[1];
|
e[1]=mem[1];
|
||||||
e_1[1]=1.f/(EPSILON+mem[1]);
|
e_1[1]=1.f/(EPSILON+mem[1]);
|
||||||
|
@ -682,6 +682,7 @@ int optimize_framesize(const opus_val16 *x, int len, int C, opus_int32 Fs,
|
||||||
pos = 3;
|
pos = 3;
|
||||||
} else {
|
} else {
|
||||||
pos=1;
|
pos=1;
|
||||||
|
offset=0;
|
||||||
}
|
}
|
||||||
N=IMIN(len/subframe, MAX_DYNAMIC_FRAMESIZE);
|
N=IMIN(len/subframe, MAX_DYNAMIC_FRAMESIZE);
|
||||||
/* Just silencing a warning, it's really initialized later */
|
/* Just silencing a warning, it's really initialized later */
|
||||||
|
@ -693,7 +694,7 @@ int optimize_framesize(const opus_val16 *x, int len, int C, opus_int32 Fs,
|
||||||
int j;
|
int j;
|
||||||
tmp=EPSILON;
|
tmp=EPSILON;
|
||||||
|
|
||||||
downmix(x, sub, subframe, i*subframe, 0, -2, C);
|
downmix(x, sub, subframe, i*subframe+offset, 0, -2, C);
|
||||||
if (i==0)
|
if (i==0)
|
||||||
memx = sub[0];
|
memx = sub[0];
|
||||||
for (j=0;j<subframe;j++)
|
for (j=0;j<subframe;j++)
|
||||||
|
|
|
@ -86,10 +86,6 @@ typedef void (*downmix_func)(const void *, opus_val32 *, int, int, int, int, int
|
||||||
void downmix_float(const void *_x, opus_val32 *sub, int subframe, int offset, int c1, int c2, int C);
|
void downmix_float(const void *_x, opus_val32 *sub, int subframe, int offset, int c1, int c2, int C);
|
||||||
void downmix_int(const void *_x, opus_val32 *sub, int subframe, int offset, int c1, int c2, int C);
|
void downmix_int(const void *_x, opus_val32 *sub, int subframe, int offset, int c1, int c2, int C);
|
||||||
|
|
||||||
int optimize_framesize(const opus_val16 *x, int len, int C, opus_int32 Fs,
|
|
||||||
int bitrate, opus_val16 tonality, float *mem, int buffering,
|
|
||||||
downmix_func downmix);
|
|
||||||
|
|
||||||
int encode_size(int size, unsigned char *data);
|
int encode_size(int size, unsigned char *data);
|
||||||
|
|
||||||
opus_int32 frame_size_select(opus_int32 frame_size, int variable_duration, opus_int32 Fs);
|
opus_int32 frame_size_select(opus_int32 frame_size, int variable_duration, opus_int32 Fs);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue