mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2025-03-06 20:47:41 +00:00
use cutoff frequency to adjust bandwidth in ac3 encoder
Originally committed as revision 11338 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
08ac1e783e
commit
02c164c148
@ -632,6 +632,7 @@ static int AC3_encode_init(AVCodecContext *avctx)
|
||||
AC3EncodeContext *s = avctx->priv_data;
|
||||
int i, j, ch;
|
||||
float alpha;
|
||||
int bw_code;
|
||||
static const uint8_t channel_mode_defs[6] = {
|
||||
0x01, /* C */
|
||||
0x02, /* L R */
|
||||
@ -683,12 +684,21 @@ static int AC3_encode_init(AVCodecContext *avctx)
|
||||
s->frame_size = s->frame_size_min;
|
||||
|
||||
/* bit allocation init */
|
||||
for(ch=0;ch<s->nb_channels;ch++) {
|
||||
/* bandwidth for each channel */
|
||||
if(avctx->cutoff) {
|
||||
/* calculate bandwidth based on user-specified cutoff frequency */
|
||||
int cutoff = av_clip(avctx->cutoff, 1, s->sample_rate >> 1);
|
||||
int fbw_coeffs = cutoff * 512 / s->sample_rate;
|
||||
bw_code = av_clip((fbw_coeffs - 73) / 3, 0, 60);
|
||||
} else {
|
||||
/* use default bandwidth setting */
|
||||
/* XXX: should compute the bandwidth according to the frame
|
||||
size, so that we avoid anoying high freq artefacts */
|
||||
s->chbwcod[ch] = 50; /* sample bandwidth as mpeg audio layer 2 table 0 */
|
||||
s->nb_coefs[ch] = ((s->chbwcod[ch] + 12) * 3) + 37;
|
||||
bw_code = 50;
|
||||
}
|
||||
for(ch=0;ch<s->nb_channels;ch++) {
|
||||
/* bandwidth for each channel */
|
||||
s->chbwcod[ch] = bw_code;
|
||||
s->nb_coefs[ch] = bw_code * 3 + 73;
|
||||
}
|
||||
if (s->lfe) {
|
||||
s->nb_coefs[s->lfe_channel] = 7; /* fixed */
|
||||
|
@ -2072,7 +2072,7 @@ typedef struct AVCodecContext {
|
||||
int directpred;
|
||||
|
||||
/**
|
||||
* Audio cutoff bandwidth (0 means "automatic"), currently used only by FAAC.
|
||||
* Audio cutoff bandwidth (0 means "automatic")
|
||||
* - encoding: Set by user.
|
||||
* - decoding: unused
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user