mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2025-01-12 18:31:37 +00:00
Set a constant frame size for encoding G.726 audio.
Originally committed as revision 25107 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
680861ca73
commit
c7d89948a3
@ -334,6 +334,11 @@ static av_cold int g726_init(AVCodecContext * avctx)
|
|||||||
if (avctx->codec->decode)
|
if (avctx->codec->decode)
|
||||||
avctx->sample_fmt = SAMPLE_FMT_S16;
|
avctx->sample_fmt = 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;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -350,10 +355,11 @@ static int g726_encode_frame(AVCodecContext *avctx,
|
|||||||
G726Context *c = avctx->priv_data;
|
G726Context *c = avctx->priv_data;
|
||||||
const short *samples = data;
|
const short *samples = data;
|
||||||
PutBitContext pb;
|
PutBitContext pb;
|
||||||
|
int i;
|
||||||
|
|
||||||
init_put_bits(&pb, dst, 1024*1024);
|
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++));
|
put_bits(&pb, c->code_size, g726_encode(c, *samples++));
|
||||||
|
|
||||||
flush_put_bits(&pb);
|
flush_put_bits(&pb);
|
||||||
@ -394,6 +400,7 @@ AVCodec adpcm_g726_encoder = {
|
|||||||
g726_encode_frame,
|
g726_encode_frame,
|
||||||
g726_close,
|
g726_close,
|
||||||
NULL,
|
NULL,
|
||||||
|
.capabilities = CODEC_CAP_SMALL_LAST_FRAME,
|
||||||
.sample_fmts = (const enum SampleFormat[]){SAMPLE_FMT_S16,SAMPLE_FMT_NONE},
|
.sample_fmts = (const enum SampleFormat[]){SAMPLE_FMT_S16,SAMPLE_FMT_NONE},
|
||||||
.long_name = NULL_IF_CONFIG_SMALL("G.726 ADPCM"),
|
.long_name = NULL_IF_CONFIG_SMALL("G.726 ADPCM"),
|
||||||
};
|
};
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
5d8cce28f83dd33c3c7eaf43a5db5294 *./tests/data/acodec/g726.wav
|
fd090ddf05cc3401cc75c4a5ace1d05a *./tests/data/acodec/g726.wav
|
||||||
24082 ./tests/data/acodec/g726.wav
|
24052 ./tests/data/acodec/g726.wav
|
||||||
4f1ba1af75dee64625a1c852e6cd01d3 *./tests/data/g726.acodec.out.wav
|
74abea06027375111eeac1b2f8c7d3af *./tests/data/g726.acodec.out.wav
|
||||||
stddev: 8504.69 PSNR: 17.74 MAXDIFF:31645 bytes: 96104/ 1058400
|
stddev: 8554.55 PSNR: 17.69 MAXDIFF:29353 bytes: 95984/ 1058400
|
||||||
|
Loading…
Reference in New Issue
Block a user