#include "golomb.h"
#include "lpc.h"
#include "flac.h"
+#include "flacdata.h"
#define FLAC_SUBFRAME_CONSTANT 0
#define FLAC_SUBFRAME_VERBATIM 1
struct AVMD5 *md5ctx;
} FlacEncodeContext;
-static const int flac_samplerates[16] = {
- 0, 0, 0, 0,
- 8000, 16000, 22050, 24000, 32000, 44100, 48000, 96000,
- 0, 0, 0, 0
-};
-
-static const int flac_blocksizes[16] = {
- 0,
- 192,
- 576, 1152, 2304, 4608,
- 0, 0,
- 256, 512, 1024, 2048, 4096, 8192, 16384, 32768
-};
-
/**
* Writes streaminfo metadata block to byte array
*/
int blocksize;
assert(samplerate > 0);
- blocksize = flac_blocksizes[1];
+ blocksize = ff_flac_blocksize_table[1];
target = (samplerate * block_time_ms) / 1000;
for(i=0; i<16; i++) {
- if(target >= flac_blocksizes[i] && flac_blocksizes[i] > blocksize) {
- blocksize = flac_blocksizes[i];
+ if(target >= ff_flac_blocksize_table[i] && ff_flac_blocksize_table[i] > blocksize) {
+ blocksize = ff_flac_blocksize_table[i];
}
}
return blocksize;
if(freq < 1)
return -1;
for(i=4; i<12; i++) {
- if(freq == flac_samplerates[i]) {
- s->samplerate = flac_samplerates[i];
+ if(freq == ff_flac_sample_rate_table[i]) {
+ s->samplerate = ff_flac_sample_rate_table[i];
s->sr_code[0] = i;
s->sr_code[1] = 0;
break;
s->options.lpc_coeff_precision);
/* set maximum encoded frame size in verbatim mode */
- if(s->channels == 2) {
- s->max_framesize = 14 + ((s->avctx->frame_size * 33 + 7) >> 3);
- } else {
- s->max_framesize = 14 + (s->avctx->frame_size * s->channels * 2);
- }
+ s->max_framesize = ff_flac_get_max_frame_size(s->avctx->frame_size,
+ s->channels, 16);
/* initialize MD5 context */
s->md5ctx = av_malloc(av_md5_size);
frame = &s->frame;
for(i=0; i<16; i++) {
- if(s->avctx->frame_size == flac_blocksizes[i]) {
- frame->blocksize = flac_blocksizes[i];
+ if(s->avctx->frame_size == ff_flac_blocksize_table[i]) {
+ frame->blocksize = ff_flac_blocksize_table[i];
frame->bs_code[0] = i;
frame->bs_code[1] = 0;
break;