fix some pipe bugs
This commit is contained in:
parent
e77287e36d
commit
8c8a55efbc
@ -215,18 +215,21 @@ int encode_wav(const char *infile, const char *outfile, bool verbose, uint64 ski
|
|||||||
goto wav_abort_;
|
goto wav_abort_;
|
||||||
data_bytes = xx;
|
data_bytes = xx;
|
||||||
|
|
||||||
if(!init_encoder(lax, do_mid_side, do_exhaustive_model_search, do_qlp_coeff_prec_search, rice_optimization_level, max_lpc_order, blocksize, qlp_coeff_precision, channels, bps, sample_rate, &encoder_wrapper))
|
|
||||||
goto wav_abort_;
|
|
||||||
|
|
||||||
bytes_per_wide_sample = channels * (bps >> 3);
|
bytes_per_wide_sample = channels * (bps >> 3);
|
||||||
|
|
||||||
if(-1 == fseek(fin, bytes_per_wide_sample * (unsigned)skip, SEEK_CUR)) {
|
if(skip > 0) {
|
||||||
fprintf(stderr, "ERROR seeking while skipping samples in input file %s\n", infile);
|
if(-1 == fseek(fin, bytes_per_wide_sample * (unsigned)skip, SEEK_CUR)) {
|
||||||
goto wav_abort_;
|
fprintf(stderr, "ERROR seeking while skipping samples in input file %s\n", infile);
|
||||||
|
goto wav_abort_;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
encoder_wrapper.total_samples_to_encode = data_bytes / bytes_per_wide_sample - skip;
|
encoder_wrapper.total_samples_to_encode = data_bytes / bytes_per_wide_sample - skip;
|
||||||
encoder_wrapper.unencoded_size = encoder_wrapper.total_samples_to_encode * bytes_per_wide_sample + 44; /* 44 for the size of the WAV headers */
|
encoder_wrapper.unencoded_size = encoder_wrapper.total_samples_to_encode * bytes_per_wide_sample + 44; /* 44 for the size of the WAV headers */
|
||||||
|
|
||||||
|
if(!init_encoder(lax, do_mid_side, do_exhaustive_model_search, do_qlp_coeff_prec_search, rice_optimization_level, max_lpc_order, blocksize, qlp_coeff_precision, channels, bps, sample_rate, &encoder_wrapper))
|
||||||
|
goto wav_abort_;
|
||||||
|
|
||||||
encoder_wrapper.verify_fifo.into_frames = true;
|
encoder_wrapper.verify_fifo.into_frames = true;
|
||||||
|
|
||||||
while(data_bytes > 0) {
|
while(data_bytes > 0) {
|
||||||
@ -338,9 +341,6 @@ int encode_raw(const char *infile, const char *outfile, bool verbose, uint64 ski
|
|||||||
if(!init(&encoder_wrapper))
|
if(!init(&encoder_wrapper))
|
||||||
goto raw_abort_;
|
goto raw_abort_;
|
||||||
|
|
||||||
if(!init_encoder(lax, do_mid_side, do_exhaustive_model_search, do_qlp_coeff_prec_search, rice_optimization_level, max_lpc_order, blocksize, qlp_coeff_precision, channels, bps, sample_rate, &encoder_wrapper))
|
|
||||||
goto raw_abort_;
|
|
||||||
|
|
||||||
/* get the file length */
|
/* get the file length */
|
||||||
if(0 != fseek(fin, 0, SEEK_END)) {
|
if(0 != fseek(fin, 0, SEEK_END)) {
|
||||||
encoder_wrapper.total_samples_to_encode = encoder_wrapper.unencoded_size = 0;
|
encoder_wrapper.total_samples_to_encode = encoder_wrapper.unencoded_size = 0;
|
||||||
@ -362,6 +362,9 @@ int encode_raw(const char *infile, const char *outfile, bool verbose, uint64 ski
|
|||||||
goto raw_abort_;
|
goto raw_abort_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(!init_encoder(lax, do_mid_side, do_exhaustive_model_search, do_qlp_coeff_prec_search, rice_optimization_level, max_lpc_order, blocksize, qlp_coeff_precision, channels, bps, sample_rate, &encoder_wrapper))
|
||||||
|
goto raw_abort_;
|
||||||
|
|
||||||
encoder_wrapper.verify_fifo.into_frames = true;
|
encoder_wrapper.verify_fifo.into_frames = true;
|
||||||
|
|
||||||
while(!feof(fin)) {
|
while(!feof(fin)) {
|
||||||
@ -490,6 +493,7 @@ bool init_encoder(bool lax, bool do_mid_side, bool do_exhaustive_model_search, b
|
|||||||
encoder_wrapper->encoder->do_exhaustive_model_search = do_exhaustive_model_search;
|
encoder_wrapper->encoder->do_exhaustive_model_search = do_exhaustive_model_search;
|
||||||
encoder_wrapper->encoder->do_qlp_coeff_prec_search = do_qlp_coeff_prec_search;
|
encoder_wrapper->encoder->do_qlp_coeff_prec_search = do_qlp_coeff_prec_search;
|
||||||
encoder_wrapper->encoder->rice_optimization_level = rice_optimization_level;
|
encoder_wrapper->encoder->rice_optimization_level = rice_optimization_level;
|
||||||
|
encoder_wrapper->encoder->total_samples_estimate = encoder_wrapper->total_samples_to_encode;
|
||||||
|
|
||||||
if(FLAC__encoder_init(encoder_wrapper->encoder, write_callback, metadata_callback, encoder_wrapper) != FLAC__ENCODER_OK) {
|
if(FLAC__encoder_init(encoder_wrapper->encoder, write_callback, metadata_callback, encoder_wrapper) != FLAC__ENCODER_OK) {
|
||||||
fprintf(stderr, "ERROR initializing encoder, state = %d\n", encoder_wrapper->encoder->state);
|
fprintf(stderr, "ERROR initializing encoder, state = %d\n", encoder_wrapper->encoder->state);
|
||||||
|
Loading…
Reference in New Issue
Block a user