diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2012-09-18 15:45:07 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2012-09-18 15:45:07 +0200 |
commit | a44cbc1cbcb88b851f76af3b32ff01a4a066f70f (patch) | |
tree | 7419aaceb2a412aa48366765719454fb8da9910a /libavcodec/sonic.c | |
parent | 4cdc337b5da22ff30335a9de424a1510e9b3fe49 (diff) | |
download | ffmpeg-a44cbc1cbcb88b851f76af3b32ff01a4a066f70f.tar.gz |
sonic: update to encode2() API
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavcodec/sonic.c')
-rw-r--r-- | libavcodec/sonic.c | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/libavcodec/sonic.c b/libavcodec/sonic.c index 6319a56eba..acd7412d9b 100644 --- a/libavcodec/sonic.c +++ b/libavcodec/sonic.c @@ -21,6 +21,7 @@ #include "avcodec.h" #include "get_bits.h" #include "golomb.h" +#include "internal.h" /** * @file @@ -622,15 +623,19 @@ static av_cold int sonic_encode_close(AVCodecContext *avctx) return 0; } -static int sonic_encode_frame(AVCodecContext *avctx, - uint8_t *buf, int buf_size, void *data) +static int sonic_encode_frame(AVCodecContext *avctx, AVPacket *avpkt, + const AVFrame *frame, int *got_packet_ptr) { SonicContext *s = avctx->priv_data; PutBitContext pb; int i, j, ch, quant = 0, x = 0; - short *samples = data; + int ret; + const short *samples = (const int16_t*)frame->data[0]; - init_put_bits(&pb, buf, buf_size*8); + if ((ret = ff_alloc_packet2(avctx, avpkt, s->frame_size * 5 + 1000))) + return ret; + + init_put_bits(&pb, avpkt->data, avpkt->size); // short -> internal for (i = 0; i < s->frame_size; i++) @@ -741,7 +746,9 @@ static int sonic_encode_frame(AVCodecContext *avctx, // av_log(avctx, AV_LOG_DEBUG, "used bytes: %d\n", (put_bits_count(&pb)+7)/8); flush_put_bits(&pb); - return (put_bits_count(&pb)+7)/8; + avpkt->size = (put_bits_count(&pb)+7)/8; + *got_packet_ptr = 1; + return 0; } #endif /* CONFIG_SONIC_ENCODER || CONFIG_SONIC_LS_ENCODER */ @@ -972,7 +979,7 @@ AVCodec ff_sonic_encoder = { .id = AV_CODEC_ID_SONIC, .priv_data_size = sizeof(SonicContext), .init = sonic_encode_init, - .encode = sonic_encode_frame, + .encode2 = sonic_encode_frame, .capabilities = CODEC_CAP_EXPERIMENTAL, .close = sonic_encode_close, .long_name = NULL_IF_CONFIG_SMALL("Sonic"), @@ -986,7 +993,7 @@ AVCodec ff_sonic_ls_encoder = { .id = AV_CODEC_ID_SONIC_LS, .priv_data_size = sizeof(SonicContext), .init = sonic_encode_init, - .encode = sonic_encode_frame, + .encode2 = sonic_encode_frame, .capabilities = CODEC_CAP_EXPERIMENTAL, .close = sonic_encode_close, .long_name = NULL_IF_CONFIG_SMALL("Sonic lossless"), |