[FFmpeg-cvslog] r25107 - in trunk: libavcodec/g726.c tests/ref/acodec/g726

jbr subversion
Sat Sep 11 21:52:09 CEST 2010


Author: jbr
Date: Sat Sep 11 21:52:09 2010
New Revision: 25107

Log:
Set a constant frame size for encoding G.726 audio.

Modified:
   trunk/libavcodec/g726.c
   trunk/tests/ref/acodec/g726

Modified: trunk/libavcodec/g726.c
==============================================================================
--- trunk/libavcodec/g726.c	Sat Sep 11 18:44:10 2010	(r25106)
+++ trunk/libavcodec/g726.c	Sat Sep 11 21:52:09 2010	(r25107)
@@ -334,6 +334,11 @@ static av_cold int g726_init(AVCodecCont
     if (avctx->codec->decode)
         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;
 }
 
@@ -350,10 +355,11 @@ static int g726_encode_frame(AVCodecCont
     G726Context *c = avctx->priv_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);
@@ -394,6 +400,7 @@ AVCodec adpcm_g726_encoder = {
     g726_encode_frame,
     g726_close,
     NULL,
+    .capabilities = CODEC_CAP_SMALL_LAST_FRAME,
     .sample_fmts = (const enum SampleFormat[]){SAMPLE_FMT_S16,SAMPLE_FMT_NONE},
     .long_name = NULL_IF_CONFIG_SMALL("G.726 ADPCM"),
 };

Modified: trunk/tests/ref/acodec/g726
==============================================================================
--- trunk/tests/ref/acodec/g726	Sat Sep 11 18:44:10 2010	(r25106)
+++ trunk/tests/ref/acodec/g726	Sat Sep 11 21:52:09 2010	(r25107)
@@ -1,4 +1,4 @@
-5d8cce28f83dd33c3c7eaf43a5db5294 *./tests/data/acodec/g726.wav
-24082 ./tests/data/acodec/g726.wav
-4f1ba1af75dee64625a1c852e6cd01d3 *./tests/data/g726.acodec.out.wav
-stddev: 8504.69 PSNR: 17.74 MAXDIFF:31645 bytes:    96104/  1058400
+fd090ddf05cc3401cc75c4a5ace1d05a *./tests/data/acodec/g726.wav
+24052 ./tests/data/acodec/g726.wav
+74abea06027375111eeac1b2f8c7d3af *./tests/data/g726.acodec.out.wav
+stddev: 8554.55 PSNR: 17.69 MAXDIFF:29353 bytes:    95984/  1058400



More information about the ffmpeg-cvslog mailing list