X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Fg726.c;h=09df727c0f3a731b2fd10b894afc198a538a9732;hb=5371803dd5d9f7bbc62d68274084d25f10a8dc61;hp=3004041b08b46115fbfe631b39493242f63d2739;hpb=9106a698e726c041128a05db0a011caae755d10b;p=ffmpeg diff --git a/libavcodec/g726.c b/libavcodec/g726.c index 3004041b08b..09df727c0f3 100644 --- a/libavcodec/g726.c +++ b/libavcodec/g726.c @@ -5,20 +5,20 @@ * This is a very straightforward rendition of the G.726 * Section 4 "Computational Details". * - * This file is part of FFmpeg. + * This file is part of Libav. * - * FFmpeg is free software; you can redistribute it and/or + * Libav is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * - * FFmpeg is distributed in the hope that it will be useful, + * Libav is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software + * License along with Libav; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ #include @@ -332,7 +332,12 @@ static av_cold int g726_init(AVCodecContext * avctx) avctx->coded_frame->key_frame = 1; if (avctx->codec->decode) - avctx->sample_fmt = SAMPLE_FMT_S16; + avctx->sample_fmt = AV_SAMPLE_FMT_S16; + + /* select a frame size that will end on a byte boundary and have a size of + approximately 1024 bytes */ + if (avctx->codec->encode) + avctx->frame_size = ((int[]){ 4096, 2736, 2048, 1640 })[index]; return 0; } @@ -348,12 +353,13 @@ static int g726_encode_frame(AVCodecContext *avctx, uint8_t *dst, int buf_size, void *data) { G726Context *c = avctx->priv_data; - short *samples = data; + const short *samples = data; PutBitContext pb; + int i; init_put_bits(&pb, dst, 1024*1024); - for (; buf_size; buf_size--) + for (i = 0; i < avctx->frame_size; i++) put_bits(&pb, c->code_size, g726_encode(c, *samples++)); flush_put_bits(&pb); @@ -385,23 +391,24 @@ static int g726_decode_frame(AVCodecContext *avctx, } #if CONFIG_ADPCM_G726_ENCODER -AVCodec adpcm_g726_encoder = { +AVCodec ff_adpcm_g726_encoder = { "g726", - CODEC_TYPE_AUDIO, + AVMEDIA_TYPE_AUDIO, CODEC_ID_ADPCM_G726, sizeof(G726Context), g726_init, g726_encode_frame, g726_close, NULL, - .sample_fmts = (enum SampleFormat[]){SAMPLE_FMT_S16,SAMPLE_FMT_NONE}, + .capabilities = CODEC_CAP_SMALL_LAST_FRAME, + .sample_fmts = (const enum AVSampleFormat[]){AV_SAMPLE_FMT_S16,AV_SAMPLE_FMT_NONE}, .long_name = NULL_IF_CONFIG_SMALL("G.726 ADPCM"), }; #endif -AVCodec adpcm_g726_decoder = { +AVCodec ff_adpcm_g726_decoder = { "g726", - CODEC_TYPE_AUDIO, + AVMEDIA_TYPE_AUDIO, CODEC_ID_ADPCM_G726, sizeof(G726Context), g726_init,