[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