add -E escape coding option
authorJosh Coalson <jcoalson@users.sourceforce.net>
Thu, 12 Jul 2001 21:30:14 +0000 (21:30 +0000)
committerJosh Coalson <jcoalson@users.sourceforce.net>
Thu, 12 Jul 2001 21:30:14 +0000 (21:30 +0000)
src/flac/encode.h
src/flac/main.c

index e3ec233..72335e0 100644 (file)
@@ -21,7 +21,7 @@
 
 #include "FLAC/ordinals.h"
 
-int flac__encode_wav(FILE *infile, long infilesize, const char *infilename, const char *outfilename, const FLAC__byte *lookahead, unsigned lookahead_length, FLAC__int32 *align_reservoir[], unsigned *align_reservoir_samples, FLAC__bool sector_align, FLAC__bool is_last_file, FLAC__bool verbose, FLAC__uint64 skip, FLAC__bool verify, FLAC__bool lax, FLAC__bool do_mid_side, FLAC__bool loose_mid_side, FLAC__bool do_exhaustive_model_search, FLAC__bool do_qlp_coeff_prec_search, unsigned min_residual_partition_order, unsigned max_residual_partition_order, unsigned rice_parameter_search_dist, unsigned max_lpc_order, unsigned blocksize, unsigned qlp_coeff_precision, unsigned padding, char *requested_seek_points, int num_requested_seek_points);
-int flac__encode_raw(FILE *infile, long infilesize, const char *infilename, const char *outfilename, const FLAC__byte *lookahead, unsigned lookahead_length, FLAC__bool is_last_file, FLAC__bool verbose, FLAC__uint64 skip, FLAC__bool verify, FLAC__bool lax, FLAC__bool do_mid_side, FLAC__bool loose_mid_side, FLAC__bool do_exhaustive_model_search, FLAC__bool do_qlp_coeff_prec_search, unsigned min_residual_partition_order, unsigned max_residual_partition_order, unsigned rice_parameter_search_dist, unsigned max_lpc_order, unsigned blocksize, unsigned qlp_coeff_precision, unsigned padding, char *requested_seek_points, int num_requested_seek_points, FLAC__bool is_big_endian, FLAC__bool is_unsigned_samples, unsigned channels, unsigned bps, unsigned sample_rate);
+int flac__encode_wav(FILE *infile, long infilesize, const char *infilename, const char *outfilename, const FLAC__byte *lookahead, unsigned lookahead_length, FLAC__int32 *align_reservoir[], unsigned *align_reservoir_samples, FLAC__bool sector_align, FLAC__bool is_last_file, FLAC__bool verbose, FLAC__uint64 skip, FLAC__bool verify, FLAC__bool lax, FLAC__bool do_mid_side, FLAC__bool loose_mid_side, FLAC__bool do_exhaustive_model_search, FLAC__bool do_escape_coding, FLAC__bool do_qlp_coeff_prec_search, unsigned min_residual_partition_order, unsigned max_residual_partition_order, unsigned rice_parameter_search_dist, unsigned max_lpc_order, unsigned blocksize, unsigned qlp_coeff_precision, unsigned padding, char *requested_seek_points, int num_requested_seek_points);
+int flac__encode_raw(FILE *infile, long infilesize, const char *infilename, const char *outfilename, const FLAC__byte *lookahead, unsigned lookahead_length, FLAC__bool is_last_file, FLAC__bool verbose, FLAC__uint64 skip, FLAC__bool verify, FLAC__bool lax, FLAC__bool do_mid_side, FLAC__bool loose_mid_side, FLAC__bool do_exhaustive_model_search, FLAC__bool do_escape_coding, FLAC__bool do_qlp_coeff_prec_search, unsigned min_residual_partition_order, unsigned max_residual_partition_order, unsigned rice_parameter_search_dist, unsigned max_lpc_order, unsigned blocksize, unsigned qlp_coeff_precision, unsigned padding, char *requested_seek_points, int num_requested_seek_points, FLAC__bool is_big_endian, FLAC__bool is_unsigned_samples, unsigned channels, unsigned bps, unsigned sample_rate);
 
 #endif
