mirror of https://git.ffmpeg.org/ffmpeg.git
Cosmetics
Originally committed as revision 15838 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
f29289eec7
commit
1c3ae1abf2
|
@ -18,6 +18,7 @@
|
||||||
* License along with FFmpeg; if not, write to the Free Software
|
* License along with FFmpeg; if not, write to the Free Software
|
||||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @file qcelpdec.c
|
* @file qcelpdec.c
|
||||||
* QCELP decoder
|
* QCELP decoder
|
||||||
|
@ -38,15 +39,13 @@
|
||||||
#undef NDEBUG
|
#undef NDEBUG
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
|
||||||
static void weighted_vector_sumf(float *out,
|
static void weighted_vector_sumf(float *out, const float *in_a,
|
||||||
const float *in_a,
|
const float *in_b, float weight_coeff_a,
|
||||||
const float *in_b,
|
float weight_coeff_b, int length)
|
||||||
float weight_coeff_a,
|
{
|
||||||
float weight_coeff_b,
|
int i;
|
||||||
int length) {
|
|
||||||
int i;
|
|
||||||
|
|
||||||
for (i = 0; i < length; i++)
|
for(i=0; i<length; i++)
|
||||||
out[i] = weight_coeff_a * in_a[i]
|
out[i] = weight_coeff_a * in_a[i]
|
||||||
+ weight_coeff_b * in_b[i];
|
+ weight_coeff_b * in_b[i];
|
||||||
}
|
}
|
||||||
|
@ -205,25 +204,28 @@ static void apply_gain_ctrl(float *v_out,
|
||||||
*
|
*
|
||||||
* @return filter output vector
|
* @return filter output vector
|
||||||
*/
|
*/
|
||||||
static const float *do_pitchfilter(float memory[303],
|
static const float *do_pitchfilter(float memory[303], const float v_in[160],
|
||||||
const float v_in[160],
|
const float gain[4], const uint8_t *lag,
|
||||||
const float gain[4],
|
const uint8_t pfrac[4])
|
||||||
const uint8_t *lag,
|
{
|
||||||
const uint8_t pfrac[4]) {
|
|
||||||
int i, j;
|
int i, j;
|
||||||
float *v_lag, *v_out;
|
float *v_lag, *v_out;
|
||||||
const float *v_len;
|
const float *v_len;
|
||||||
|
|
||||||
v_out = memory + 143; // Output vector starts at memory[143].
|
v_out = memory + 143; // Output vector starts at memory[143].
|
||||||
|
|
||||||
for (i = 0; i < 4; i++)
|
for(i=0; i<4; i++)
|
||||||
if (gain[i]) {
|
{
|
||||||
|
if(gain[i])
|
||||||
|
{
|
||||||
v_lag = memory + 143 + 40 * i - lag[i];
|
v_lag = memory + 143 + 40 * i - lag[i];
|
||||||
for (v_len = v_in + 40; v_in < v_len; v_in++) {
|
for(v_len=v_in+40; v_in<v_len; v_in++)
|
||||||
if (pfrac[i]) { // If it is a fractional lag...
|
{
|
||||||
for (j = 0, *v_out = 0.; j < 4; j++)
|
if(pfrac[i]) // If it is a fractional lag...
|
||||||
|
{
|
||||||
|
for(j=0, *v_out=0.; j<4; j++)
|
||||||
*v_out += qcelp_hammsinc_table[j] * (v_lag[j-4] + v_lag[3-j]);
|
*v_out += qcelp_hammsinc_table[j] * (v_lag[j-4] + v_lag[3-j]);
|
||||||
} else
|
}else
|
||||||
*v_out = *v_lag;
|
*v_out = *v_lag;
|
||||||
|
|
||||||
*v_out = *v_in + gain[i] * *v_out;
|
*v_out = *v_in + gain[i] * *v_out;
|
||||||
|
@ -231,11 +233,13 @@ static const float *do_pitchfilter(float memory[303],
|
||||||
v_lag++;
|
v_lag++;
|
||||||
v_out++;
|
v_out++;
|
||||||
}
|
}
|
||||||
} else {
|
}else
|
||||||
|
{
|
||||||
memcpy(v_out, v_in, 40 * sizeof(float));
|
memcpy(v_out, v_in, 40 * sizeof(float));
|
||||||
v_in += 40;
|
v_in += 40;
|
||||||
v_out += 40;
|
v_out += 40;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
memmove(memory, memory + 160, 143 * sizeof(float));
|
memmove(memory, memory + 160, 143 * sizeof(float));
|
||||||
return memory + 143;
|
return memory + 143;
|
||||||
|
@ -252,47 +256,52 @@ static const float *do_pitchfilter(float memory[303],
|
||||||
* @param lpc float vector for the resulting LPC
|
* @param lpc float vector for the resulting LPC
|
||||||
* @param subframe_num frame number in decoded stream
|
* @param subframe_num frame number in decoded stream
|
||||||
*/
|
*/
|
||||||
void interpolate_lpc(QCELPContext *q,
|
void interpolate_lpc(QCELPContext *q, const float *curr_lspf, float *lpc,
|
||||||
const float *curr_lspf,
|
const int subframe_num)
|
||||||
float *lpc,
|
{
|
||||||
const int subframe_num) {
|
|
||||||
float interpolated_lspf[10];
|
float interpolated_lspf[10];
|
||||||
float weight;
|
float weight;
|
||||||
|
|
||||||
if (q->framerate >= RATE_QUARTER) {
|
if(q->framerate >= RATE_QUARTER)
|
||||||
weight = 0.25 * (subframe_num + 1);
|
weight = 0.25 * (subframe_num + 1);
|
||||||
} else if (q->framerate == RATE_OCTAVE && !subframe_num) {
|
else if(q->framerate == RATE_OCTAVE && !subframe_num)
|
||||||
weight = 0.625;
|
weight = 0.625;
|
||||||
} else {
|
else
|
||||||
weight = 1.0;
|
weight = 1.0;
|
||||||
}
|
|
||||||
|
|
||||||
if (weight != 1.0) {
|
if(weight != 1.0)
|
||||||
weighted_vector_sumf(interpolated_lspf, curr_lspf, q->prev_lspf, weight, 1.0 - weight, 10);
|
{
|
||||||
|
weighted_vector_sumf(interpolated_lspf, curr_lspf, q->prev_lspf,
|
||||||
|
weight, 1.0 - weight, 10);
|
||||||
qcelp_lspf2lpc(interpolated_lspf, lpc);
|
qcelp_lspf2lpc(interpolated_lspf, lpc);
|
||||||
} else if (q->framerate >= RATE_QUARTER || (q->framerate == I_F_Q && !subframe_num))
|
}else if(q->framerate >= RATE_QUARTER || (q->framerate == I_F_Q && !subframe_num))
|
||||||
qcelp_lspf2lpc(curr_lspf, lpc);
|
qcelp_lspf2lpc(curr_lspf, lpc);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int buf_size2framerate(const int buf_size) {
|
static int buf_size2framerate(const int buf_size)
|
||||||
switch (buf_size) {
|
{
|
||||||
case 35:
|
switch(buf_size)
|
||||||
return RATE_FULL;
|
{
|
||||||
case 17:
|
case 35:
|
||||||
return RATE_HALF;
|
return RATE_FULL;
|
||||||
case 8:
|
case 17:
|
||||||
return RATE_QUARTER;
|
return RATE_HALF;
|
||||||
case 4:
|
case 8:
|
||||||
return RATE_OCTAVE;
|
return RATE_QUARTER;
|
||||||
case 1:
|
case 4:
|
||||||
return SILENCE;
|
return RATE_OCTAVE;
|
||||||
|
case 1:
|
||||||
|
return SILENCE;
|
||||||
}
|
}
|
||||||
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void warn_insufficient_frame_quality(AVCodecContext *avctx,
|
static void warn_insufficient_frame_quality(AVCodecContext *avctx,
|
||||||
const char *message) {
|
const char *message)
|
||||||
av_log(avctx, AV_LOG_WARNING, "Frame #%d, IFQ: %s\n", avctx->frame_number, message);
|
{
|
||||||
|
av_log(avctx, AV_LOG_WARNING, "Frame #%d, IFQ: %s\n", avctx->frame_number,
|
||||||
|
message);
|
||||||
}
|
}
|
||||||
|
|
||||||
AVCodec qcelp_decoder =
|
AVCodec qcelp_decoder =
|
||||||
|
|
Loading…
Reference in New Issue