aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRostislav Pehlivanov <atomnuker@gmail.com>2015-07-02 19:13:04 +0100
committerMichael Niedermayer <michaelni@gmx.at>2015-07-05 16:36:38 +0200
commite06578e392e36b8d1a9ce33b88f7825529ee45e3 (patch)
treee414c5b6bcc3a52bab972a7e821dc1316c7bdb3f
parent671bdd4b0977c6cc77bdc55883ac841a7c4af802 (diff)
downloadffmpeg-e06578e392e36b8d1a9ce33b88f7825529ee45e3.tar.gz
aacenc: use the new function for setting special band scalefactor indices
This commit enables the function added with commit 7c10b87 and uses that new function for setting any special scalefactor indices. This commit does not change the behaviour of the encoder since no bands are being marked as either NOISE_BT(due to the previous PNS implementation removed in the previous commit) or INTENSITY_BT2/INTENSITY_BT. Reviewed-by: Claudio Freire <klaussfreire@gmail.com> Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r--libavcodec/aaccoder.c4
-rw-r--r--libavcodec/aacenc.c3
-rw-r--r--libavcodec/aacenc.h1
3 files changed, 8 insertions, 0 deletions
diff --git a/libavcodec/aaccoder.c b/libavcodec/aaccoder.c
index aaf70d5372..22104a2bd6 100644
--- a/libavcodec/aaccoder.c
+++ b/libavcodec/aaccoder.c
@@ -1222,24 +1222,28 @@ AACCoefficientsEncoder ff_aac_coders[AAC_CODER_NB] = {
search_for_quantizers_faac,
encode_window_bands_info,
quantize_and_encode_band,
+ set_special_band_scalefactors,
search_for_ms,
},
[AAC_CODER_ANMR] = {
search_for_quantizers_anmr,
encode_window_bands_info,
quantize_and_encode_band,
+ set_special_band_scalefactors,
search_for_ms,
},
[AAC_CODER_TWOLOOP] = {
search_for_quantizers_twoloop,
codebook_trellis_rate,
quantize_and_encode_band,
+ set_special_band_scalefactors,
search_for_ms,
},
[AAC_CODER_FAST] = {
search_for_quantizers_fast,
encode_window_bands_info,
quantize_and_encode_band,
+ set_special_band_scalefactors,
search_for_ms,
},
};
diff --git a/libavcodec/aacenc.c b/libavcodec/aacenc.c
index 05a8162394..3854066fc1 100644
--- a/libavcodec/aacenc.c
+++ b/libavcodec/aacenc.c
@@ -652,6 +652,9 @@ static int aac_encode_frame(AVCodecContext *avctx, AVPacket *avpkt,
s->coder->search_for_ms(s, cpe, s->lambda);
}
}
+ if (s->coder->set_special_band_scalefactors)
+ for (ch = 0; ch < chans; ch++)
+ s->coder->set_special_band_scalefactors(s, &cpe->ch[ch]);
adjust_frame_information(cpe, chans);
if (chans == 2) {
put_bits(&s->pb, 1, cpe->common_window);
diff --git a/libavcodec/aacenc.h b/libavcodec/aacenc.h
index 7c1f277fa1..cc1b06afac 100644
--- a/libavcodec/aacenc.h
+++ b/libavcodec/aacenc.h
@@ -54,6 +54,7 @@ typedef struct AACCoefficientsEncoder {
int win, int group_len, const float lambda);
void (*quantize_and_encode_band)(struct AACEncContext *s, PutBitContext *pb, const float *in, int size,
int scale_idx, int cb, const float lambda);
+ void (*set_special_band_scalefactors)(struct AACEncContext *s, SingleChannelElement *sce);
void (*search_for_ms)(struct AACEncContext *s, ChannelElement *cpe, const float lambda);
} AACCoefficientsEncoder;