History

Turn on AAC rate control.

Originally committed as revision 19379 to svn://svn.ffmpeg.org/ffmpeg/trunk

Alex Converse committed 17 years ago

Commit 7a4eebc1 parent c8f47d82 files · +6 −14Browse files

Unified · Split

2 files
  1. libavcodec/aaccoder.c +5 −14
  2. libavcodec/aacenc.c +1 −0
libavcodec/aaccoder.c+5−14
@@ -457,15 +457,6 @@ static void encode_window_bands_info(AACEncContext *s, SingleChannelElement *sce · 456 unmodified lines
457457 }
458458 }
459459
460−static void encode_window_bands_info_fixed(AACEncContext *s,
461− SingleChannelElement *sce,
462− int win, int group_len,
463− const float lambda)
464−{
465− encode_window_bands_info(s, sce, win, group_len, 1.0f);
466−}
467−
468−
469460 typedef struct TrellisPath {
470461 float cost;
471462 int prev;
@@ -700,7 +691,7 @@ static void search_for_quantizers_twoloop(AVCodecContext *avctx, · 228 unmodified lines
700691 sce->ics.swb_sizes[g],
701692 sce->sf_idx[w*16+g],
702693 ESC_BT,
703− 1.0,
694+ lambda,
704695 INFINITY,
705696 &b);
706697 bb += b;
@@ -710,7 +701,7 @@ static void search_for_quantizers_twoloop(AVCodecContext *avctx, · 3 unmodified lines
710701 minbits = bb;
711702 }
712703 }
713− dists[w*16+g] = mindist - minbits;
704+ dists[w*16+g] = (mindist - minbits) / lambda;
714705 bits = minbits;
715706 if (prev != -1) {
716707 bits += ff_aac_scalefactor_bits[sce->sf_idx[w*16+g] - prev + SCALE_DIFF_ZERO];
@@ -870,12 +861,12 @@ static void search_for_quantizers_faac(AVCodecContext *avctx, AACEncContext *s, · 153 unmodified lines
870861 sce->ics.swb_sizes[g],
871862 scf,
872863 ESC_BT,
873− 1.0,
864+ lambda,
874865 INFINITY,
875866 &b);
876867 dist -= b;
877868 }
878− dist *= 1.0f/512.0f;
869+ dist *= 1.0f / 512.0f / lambda;
879870 quant_max = quant(maxq[w*16+g], ff_aac_pow2sf_tab[200 - scf + SCALE_ONE_POS - SCALE_DIV_512]);
880871 if (quant_max >= 8191) { // too much, return to the previous quantizer
881872 sce->sf_idx[w*16+g] = prev_scf;
@@ -1019,7 +1010,7 @@ static void search_for_ms(AACEncContext *s, ChannelElement *cpe, · 137 unmodified lines
10191010 AACCoefficientsEncoder ff_aac_coders[] = {
10201011 {
10211012 search_for_quantizers_faac,
1022− encode_window_bands_info_fixed,
1013+ encode_window_bands_info,
10231014 quantize_and_encode_band,
10241015 // search_for_ms,
10251016 },
libavcodec/aacenc.c+1−0
@@ -583,6 +583,7 @@ static int aac_encode_frame(AVCodecContext *avctx, · 582 unmodified lines
583583 if (!(avctx->flags & CODEC_FLAG_QSCALE)) {
584584 float ratio = avctx->bit_rate * 1024.0f / avctx->sample_rate / avctx->frame_bits;
585585 s->lambda *= ratio;
586+ s->lambda = fminf(s->lambda, 65536.f);
586587 }
587588
588589 if (avctx->frame_bits > 6144*avctx->channels)

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t