mirror of
https://github.com/mpv-player/mpv
synced 2024-12-27 09:32:40 +00:00
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 */
|
||||
int af_to_dB(int n, float* in, float* out, float k);
|
||||
/* 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 */
|
||||
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 */
|
||||
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 pow[AF_NCH]; // Estimated power level [dB]
|
||||
float tresh[AF_NCH]; // Threshold [dB]
|
||||
float attack[AF_NCH]; // Attack time [ms]
|
||||
float release[AF_NCH]; // Release time [ms]
|
||||
int attack[AF_NCH]; // Attack time [ms]
|
||||
int release[AF_NCH]; // Release time [ms]
|
||||
float ratio[AF_NCH]; // Compression ratio
|
||||
}af_comp_t;
|
||||
|
||||
|
@ -26,8 +26,8 @@ typedef struct af_gate_s
|
||||
float time[AF_NCH]; // Forgetting factor for power estimate
|
||||
float pow[AF_NCH]; // Estimated power level [dB]
|
||||
float tresh[AF_NCH]; // Threshold [dB]
|
||||
float attack[AF_NCH]; // Attack time [ms]
|
||||
float release[AF_NCH]; // Release time [ms]
|
||||
int attack[AF_NCH]; // Attack time [ms]
|
||||
int release[AF_NCH]; // Release time [ms]
|
||||
float range[AF_NCH]; // Range level [dB]
|
||||
}af_gate_t;
|
||||
|
||||
|
@ -113,6 +113,8 @@ static int control(struct af_instance_s* af, int cmd, void* arg)
|
||||
// Deallocate memory
|
||||
static void uninit(struct af_instance_s* af)
|
||||
{
|
||||
if(af->data->audio)
|
||||
free(af->data->audio);
|
||||
if(af->data)
|
||||
free(af->data);
|
||||
if(af->setup)
|
||||
|
@ -29,7 +29,7 @@ inline int af_to_dB(int n, float* in, float* out, float k)
|
||||
if(!in || !out)
|
||||
return AF_ERROR;
|
||||
|
||||
for(i=0;i<AF_NCH;i++){
|
||||
for(i=0;i<n;i++){
|
||||
if(in[i] == 0.0)
|
||||
out[i]=-200.0;
|
||||
else
|
||||
@ -38,30 +38,30 @@ inline int af_to_dB(int n, float* in, float* out, float k)
|
||||
return AF_OK;
|
||||
}
|
||||
|
||||
/* Convert from ms to sample time*/
|
||||
inline int af_from_ms(int n, float* in, float* out, int rate, float mi, float ma)
|
||||
/* Convert from ms to sample time */
|
||||
inline int af_from_ms(int n, float* in, int* out, int rate, float mi, float ma)
|
||||
{
|
||||
int i = 0;
|
||||
// Sanity check
|
||||
if(!in || !out)
|
||||
return AF_ERROR;
|
||||
|
||||
for(i=0;i<AF_NCH;i++)
|
||||
out[i]=clamp(in[i],ma,mi);
|
||||
for(i=0;i<n;i++)
|
||||
out[i]=(int)((float)rate * clamp(in[i],mi,ma)/1000.0);
|
||||
|
||||
return AF_OK;
|
||||
}
|
||||
|
||||
/* 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;
|
||||
// Sanity check
|
||||
if(!in || !out)
|
||||
if(!in || !out || !rate)
|
||||
return AF_ERROR;
|
||||
|
||||
for(i=0;i<AF_NCH;i++)
|
||||
out[i]=in[i];
|
||||
for(i=0;i<n;i++)
|
||||
out[i]=1000.0 * (float)in[i]/((float)rate);
|
||||
|
||||
return AF_OK;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user