mirror of https://github.com/mpv-player/mpv
10l memory leak + bug fixes in ms to sample time conversion
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@8675 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
parent
630d1fcf94
commit
ec6de0f24a
|
@ -187,9 +187,9 @@ int af_from_dB(int n, float* in, float* out, float k, float mi, float ma);
|
||||||
AF_OK if of and AF_ERROR if fail */
|
AF_OK if of and AF_ERROR if fail */
|
||||||
int af_to_dB(int n, float* in, float* out, float k);
|
int af_to_dB(int n, float* in, float* out, float k);
|
||||||
/* Helper function used to convert from ms to sample time*/
|
/* Helper function used to convert from ms to sample time*/
|
||||||
int af_from_ms(int n, float* in, float* out, int rate, float mi, float ma);
|
int af_from_ms(int n, float* in, int* out, int rate, float mi, float ma);
|
||||||
/* Helper function used to convert from sample time to ms */
|
/* Helper function used to convert from sample time to ms */
|
||||||
int af_to_ms(int n, float* in, float* out, int rate);
|
int af_to_ms(int n, int* in, float* out, int rate);
|
||||||
/* Helper function for testing the output format */
|
/* Helper function for testing the output format */
|
||||||
int af_test_output(struct af_instance_s* af, af_data_t* out);
|
int af_test_output(struct af_instance_s* af, af_data_t* out);
|
||||||
|
|
||||||
|
|
|
@ -26,8 +26,8 @@ typedef struct af_comp_s
|
||||||
float time[AF_NCH]; // Forgetting factor for power estimate
|
float time[AF_NCH]; // Forgetting factor for power estimate
|
||||||
float pow[AF_NCH]; // Estimated power level [dB]
|
float pow[AF_NCH]; // Estimated power level [dB]
|
||||||
float tresh[AF_NCH]; // Threshold [dB]
|
float tresh[AF_NCH]; // Threshold [dB]
|
||||||
float attack[AF_NCH]; // Attack time [ms]
|
int attack[AF_NCH]; // Attack time [ms]
|
||||||
float release[AF_NCH]; // Release time [ms]
|
int release[AF_NCH]; // Release time [ms]
|
||||||
float ratio[AF_NCH]; // Compression ratio
|
float ratio[AF_NCH]; // Compression ratio
|
||||||
}af_comp_t;
|
}af_comp_t;
|
||||||
|
|
||||||
|
|
|
@ -26,8 +26,8 @@ typedef struct af_gate_s
|
||||||
float time[AF_NCH]; // Forgetting factor for power estimate
|
float time[AF_NCH]; // Forgetting factor for power estimate
|
||||||
float pow[AF_NCH]; // Estimated power level [dB]
|
float pow[AF_NCH]; // Estimated power level [dB]
|
||||||
float tresh[AF_NCH]; // Threshold [dB]
|
float tresh[AF_NCH]; // Threshold [dB]
|
||||||
float attack[AF_NCH]; // Attack time [ms]
|
int attack[AF_NCH]; // Attack time [ms]
|
||||||
float release[AF_NCH]; // Release time [ms]
|
int release[AF_NCH]; // Release time [ms]
|
||||||
float range[AF_NCH]; // Range level [dB]
|
float range[AF_NCH]; // Range level [dB]
|
||||||
}af_gate_t;
|
}af_gate_t;
|
||||||
|
|
||||||
|
|
|
@ -113,6 +113,8 @@ static int control(struct af_instance_s* af, int cmd, void* arg)
|
||||||
// Deallocate memory
|
// Deallocate memory
|
||||||
static void uninit(struct af_instance_s* af)
|
static void uninit(struct af_instance_s* af)
|
||||||
{
|
{
|
||||||
|
if(af->data->audio)
|
||||||
|
free(af->data->audio);
|
||||||
if(af->data)
|
if(af->data)
|
||||||
free(af->data);
|
free(af->data);
|
||||||
if(af->setup)
|
if(af->setup)
|
||||||
|
|
|
@ -29,7 +29,7 @@ inline int af_to_dB(int n, float* in, float* out, float k)
|
||||||
if(!in || !out)
|
if(!in || !out)
|
||||||
return AF_ERROR;
|
return AF_ERROR;
|
||||||
|
|
||||||
for(i=0;i<AF_NCH;i++){
|
for(i=0;i<n;i++){
|
||||||
if(in[i] == 0.0)
|
if(in[i] == 0.0)
|
||||||
out[i]=-200.0;
|
out[i]=-200.0;
|
||||||
else
|
else
|
||||||
|
@ -38,30 +38,30 @@ inline int af_to_dB(int n, float* in, float* out, float k)
|
||||||
return AF_OK;
|
return AF_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Convert from ms to sample time*/
|
/* Convert from ms to sample time */
|
||||||
inline int af_from_ms(int n, float* in, float* out, int rate, float mi, float ma)
|
inline int af_from_ms(int n, float* in, int* out, int rate, float mi, float ma)
|
||||||
{
|
{
|
||||||
int i = 0;
|
int i = 0;
|
||||||
// Sanity check
|
// Sanity check
|
||||||
if(!in || !out)
|
if(!in || !out)
|
||||||
return AF_ERROR;
|
return AF_ERROR;
|
||||||
|
|
||||||
for(i=0;i<AF_NCH;i++)
|
for(i=0;i<n;i++)
|
||||||
out[i]=clamp(in[i],ma,mi);
|
out[i]=(int)((float)rate * clamp(in[i],mi,ma)/1000.0);
|
||||||
|
|
||||||
return AF_OK;
|
return AF_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Convert from sample time to ms */
|
/* Convert from sample time to ms */
|
||||||
inline int af_to_ms(int n, float* in, float* out, int rate)
|
inline int af_to_ms(int n, int* in, float* out, int rate)
|
||||||
{
|
{
|
||||||
int i = 0;
|
int i = 0;
|
||||||
// Sanity check
|
// Sanity check
|
||||||
if(!in || !out)
|
if(!in || !out || !rate)
|
||||||
return AF_ERROR;
|
return AF_ERROR;
|
||||||
|
|
||||||
for(i=0;i<AF_NCH;i++)
|
for(i=0;i<n;i++)
|
||||||
out[i]=in[i];
|
out[i]=1000.0 * (float)in[i]/((float)rate);
|
||||||
|
|
||||||
return AF_OK;
|
return AF_OK;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue