public FlacReader(Stream input, WavWriter output) { if (output == null) { throw new ArgumentNullException("output"); } stream = input; writer = output; context = _flacStreamDecoderNew(); if (context == IntPtr.Zero) { throw new ApplicationException("FLAC: Could not initialize stream decoder!"); } write = Write; metadata = Metadata; error = Error; read = Read; seek = Seek; tell = Tell; length = Length; eof = Eof; if (_flacStreamDecoderInitStream(context, read, seek, tell, length, eof, write, metadata, error, IntPtr.Zero) != 0) { throw new ApplicationException("FLAC: Could not open stream for reading!"); } }
public FlacWriter(Stream output, int bitDepth, int channels, int sampleRate) { stream = output; writer = new BinaryWriter(stream); inputBitDepth = bitDepth; inputChannels = channels; inputSampleRate = sampleRate; context = FLAC__stream_encoder_new(); if (context == IntPtr.Zero) { throw new ApplicationException("FLAC: Could not initialize stream encoder!"); } Check( FLAC__stream_encoder_set_channels(context, channels), "set channels"); Check( FLAC__stream_encoder_set_bits_per_sample(context, bitDepth), "set bits per sample"); Check( FLAC__stream_encoder_set_sample_rate(context, sampleRate), "set sample rate"); Check( FLAC__stream_encoder_set_compression_level(context, 5), "set compression level"); //Check( // FLAC__stream_encoder_set_blocksize(context, 8192), // "set block size"); write = new WriteCallback(Write); seek = new SeekCallback(Seek); tell = new TellCallback(Tell); if (FLAC__stream_encoder_init_stream(context, write, seek, tell, null, IntPtr.Zero) != 0) { throw new ApplicationException("FLAC: Could not open stream for writing!"); } }
public FlacWriter(Stream output, int bitDepth, int channels, int sampleRate) { stream = output; writer = new BinaryWriter(stream); inputBitDepth = bitDepth; inputChannels = channels; inputSampleRate = sampleRate; context = FLAC__stream_encoder_new(); if (context == IntPtr.Zero) throw new ApplicationException("FLAC: Could not initialize stream encoder!"); Check( FLAC__stream_encoder_set_channels(context, channels), "set channels"); Check( FLAC__stream_encoder_set_bits_per_sample(context, bitDepth), "set bits per sample"); Check( FLAC__stream_encoder_set_sample_rate(context, sampleRate), "set sample rate"); Check( FLAC__stream_encoder_set_compression_level(context, 5), "set compression level"); //Check( // FLAC__stream_encoder_set_blocksize(context, 8192), // "set block size"); write = new WriteCallback(Write); seek = new SeekCallback(Seek); tell = new TellCallback(Tell); if (FLAC__stream_encoder_init_stream(context, write, seek, tell, null, IntPtr.Zero) != 0) throw new ApplicationException("FLAC: Could not open stream for writing!"); }
static extern int FLAC__stream_encoder_init_stream(IntPtr context, WriteCallback write, SeekCallback seek, TellCallback tell, MetadataCallback metadata, IntPtr userData);
public FlacWriter(Stream output, int bitDepth, int channels, int sampleRate) { stream = output; writer = new BinaryWriter(stream); inputBitDepth = bitDepth; inputChannels = channels; inputSampleRate = sampleRate; context = FLAC__stream_encoder_new(); if (context == IntPtr.Zero) throw new ApplicationException("FLAC: Could not initialize stream encoder!"); Check( FLAC__stream_encoder_set_channels(context, channels), "set channels"); Check( FLAC__stream_encoder_set_bits_per_sample(context, bitDepth), "set bits per sample"); Check( FLAC__stream_encoder_set_sample_rate(context, sampleRate), "set sample rate"); Check( FLAC__stream_encoder_set_verify(context, false), "set verify"); Check( FLAC__stream_encoder_set_streamable_subset(context, true), "set verify"); Check( FLAC__stream_encoder_set_do_mid_side_stereo(context, true), "set verify"); Check( FLAC__stream_encoder_set_loose_mid_side_stereo(context, true), "set verify"); Check( FLAC__stream_encoder_set_compression_level(context, 5), "set compression level"); Check( FLAC__stream_encoder_set_blocksize(context, 4608), "set block size"); write = new WriteCallback(Write); seek = new SeekCallback(Seek); tell = new TellCallback(Tell); if (FLAC__stream_encoder_init_stream(context, write, seek, tell, null, IntPtr.Zero) != 0) throw new ApplicationException("FLAC: Could not open stream for writing!"); //if (FLAC__stream_encoder_init_file(context, @"wav\miles_fisher-this_must_be_the_place-iphone2.flac", IntPtr.Zero, IntPtr.Zero) != 0) // throw new ApplicationException("FLAC: Could not open stream for writing!"); }
public FlacWriter(Stream output, int bitDepth, int channels, int sampleRate) { stream = output; writer = new BinaryWriter(stream); inputBitDepth = bitDepth; inputChannels = channels; inputSampleRate = sampleRate; context = FLAC__stream_encoder_new(); if (context == IntPtr.Zero) { throw new ApplicationException("FLAC: Could not initialize stream encoder!"); } Check( FLAC__stream_encoder_set_channels(context, channels), "set channels"); Check( FLAC__stream_encoder_set_bits_per_sample(context, bitDepth), "set bits per sample"); Check( FLAC__stream_encoder_set_sample_rate(context, sampleRate), "set sample rate"); Check( FLAC__stream_encoder_set_verify(context, false), "set verify"); Check( FLAC__stream_encoder_set_streamable_subset(context, true), "set verify"); Check( FLAC__stream_encoder_set_do_mid_side_stereo(context, true), "set verify"); Check( FLAC__stream_encoder_set_loose_mid_side_stereo(context, true), "set verify"); Check( FLAC__stream_encoder_set_compression_level(context, 5), "set compression level"); Check( FLAC__stream_encoder_set_blocksize(context, 4608), "set block size"); write = new WriteCallback(Write); seek = new SeekCallback(Seek); tell = new TellCallback(Tell); if (FLAC__stream_encoder_init_stream(context, write, seek, tell, null, IntPtr.Zero) != 0) { throw new ApplicationException("FLAC: Could not open stream for writing!"); } //if (FLAC__stream_encoder_init_file(context, @"wav\miles_fisher-this_must_be_the_place-iphone2.flac", IntPtr.Zero, IntPtr.Zero) != 0) // throw new ApplicationException("FLAC: Could not open stream for writing!"); }
public FlacWriter(Stream output, int bitDepth, int channels, int sampleRate) { stream = output; inputBitDepth = bitDepth; inputChannels = channels; context = _flacStreamEncoderNew(); if (context == IntPtr.Zero) { throw new ApplicationException("FLAC: Could not initialize stream encoder!"); } Check( _flacStreamEncoderSetChannels(context, channels), "set channels"); Check( _flacStreamEncoderSetBitsPerSample(context, bitDepth), "set bits per sample"); Check( _flacStreamEncoderSetSampleRate(context, sampleRate), "set sample rate"); Check( _flacStreamEncoderSetVerify(context, false), "set verify"); Check( _flacStreamEncoderSetStreamableSubset(context, true), "set verify"); Check( _flacStreamEncoderSetDoMidSideStereo(context, true), "set verify"); Check( _flacStreamEncoderSetLooseMidSideStereo(context, true), "set verify"); Check( _flacStreamEncoderSetQlpCoeffPrecision(context, 10), "set qlp coeff precision"); Check( _flacStreamEncoderSetBlockSize(context, 1024), "set block size"); Check( _flacStreamEncoderSetDoQlpCoeffPrecSearch(context, true), "set do qlp coeff precision search"); Check( _flacStreamEncoderSetCompressionLevel(context, 8), "set compression level"); Check( _flacStreamEncoderSetMaxResidualPartitionOrder(context, 5), "set max residual partition order"); Check( _flacStreamEncoderSetDoMD5(context, false), "set do md5"); write = Write; seek = Seek; tell = Tell; if (_flacStreamEncoderInitStream(context, write, seek, tell, null, IntPtr.Zero) != 0) { throw new ApplicationException("FLAC: Could not open stream for writing!"); } //if (FLAC__stream_encoder_init_file(context, @"wav\miles_fisher-this_must_be_the_place-iphone2.flac", IntPtr.Zero, IntPtr.Zero) != 0) // throw new ApplicationException("FLAC: Could not open stream for writing!"); }