mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-02-09 14:14:39 +02:00
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
This commit is contained in:
parent
dd857bfdf7
commit
6682ae42a4
@ -95,7 +95,10 @@ typedef struct FlacEncodeContext {
|
|||||||
int ch_code;
|
int ch_code;
|
||||||
int samplerate;
|
int samplerate;
|
||||||
int sr_code[2];
|
int sr_code[2];
|
||||||
|
int min_framesize;
|
||||||
|
int min_encoded_framesize;
|
||||||
int max_framesize;
|
int max_framesize;
|
||||||
|
int max_encoded_framesize;
|
||||||
uint32_t frame_count;
|
uint32_t frame_count;
|
||||||
uint64_t sample_count;
|
uint64_t sample_count;
|
||||||
uint8_t md5sum[16];
|
uint8_t md5sum[16];
|
||||||
@ -133,7 +136,7 @@ static void write_streaminfo(FlacEncodeContext *s, uint8_t *header)
|
|||||||
/* streaminfo metadata block */
|
/* streaminfo metadata block */
|
||||||
put_bits(&pb, 16, s->avctx->frame_size);
|
put_bits(&pb, 16, s->avctx->frame_size);
|
||||||
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, 24, s->max_framesize);
|
||||||
put_bits(&pb, 20, s->samplerate);
|
put_bits(&pb, 20, s->samplerate);
|
||||||
put_bits(&pb, 3, s->channels-1);
|
put_bits(&pb, 3, s->channels-1);
|
||||||
@ -374,6 +377,7 @@ static av_cold int flac_encode_init(AVCodecContext *avctx)
|
|||||||
} else {
|
} else {
|
||||||
s->max_framesize = 14 + (s->avctx->frame_size * s->channels * 2);
|
s->max_framesize = 14 + (s->avctx->frame_size * s->channels * 2);
|
||||||
}
|
}
|
||||||
|
s->min_encoded_framesize = 0xFFFFFF;
|
||||||
|
|
||||||
/* initialize MD5 context */
|
/* initialize MD5 context */
|
||||||
s->md5ctx = av_malloc(av_md5_size);
|
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 */
|
/* when the last block is reached, update the header in extradata */
|
||||||
if (!data) {
|
if (!data) {
|
||||||
|
s->min_framesize = s->min_encoded_framesize;
|
||||||
|
s->max_framesize = s->max_encoded_framesize;
|
||||||
av_md5_final(s->md5ctx, s->md5sum);
|
av_md5_final(s->md5ctx, s->md5sum);
|
||||||
write_streaminfo(s, avctx->extradata);
|
write_streaminfo(s, avctx->extradata);
|
||||||
return 0;
|
return 0;
|
||||||
@ -1318,6 +1324,10 @@ write_frame:
|
|||||||
s->frame_count++;
|
s->frame_count++;
|
||||||
s->sample_count += avctx->frame_size;
|
s->sample_count += avctx->frame_size;
|
||||||
update_md5_sum(s, samples);
|
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;
|
return out_bytes;
|
||||||
}
|
}
|
||||||
|
@ -201,7 +201,7 @@ de1122d20d56c44cf49f028e25a67788 *./tests/data/a-adpcm_swf.flv
|
|||||||
267073 ./tests/data/a-adpcm_swf.flv
|
267073 ./tests/data/a-adpcm_swf.flv
|
||||||
e48b800e2d9be6afcd430d4f08a34eb6 *./tests/data/adpcm_swf.vsynth.out.wav
|
e48b800e2d9be6afcd430d4f08a34eb6 *./tests/data/adpcm_swf.vsynth.out.wav
|
||||||
stddev: 934.28 PSNR: 36.91 bytes: 1056812/ 1058444
|
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
|
353368 ./tests/data/a-flac.flac
|
||||||
95e54b261530a1bcf6de6fe3b21dc5f6 *./tests/data/flac.vsynth.out.wav
|
95e54b261530a1bcf6de6fe3b21dc5f6 *./tests/data/flac.vsynth.out.wav
|
||||||
stddev: 0.00 PSNR:999.99 bytes: 1058444/ 1058444
|
stddev: 0.00 PSNR:999.99 bytes: 1058444/ 1058444
|
||||||
|
@ -201,7 +201,7 @@ de1122d20d56c44cf49f028e25a67788 *./tests/data/a-adpcm_swf.flv
|
|||||||
267073 ./tests/data/a-adpcm_swf.flv
|
267073 ./tests/data/a-adpcm_swf.flv
|
||||||
e48b800e2d9be6afcd430d4f08a34eb6 *./tests/data/adpcm_swf.rotozoom.out.wav
|
e48b800e2d9be6afcd430d4f08a34eb6 *./tests/data/adpcm_swf.rotozoom.out.wav
|
||||||
stddev: 934.28 PSNR: 36.91 bytes: 1056812/ 1058444
|
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
|
353368 ./tests/data/a-flac.flac
|
||||||
95e54b261530a1bcf6de6fe3b21dc5f6 *./tests/data/flac.rotozoom.out.wav
|
95e54b261530a1bcf6de6fe3b21dc5f6 *./tests/data/flac.rotozoom.out.wav
|
||||||
stddev: 0.00 PSNR:999.99 bytes: 1058444/ 1058444
|
stddev: 0.00 PSNR:999.99 bytes: 1058444/ 1058444
|
||||||
|
Loading…
x
Reference in New Issue
Block a user