From 6682ae42a4f4758f7a5000df07761f0af1f836a3 Mon Sep 17 00:00:00 2001 From: Justin Ruggles Date: Sun, 14 Sep 2008 22:25:50 +0000 Subject: [PATCH] write actual min and max frame size to FLAC header. update regression test checksum. Originally committed as revision 15331 to svn://svn.ffmpeg.org/ffmpeg/trunk --- libavcodec/flacenc.c | 12 +++++++++++- tests/ffmpeg.regression.ref | 2 +- tests/rotozoom.regression.ref | 2 +- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/libavcodec/flacenc.c b/libavcodec/flacenc.c index bdd4932c2..a13e37924 100644 --- a/libavcodec/flacenc.c +++ b/libavcodec/flacenc.c @@ -95,7 +95,10 @@ typedef struct FlacEncodeContext { int ch_code; int samplerate; int sr_code[2]; + int min_framesize; + int min_encoded_framesize; int max_framesize; + int max_encoded_framesize; uint32_t frame_count; uint64_t sample_count; uint8_t md5sum[16]; @@ -133,7 +136,7 @@ static void write_streaminfo(FlacEncodeContext *s, uint8_t *header) /* streaminfo metadata block */ put_bits(&pb, 16, s->avctx->frame_size); put_bits(&pb, 16, s->avctx->frame_size); - put_bits(&pb, 24, 0); + put_bits(&pb, 24, s->min_framesize); put_bits(&pb, 24, s->max_framesize); put_bits(&pb, 20, s->samplerate); put_bits(&pb, 3, s->channels-1); @@ -374,6 +377,7 @@ static av_cold int flac_encode_init(AVCodecContext *avctx) } else { s->max_framesize = 14 + (s->avctx->frame_size * s->channels * 2); } + s->min_encoded_framesize = 0xFFFFFF; /* initialize MD5 context */ s->md5ctx = av_malloc(av_md5_size); @@ -1278,6 +1282,8 @@ static int flac_encode_frame(AVCodecContext *avctx, uint8_t *frame, /* when the last block is reached, update the header in extradata */ if (!data) { + s->min_framesize = s->min_encoded_framesize; + s->max_framesize = s->max_encoded_framesize; av_md5_final(s->md5ctx, s->md5sum); write_streaminfo(s, avctx->extradata); return 0; @@ -1318,6 +1324,10 @@ write_frame: s->frame_count++; s->sample_count += avctx->frame_size; update_md5_sum(s, samples); + if (out_bytes > s->max_encoded_framesize) + s->max_encoded_framesize = out_bytes; + if (out_bytes < s->min_encoded_framesize) + s->min_encoded_framesize = out_bytes; return out_bytes; } diff --git a/tests/ffmpeg.regression.ref b/tests/ffmpeg.regression.ref index d1ce98c4a..7102ecbb5 100644 --- a/tests/ffmpeg.regression.ref +++ b/tests/ffmpeg.regression.ref @@ -201,7 +201,7 @@ de1122d20d56c44cf49f028e25a67788 *./tests/data/a-adpcm_swf.flv 267073 ./tests/data/a-adpcm_swf.flv e48b800e2d9be6afcd430d4f08a34eb6 *./tests/data/adpcm_swf.vsynth.out.wav stddev: 934.28 PSNR: 36.91 bytes: 1056812/ 1058444 -10a8bf5796004b150c7aed115cbafef5 *./tests/data/a-flac.flac +7781a016edfc242a39e4d65af02d861a *./tests/data/a-flac.flac 353368 ./tests/data/a-flac.flac 95e54b261530a1bcf6de6fe3b21dc5f6 *./tests/data/flac.vsynth.out.wav stddev: 0.00 PSNR:999.99 bytes: 1058444/ 1058444 diff --git a/tests/rotozoom.regression.ref b/tests/rotozoom.regression.ref index dcc4b938d..1390ea2a7 100644 --- a/tests/rotozoom.regression.ref +++ b/tests/rotozoom.regression.ref @@ -201,7 +201,7 @@ de1122d20d56c44cf49f028e25a67788 *./tests/data/a-adpcm_swf.flv 267073 ./tests/data/a-adpcm_swf.flv e48b800e2d9be6afcd430d4f08a34eb6 *./tests/data/adpcm_swf.rotozoom.out.wav stddev: 934.28 PSNR: 36.91 bytes: 1056812/ 1058444 -10a8bf5796004b150c7aed115cbafef5 *./tests/data/a-flac.flac +7781a016edfc242a39e4d65af02d861a *./tests/data/a-flac.flac 353368 ./tests/data/a-flac.flac 95e54b261530a1bcf6de6fe3b21dc5f6 *./tests/data/flac.rotozoom.out.wav stddev: 0.00 PSNR:999.99 bytes: 1058444/ 1058444 -- 2.11.0