mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
psymodel: Remove wrapper functions.
Instead use the function pointers directly.
This commit is contained in:
parent
5b29af624f
commit
b58e298572
@ -537,8 +537,8 @@ static int aac_encode_frame(AVCodecContext *avctx,
|
|||||||
wi[ch].num_windows = 1;
|
wi[ch].num_windows = 1;
|
||||||
wi[ch].grouping[0] = 1;
|
wi[ch].grouping[0] = 1;
|
||||||
} else {
|
} else {
|
||||||
wi[ch] = ff_psy_suggest_window(&s->psy, samples2, la, cur_channel,
|
wi[ch] = s->psy.model->window(&s->psy, samples2, la, cur_channel,
|
||||||
ics->window_sequence[0]);
|
ics->window_sequence[0]);
|
||||||
}
|
}
|
||||||
ics->window_sequence[1] = ics->window_sequence[0];
|
ics->window_sequence[1] = ics->window_sequence[0];
|
||||||
ics->window_sequence[0] = wi[ch].window_type[0];
|
ics->window_sequence[0] = wi[ch].window_type[0];
|
||||||
@ -570,7 +570,7 @@ static int aac_encode_frame(AVCodecContext *avctx,
|
|||||||
put_bits(&s->pb, 4, chan_el_counter[tag]++);
|
put_bits(&s->pb, 4, chan_el_counter[tag]++);
|
||||||
for (ch = 0; ch < chans; ch++) {
|
for (ch = 0; ch < chans; ch++) {
|
||||||
s->cur_channel = start_ch + ch;
|
s->cur_channel = start_ch + ch;
|
||||||
ff_psy_set_band_info(&s->psy, s->cur_channel, cpe->ch[ch].coeffs, &wi[ch]);
|
s->psy.model->analyze(&s->psy, s->cur_channel, cpe->ch[ch].coeffs, &wi[ch]);
|
||||||
s->coder->search_for_quantizers(avctx, s, &cpe->ch[ch], s->lambda);
|
s->coder->search_for_quantizers(avctx, s, &cpe->ch[ch], s->lambda);
|
||||||
}
|
}
|
||||||
cpe->common_window = 0;
|
cpe->common_window = 0;
|
||||||
|
@ -45,19 +45,6 @@ av_cold int ff_psy_init(FFPsyContext *ctx, AVCodecContext *avctx,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
FFPsyWindowInfo ff_psy_suggest_window(FFPsyContext *ctx,
|
|
||||||
const int16_t *audio, const int16_t *la,
|
|
||||||
int channel, int prev_type)
|
|
||||||
{
|
|
||||||
return ctx->model->window(ctx, audio, la, channel, prev_type);
|
|
||||||
}
|
|
||||||
|
|
||||||
void ff_psy_set_band_info(FFPsyContext *ctx, int channel,
|
|
||||||
const float *coeffs, const FFPsyWindowInfo *wi)
|
|
||||||
{
|
|
||||||
ctx->model->analyze(ctx, channel, coeffs, wi);
|
|
||||||
}
|
|
||||||
|
|
||||||
av_cold void ff_psy_end(FFPsyContext *ctx)
|
av_cold void ff_psy_end(FFPsyContext *ctx)
|
||||||
{
|
{
|
||||||
if (ctx->model->end)
|
if (ctx->model->end)
|
||||||
|
@ -80,8 +80,30 @@ typedef struct FFPsyContext {
|
|||||||
typedef struct FFPsyModel {
|
typedef struct FFPsyModel {
|
||||||
const char *name;
|
const char *name;
|
||||||
int (*init) (FFPsyContext *apc);
|
int (*init) (FFPsyContext *apc);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Suggest window sequence for channel.
|
||||||
|
*
|
||||||
|
* @param ctx model context
|
||||||
|
* @param audio samples for the current frame
|
||||||
|
* @param la lookahead samples (NULL when unavailable)
|
||||||
|
* @param channel number of channel element to analyze
|
||||||
|
* @param prev_type previous window type
|
||||||
|
*
|
||||||
|
* @return suggested window information in a structure
|
||||||
|
*/
|
||||||
FFPsyWindowInfo (*window)(FFPsyContext *ctx, const int16_t *audio, const int16_t *la, int channel, int prev_type);
|
FFPsyWindowInfo (*window)(FFPsyContext *ctx, const int16_t *audio, const int16_t *la, int channel, int prev_type);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Perform psychoacoustic analysis and set band info (threshold, energy).
|
||||||
|
*
|
||||||
|
* @param ctx model context
|
||||||
|
* @param channel audio channel number
|
||||||
|
* @param coeffs pointer to the transformed coefficients
|
||||||
|
* @param wi window information
|
||||||
|
*/
|
||||||
void (*analyze)(FFPsyContext *ctx, int channel, const float *coeffs, const FFPsyWindowInfo *wi);
|
void (*analyze)(FFPsyContext *ctx, int channel, const float *coeffs, const FFPsyWindowInfo *wi);
|
||||||
|
|
||||||
void (*end) (FFPsyContext *apc);
|
void (*end) (FFPsyContext *apc);
|
||||||
} FFPsyModel;
|
} FFPsyModel;
|
||||||
|
|
||||||
@ -100,33 +122,6 @@ av_cold int ff_psy_init(FFPsyContext *ctx, AVCodecContext *avctx,
|
|||||||
int num_lens,
|
int num_lens,
|
||||||
const uint8_t **bands, const int* num_bands);
|
const uint8_t **bands, const int* num_bands);
|
||||||
|
|
||||||
/**
|
|
||||||
* Suggest window sequence for channel.
|
|
||||||
*
|
|
||||||
* @param ctx model context
|
|
||||||
* @param audio samples for the current frame
|
|
||||||
* @param la lookahead samples (NULL when unavailable)
|
|
||||||
* @param channel number of channel element to analyze
|
|
||||||
* @param prev_type previous window type
|
|
||||||
*
|
|
||||||
* @return suggested window information in a structure
|
|
||||||
*/
|
|
||||||
FFPsyWindowInfo ff_psy_suggest_window(FFPsyContext *ctx,
|
|
||||||
const int16_t *audio, const int16_t *la,
|
|
||||||
int channel, int prev_type);
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Perform psychoacoustic analysis and set band info (threshold, energy).
|
|
||||||
*
|
|
||||||
* @param ctx model context
|
|
||||||
* @param channel audio channel number
|
|
||||||
* @param coeffs pointer to the transformed coefficients
|
|
||||||
* @param wi window information
|
|
||||||
*/
|
|
||||||
void ff_psy_set_band_info(FFPsyContext *ctx, int channel, const float *coeffs,
|
|
||||||
const FFPsyWindowInfo *wi);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Cleanup model context at the end.
|
* Cleanup model context at the end.
|
||||||
*
|
*
|
||||||
|
Loading…
Reference in New Issue
Block a user