[Flac-dev] Getting subframe type=verbatim on 16 bit files
James Smith
jsmith at landmarkdigital.com
Wed Sep 6 08:27:04 PDT 2006
I'm using libFLACC++ and libFLAC and I think that I'm using the calls in the
typical order (see code below). But every monoe or stereo file that I send
thru I get files that are the same sze as the orginal wave files.
Doing a flac -a on the flac files I see that I get:
frame=9 blocksize=4608 sample_rate=8000 channels=1
channel_assignment=INDEPENDENT
subframe=0 wasted_bits=0 type=VERBATIM
.......
Any idea why/ where I have goofed?
Thanks,
James
Code snippet:
===================================================
FlacEncoder flacCompressor;
bool setValue = false;
// set up regular parameters
setValue = flacCompressor.set_channels (numChannels);
setValue = flacCompressor.set_bits_per_sample (bitsPerSample);
setValue = flacCompressor.set_sample_rate (sampleRate);
setValue = flacCompressor.set_blocksize(4608);
setValue = flacCompressor.set_qlp_coeff_precision (0);
setValue = flacCompressor.set_min_residual_partition_order (3);
setValue = flacCompressor.set_max_residual_partition_order (3);
setValue = flacCompressor.set_max_lpc_order (8);
setValue = flacCompressor.set_rice_parameter_search_dist(0);
setValue = flacCompressor.set_do_exhaustive_model_search(false);
setValue = flacCompressor.set_do_escape_coding(false);
if (numChannels > 1)
{
setValue = flacCompressor.set_do_mid_side_stereo(true);
setValue = flacCompressor.set_loose_mid_side_stereo(true);
}
if (!flacCompressor.SetupInboundBuffer(pcmData)) return false;
FLAC__StreamMetadata padding;
FLAC__StreamMetadata *metadata [1];
// stuff some pading for metadata
padding.type = FLAC__METADATA_TYPE_PADDING;
padding.is_last = 0;
padding.length = 40;
metadata[0] = &padding;
setValue = flacCompressor.set_metadata(metadata, 1);
FlacEncoder::Stream::State flacState = flacCompressor.init();
/*
// verify that the values are correct...they are fine, why still
verbatim?
int i;
i = flacCompressor.get_channels ();
i = flacCompressor.get_bits_per_sample ();
i = flacCompressor.get_sample_rate ();
i = flacCompressor.get_blocksize();
i = flacCompressor.get_qlp_coeff_precision (); // default=0 so encoding
software picks the best
i = flacCompressor.get_min_residual_partition_order ();
i = flacCompressor.get_max_residual_partition_order (); // Had tried
0,6 now try 3,3
i = flacCompressor.get_max_lpc_order ();
setValue = flacCompressor.get_do_mid_side_stereo();
setValue = flacCompressor.get_loose_mid_side_stereo();
*/
// is this state okay?
if (flacState != FLAC__STREAM_ENCODER_OK)
return false; // bad settings for doing this compression so quit...
// shoot the final data buffer to the encoder....
// we would have called process_interleaved if we had not created an
array per channel above...
if (!flacCompressor.DoProcess())
{
flacState = flacCompressor.get_state();
return false;
}
flacState = flacCompressor.get_state();
flacCompressor.finish();
flacCompressor.Release();
return true;
}
********************************************
This message is intended only for the use of the Addressee and
may contain information that is PRIVILEGED and CONFIDENTIAL.
If you are not the intended recipient, you are hereby notified
that any dissemination of this communication is strictly prohibited.
If you have received this communication in error, please erase
all copies of the message and its attachments and notify us
immediately.
Thank you.
********************************************
More information about the Flac-dev
mailing list