index 491c8c4..fee9d9b 100644 (file)
@@ -38,7 +38,7 @@ static int encode_file(const char *infilename, const char *forced_outfilename, F
 static int decode_file(const char *infilename, const char *forced_outfilename);
 
 FLAC__bool verify = false, verbose = true, lax = false, test_only = false, analyze = false;
-FLAC__bool do_mid_side = true, loose_mid_side = false, do_exhaustive_model_search = false, do_qlp_coeff_prec_search = false;
+FLAC__bool do_mid_side = true, loose_mid_side = false, do_exhaustive_model_search = false, do_escape_coding = false, do_qlp_coeff_prec_search = false;
 FLAC__bool force_to_stdout = false, delete_input = false, sector_align = false;
 const char *cmdline_forced_outfilename = 0, *output_prefix = 0;
 analysis_options aopts = { false, false };
@@ -116,6 +116,10 @@ int main(int argc, char *argv[])
                        do_exhaustive_model_search = true;
                else if(0 == strcmp(argv[i], "-e-"))
                        do_exhaustive_model_search = false;
+               else if(0 == strcmp(argv[i], "-E"))
+                       do_escape_coding = true;
+               else if(0 == strcmp(argv[i], "-E-"))
+                       do_escape_coding = false;
                else if(0 == strcmp(argv[i], "-l"))
                        max_lpc_order = atoi(argv[++i]);
                else if(0 == strcmp(argv[i], "-m")) {
@@ -181,6 +185,7 @@ int main(int argc, char *argv[])
                        aopts.do_residual_text = false;
                else if(0 == strcmp(argv[i], "-0")) {
                        do_exhaustive_model_search = false;
+                       do_escape_coding = false;
                        do_mid_side = false;
                        loose_mid_side = false;
                        qlp_coeff_precision = 0;
@@ -190,6 +195,7 @@ int main(int argc, char *argv[])
                }
                else if(0 == strcmp(argv[i], "-1")) {
                        do_exhaustive_model_search = false;
+                       do_escape_coding = false;
                        do_mid_side = true;
                        loose_mid_side = true;
                        qlp_coeff_precision = 0;
@@ -199,6 +205,7 @@ int main(int argc, char *argv[])
                }
                else if(0 == strcmp(argv[i], "-2")) {
                        do_exhaustive_model_search = false;
+                       do_escape_coding = false;
                        do_mid_side = true;
                        loose_mid_side = false;
                        qlp_coeff_precision = 0;
@@ -209,6 +216,7 @@ int main(int argc, char *argv[])
                }
                else if(0 == strcmp(argv[i], "-3")) {
                        do_exhaustive_model_search = false;
+                       do_escape_coding = false;
                        do_mid_side = false;
                        loose_mid_side = false;
                        qlp_coeff_precision = 0;
@@ -218,6 +226,7 @@ int main(int argc, char *argv[])
                }
                else if(0 == strcmp(argv[i], "-4")) {
                        do_exhaustive_model_search = false;
+                       do_escape_coding = false;
                        do_mid_side = true;
                        loose_mid_side = true;
                        qlp_coeff_precision = 0;
@@ -227,6 +236,7 @@ int main(int argc, char *argv[])
                }
                else if(0 == strcmp(argv[i], "-5")) {
                        do_exhaustive_model_search = false;
+                       do_escape_coding = false;
                        do_mid_side = true;
                        loose_mid_side = false;
                        qlp_coeff_precision = 0;
@@ -236,6 +246,7 @@ int main(int argc, char *argv[])
                }
                else if(0 == strcmp(argv[i], "-6")) {
                        do_exhaustive_model_search = false;
+                       do_escape_coding = false;
                        do_mid_side = true;
                        loose_mid_side = false;
                        qlp_coeff_precision = 0;
@@ -246,6 +257,7 @@ int main(int argc, char *argv[])
                }
                else if(0 == strcmp(argv[i], "-7")) {
                        do_exhaustive_model_search = true;
+                       do_escape_coding = false;
                        do_mid_side = true;
                        loose_mid_side = false;
                        qlp_coeff_precision = 0;
@@ -256,6 +268,7 @@ int main(int argc, char *argv[])
                }
                else if(0 == strcmp(argv[i], "-8")) {
                        do_exhaustive_model_search = true;
+                       do_escape_coding = false;
                        do_mid_side = true;
                        loose_mid_side = false;
                        qlp_coeff_precision = 0;
@@ -266,6 +279,7 @@ int main(int argc, char *argv[])
                }
                else if(0 == strcmp(argv[i], "-9")) {
                        do_exhaustive_model_search = true;
+                       do_escape_coding = true;
                        do_mid_side = true;
                        loose_mid_side = false;
                        do_qlp_coeff_prec_search = true;
@@ -357,10 +371,10 @@ int main(int argc, char *argv[])
                fprintf(stderr, "welcome to redistribute it under certain conditions.  Type `flac' for details.\n\n");
 
                if(!mode_decode) {
-                       fprintf(stderr, "options:%s%s%s -P %u -b %u%s -l %u%s%s -q %u -r %u,%u -R %u%s\n",
+                       fprintf(stderr, "options:%s%s%s -P %u -b %u%s -l %u%s%s%s -q %u -r %u,%u -R %u%s\n",
                                delete_input?" --delete-input-file":"", sector_align?" --sector-align":"", lax?" --lax":"",
                                padding, (unsigned)blocksize, loose_mid_side?" -M":do_mid_side?" -m":"", max_lpc_order,
-                               do_exhaustive_model_search?" -e":"", do_qlp_coeff_prec_search?" -p":"",
+                               do_exhaustive_model_search?" -e":"", do_escape_coding?" -E":"", do_qlp_coeff_prec_search?" -p":"",
                                qlp_coeff_precision,
                                (unsigned)min_residual_partition_order, (unsigned)max_residual_partition_order, (unsigned)rice_parameter_search_dist,
                                verify? " -V":""
@@ -511,8 +525,9 @@ int usage(const char *message, ...)
        fprintf(stderr, "  -6   : synonymous with -l 8 -b 4608 -m -r 4\n");
        fprintf(stderr, "  -7   : synonymous with -l 8 -b 4608 -m -e -r 6\n");
        fprintf(stderr, "  -8   : synonymous with -l 12 -b 4608 -m -e -r 6\n");
-       fprintf(stderr, "  -9   : synonymous with -l 32 -b 4608 -m -e -r 16 -p (very slow!)\n");
+       fprintf(stderr, "  -9   : synonymous with -l 32 -b 4608 -m -e -E -r 16 -p (very slow!)\n");
        fprintf(stderr, "  -e   : do exhaustive model search (expensive!)\n");
+       fprintf(stderr, "  -E   : include escape coding in the entropy coder\n");
        fprintf(stderr, "  -l # : specify max LPC order; 0 => use only fixed predictors\n");
        fprintf(stderr, "  -p   : do exhaustive search of LP coefficient quantization (expensive!);\n");
        fprintf(stderr, "         overrides -q, does nothing if using -l 0\n");
@@ -523,7 +538,7 @@ int usage(const char *message, ...)
        fprintf(stderr, "  -R # : Rice parameter search distance (# is 0..32; above 2 doesn't help much)\n");
        fprintf(stderr, "  -V   : verify a correct encoding by decoding the output in parallel and\n");
        fprintf(stderr, "         comparing to the original\n");
-       fprintf(stderr, "  -S-, -m-, -M-, -e-, -p-, -V-, --delete-input-file-, --lax-, --sector-align-\n");
+       fprintf(stderr, "  -S-, -m-, -M-, -e-, -E-, -p-, -V-, --delete-input-file-, --lax-, --sector-align-\n");
        fprintf(stderr, "  can all be used to turn off a particular option\n");
        fprintf(stderr, "format options:\n");
        fprintf(stderr, "  -fb | -fl : big-endian | little-endian byte order\n");
@@ -613,9 +628,9 @@ int encode_file(const char *infilename, const char *forced_outfilename, FLAC__bo
                forced_outfilename = cmdline_forced_outfilename;
 
        if(format_is_wave)
-               retval = flac__encode_wav(encode_infile, infilesize, infilename, forced_outfilename, lookahead, lookahead_length, align_reservoir, &align_reservoir_samples, sector_align, is_last_file, verbose, skip, verify, lax, do_mid_side, loose_mid_side, do_exhaustive_model_search, do_qlp_coeff_prec_search, min_residual_partition_order, max_residual_partition_order, rice_parameter_search_dist, max_lpc_order, (unsigned)blocksize, qlp_coeff_precision, padding, requested_seek_points, num_requested_seek_points);
+               retval = flac__encode_wav(encode_infile, infilesize, infilename, forced_outfilename, lookahead, lookahead_length, align_reservoir, &align_reservoir_samples, sector_align, is_last_file, verbose, skip, verify, lax, do_mid_side, loose_mid_side, do_exhaustive_model_search, do_escape_coding, do_qlp_coeff_prec_search, min_residual_partition_order, max_residual_partition_order, rice_parameter_search_dist, max_lpc_order, (unsigned)blocksize, qlp_coeff_precision, padding, requested_seek_points, num_requested_seek_points);
        else
-               retval = flac__encode_raw(encode_infile, infilesize, infilename, forced_outfilename, lookahead, lookahead_length, is_last_file, verbose, skip, verify, lax, do_mid_side, loose_mid_side, do_exhaustive_model_search, do_qlp_coeff_prec_search, min_residual_partition_order, max_residual_partition_order, rice_parameter_search_dist, max_lpc_order, (unsigned)blocksize, qlp_coeff_precision, padding, requested_seek_points, num_requested_seek_points, format_is_big_endian, format_is_unsigned_samples, format_channels, format_bps, format_sample_rate);
+               retval = flac__encode_raw(encode_infile, infilesize, infilename, forced_outfilename, lookahead, lookahead_length, is_last_file, verbose, skip, verify, lax, do_mid_side, loose_mid_side, do_exhaustive_model_search, do_escape_coding, do_qlp_coeff_prec_search, min_residual_partition_order, max_residual_partition_order, rice_parameter_search_dist, max_lpc_order, (unsigned)blocksize, qlp_coeff_precision, padding, requested_seek_points, num_requested_seek_points, format_is_big_endian, format_is_unsigned_samples, format_channels, format_bps, format_sample_rate);
 
        if(retval == 0 && strcmp(infilename, "-")) {
                if(strcmp(forced_outfilename, "-"))