psymodel: Remove wrapper functions.

Instead use the function pointers directly.
pull/2/head
Nathan Caldwell 14 years ago committed by Alex Converse
parent 5b29af624f
commit b58e298572
  1. 4
      libavcodec/aacenc.c
  2. 13
      libavcodec/psymodel.c
  3. 49
      libavcodec/psymodel.h

@ -537,7 +537,7 @@ static int aac_encode_frame(AVCodecContext *avctx,
wi[ch].num_windows = 1;
wi[ch].grouping[0] = 1;
} 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[1] = ics->window_sequence[0];
@ -570,7 +570,7 @@ static int aac_encode_frame(AVCodecContext *avctx,
put_bits(&s->pb, 4, chan_el_counter[tag]++);
for (ch = 0; ch < chans; 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);
}
cpe->common_window = 0;

@ -45,19 +45,6 @@ av_cold int ff_psy_init(FFPsyContext *ctx, AVCodecContext *avctx,
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)
{
if (ctx->model->end)

@ -80,27 +80,8 @@ typedef struct FFPsyContext {
typedef struct FFPsyModel {
const char *name;
int (*init) (FFPsyContext *apc);
FFPsyWindowInfo (*window)(FFPsyContext *ctx, const int16_t *audio, const int16_t *la, int channel, int prev_type);
void (*analyze)(FFPsyContext *ctx, int channel, const float *coeffs, const FFPsyWindowInfo *wi);
void (*end) (FFPsyContext *apc);
} FFPsyModel;
/**
* Initialize psychoacoustic model.
*
* @param ctx model context
* @param avctx codec context
* @param num_lens number of possible frame lengths
* @param bands scalefactor band lengths for all frame lengths
* @param num_bands number of scalefactor bands for all frame lengths
*
* @return zero if successful, a negative value if not
*/
av_cold int ff_psy_init(FFPsyContext *ctx, AVCodecContext *avctx,
int num_lens,
const uint8_t **bands, const int* num_bands);
/**
/**
* Suggest window sequence for channel.
*
* @param ctx model context
@ -111,12 +92,9 @@ av_cold int ff_psy_init(FFPsyContext *ctx, AVCodecContext *avctx,
*
* @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);
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
@ -124,8 +102,25 @@ FFPsyWindowInfo ff_psy_suggest_window(FFPsyContext *ctx,
* @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);
void (*analyze)(FFPsyContext *ctx, int channel, const float *coeffs, const FFPsyWindowInfo *wi);
void (*end) (FFPsyContext *apc);
} FFPsyModel;
/**
* Initialize psychoacoustic model.
*
* @param ctx model context
* @param avctx codec context
* @param num_lens number of possible frame lengths
* @param bands scalefactor band lengths for all frame lengths
* @param num_bands number of scalefactor bands for all frame lengths
*
* @return zero if successful, a negative value if not
*/
av_cold int ff_psy_init(FFPsyContext *ctx, AVCodecContext *avctx,
int num_lens,
const uint8_t **bands, const int* num_bands);
/**
* Cleanup model context at the end.

Loading…
Cancel
Save