Macroify sanity checks and check return value of allocs.
---
libavcodec/aacenc.c | 37 ++++++++++++++++++-------------------
1 files changed, 18 insertions(+), 19 deletions(-)
diff --git a/libavcodec/aacenc.c b/libavcodec/aacenc.c
index b112fa8..64e6e20 100644
--- a/libavcodec/aacenc.c
+++ b/libavcodec/aacenc.c
@@ -46,6 +46,12 @@
#define AAC_MAX_CHANNELS 6
+#define RETURN_ON_ERROR( cond, ... ) \
+if (cond) { \
+ av_log(avctx, AV_LOG_ERROR, __VA_ARGS__); \
+ return -1; \
+}
+
static const uint8_t swb_size_1024_96[] = {
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 8, 8, 8, 8, 8,
12, 12, 12, 12, 12, 16, 16, 24, 28, 36, 44,
@@ -173,22 +179,12 @@ static av_cold int aac_encode_init(AVCodecContext *avctx)
for (i = 0; i < 16; i++)
if (avctx->sample_rate == avpriv_mpeg4audio_sample_rates[i])
break;
- if (i == 16) {
- av_log(avctx, AV_LOG_ERROR, "Unsupported sample rate %d\n",
avctx->sample_rate);
- return -1;
- }
- if (avctx->channels > AAC_MAX_CHANNELS) {
- av_log(avctx, AV_LOG_ERROR, "Unsupported number of channels: %d\n",
avctx->channels);
- return -1;
- }
- if (avctx->profile != FF_PROFILE_UNKNOWN && avctx->profile !=
FF_PROFILE_AAC_LOW) {
- av_log(avctx, AV_LOG_ERROR, "Unsupported profile %d\n",
avctx->profile);
- return -1;
- }
- if (1024.0 * avctx->bit_rate / avctx->sample_rate > 6144 *
avctx->channels) {
- av_log(avctx, AV_LOG_ERROR, "Too many bits per frame requested\n");
- return -1;
- }
+
+ RETURN_ON_ERROR(i == 16, "Unsupported sample rate %d\n",
avctx->sample_rate);
+ RETURN_ON_ERROR(avctx->channels > AAC_MAX_CHANNELS, "Unsupported number of
channels: %d\n", avctx->channels);
+ RETURN_ON_ERROR(avctx->profile != FF_PROFILE_UNKNOWN && avctx->profile !=
FF_PROFILE_AAC_LOW, "Unsupported profile %d\n", avctx->profile);
+ RETURN_ON_ERROR(1024.0 * avctx->bit_rate / avctx->sample_rate > 6144 *
avctx->channels, "Too many bits per frame requested\n");
+
s->samplerate_index = i;
dsputil_init(&s->dsp, avctx);
@@ -201,9 +197,10 @@ static av_cold int aac_encode_init(AVCodecContext *avctx)
ff_init_ff_sine_windows(7);
s->chan_map = aac_chan_configs[avctx->channels-1];
- s->samples = av_malloc(2 * 1024 * avctx->channels *
sizeof(s->samples[0]));
- s->cpe = av_mallocz(sizeof(ChannelElement) *
s->chan_map[0]);
- avctx->extradata = av_mallocz(5 + FF_INPUT_BUFFER_PADDING_SIZE);
+ FF_ALLOC_OR_GOTO (avctx, s->samples, 2 * 1024 * avctx->channels *
sizeof(s->samples[0]), fail);
+ FF_ALLOCZ_OR_GOTO(avctx, s->cpe, sizeof(ChannelElement) * s->chan_map[0],
fail);
+ FF_ALLOCZ_OR_GOTO(avctx, avctx->extradata, 5 +
FF_INPUT_BUFFER_PADDING_SIZE, fail);
+
avctx->extradata_size = 5;
put_audio_specific_config(avctx);
@@ -222,6 +219,8 @@ static av_cold int aac_encode_init(AVCodecContext *avctx)
ff_aac_tableinit();
return 0;
+fail:
+ return AVERROR(ENOMEM);
}
static void apply_window_and_mdct(AVCodecContext *avctx, AACEncContext *s,
--
1.7.5.4
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel