On Sat, 7 Apr 2012, Luca Barbato wrote:
From: Paul B Mahol <[email protected]>
Signed-off-by: Luca Barbato <[email protected]>
---
libavcodec/libaacplus.c | 54 +++++++++++++++++++++++++++--------------------
1 files changed, 31 insertions(+), 23 deletions(-)
This is good, but normally we'd commit this squashed into the first one,
right? In that case you can of course give credit to Paul in the commit
message of that commit.
diff --git a/libavcodec/libaacplus.c b/libavcodec/libaacplus.c
index b6d99ef..e90ad4c 100644
--- a/libavcodec/libaacplus.c
+++ b/libavcodec/libaacplus.c
@@ -24,18 +24,21 @@
* Interface to libaacplus for aac+ (sbr+ps) encoding.
*/
-#include "avcodec.h"
#include <aacplus.h>
+#include "avcodec.h"
+#include "internal.h"
+
typedef struct aacPlusAudioContext {
aacplusEncHandle aacplus_handle;
+ unsigned long max_output_bytes;
+ unsigned long samples_input;
} aacPlusAudioContext;
static av_cold int aacPlus_encode_init(AVCodecContext *avctx)
{
aacPlusAudioContext *s = avctx->priv_data;
aacplusEncConfiguration *aacplus_cfg;
- unsigned long samples_input, max_bytes_output;
/* number of channels */
if (avctx->channels < 1 || avctx->channels > 2) {
@@ -43,9 +46,8 @@ static av_cold int aacPlus_encode_init(AVCodecContext *avctx)
return -1;
}
- s->aacplus_handle = aacplusEncOpen(avctx->sample_rate,
- avctx->channels,
- &samples_input, &max_bytes_output);
+ s->aacplus_handle = aacplusEncOpen(avctx->sample_rate, avctx->channels,
+ &s->samples_input,
&s->max_output_bytes);
if(!s->aacplus_handle) {
av_log(avctx, AV_LOG_ERROR, "can't open encoder\n");
return -1;
@@ -70,10 +72,12 @@ static av_cold int aacPlus_encode_init(AVCodecContext
*avctx)
return -1;
}
- avctx->frame_size = samples_input / avctx->channels;
+ avctx->frame_size = s->samples_input / avctx->channels;
+#if FF_API_OLD_ENCODE_AUDIO
avctx->coded_frame= avcodec_alloc_frame();
avctx->coded_frame->key_frame= 1;
+#endif
/* Set decoder specific info */
avctx->extradata_size = 0;
@@ -95,26 +99,30 @@ static av_cold int aacPlus_encode_init(AVCodecContext
*avctx)
return 0;
}
-static int aacPlus_encode_frame(AVCodecContext *avctx,
- unsigned char *frame, int buf_size, void *data)
+static int aacPlus_encode_frame(AVCodecContext *avctx, AVPacket *pkt,
+ const AVFrame *frame, int *got_packet)
{
aacPlusAudioContext *s = avctx->priv_data;
- int bytes_written;
+ int32_t *input_buffer = (int32_t *)frame->data[0];
+ int ret;
- bytes_written = aacplusEncEncode(s->aacplus_handle,
- data,
- avctx->frame_size * avctx->channels,
- frame,
- buf_size);
+ if ((ret = ff_alloc_packet(pkt, s->max_output_bytes)))
+ return ret;
- return bytes_written;
+ pkt->size = aacplusEncEncode(s->aacplus_handle, input_buffer,
+ s->samples_input, pkt->data, pkt->size);
+ *got_packet = 1;
+ pkt->pts = frame->pts;
+ return 0;
}
static av_cold int aacPlus_encode_close(AVCodecContext *avctx)
{
aacPlusAudioContext *s = avctx->priv_data;
+#if FF_API_OLD_ENCODE_AUDIO
av_freep(&avctx->coded_frame);
+#endif
av_freep(&avctx->extradata);
aacplusEncClose(s->aacplus_handle);
@@ -122,13 +130,13 @@ static av_cold int aacPlus_encode_close(AVCodecContext
*avctx)
}
AVCodec ff_libaacplus_encoder = {
- "libaacplus",
- AVMEDIA_TYPE_AUDIO,
- CODEC_ID_AAC,
- sizeof(aacPlusAudioContext),
- aacPlus_encode_init,
- aacPlus_encode_frame,
- aacPlus_encode_close,
- .sample_fmts = (const enum SampleFormat[]){SAMPLE_FMT_S16,SAMPLE_FMT_NONE},
+ .name = "libaacplus",
+ .type = AVMEDIA_TYPE_AUDIO,
+ .id = CODEC_ID_AAC,
+ .priv_data_size = sizeof(aacPlusAudioContext),
+ .init = aacPlus_encode_init,
+ .encode2 = aacPlus_encode_frame,
+ .close = aacPlus_encode_close,
+ .sample_fmts = (const enum AVSampleFormat[]){AV_SAMPLE_FMT_S16,
AV_SAMPLE_FMT_NONE},
.long_name = NULL_IF_CONFIG_SMALL("libaacplus AAC+ (Advanced Audio Codec with
SBR+PS)"),
While changing these, please align the two last lines, too, and add a
space between {} and the AV_SAMPLE_FMTs (as I did in the cleanup of all
existing codecs the other day).
// Martin
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel