123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216 |
- /*
- * 11/19/04 1.0 moved to LGPL.
- *
- * 29/01/00 Initial version. mdm@techie.com
- *
- * 12/12/99 JavaLayer 0.0.7 mdm@techie.com
- *
- * 14/02/99 MPEG_Args Based Class - E.B
- * Adapted from javalayer and MPEG_Args.
- * Doc'ed and integerated with JL converter. Removed
- * Win32 specifics from original Maplay code.
- *-----------------------------------------------------------------------
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Library General Public License as published
- * by the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *----------------------------------------------------------------------
- */
- package javazoom.jl.converter;
- import java.io.PrintWriter;
- import javazoom.jl.decoder.Crc16;
- import javazoom.jl.decoder.JavaLayerException;
- import javazoom.jl.decoder.OutputChannels;
- /**
- * The <code>jlc</code> class presents the JavaLayer
- * Conversion functionality as a command-line program.
- *
- * @since 0.0.7
- */
- public class jlc
- {
- static public void main(String args[])
- {
- String[] argv;
- long start = System.currentTimeMillis();
- int argc = args.length + 1;
- argv = new String[argc];
- argv[0] = "jlc";
- for(int i=0;i<args.length;i++)
- argv[i+1] = args[i];
- jlcArgs ma = new jlcArgs();
- if (!ma.processArgs(argv))
- System.exit(1);
- Converter conv = new Converter();
- int detail = (ma.verbose_mode ?
- ma.verbose_level :
- Converter.PrintWriterProgressListener.NO_DETAIL);
- Converter.ProgressListener listener =
- new Converter.PrintWriterProgressListener(
- new PrintWriter(System.out, true), detail);
- try
- {
- conv.convert(ma.filename, ma.output_filename, listener);
- }
- catch (JavaLayerException ex)
- {
- System.err.println("Convertion failure: "+ex);
- }
- System.exit(0);
- }
- /**
- * Class to contain arguments for maplay.
- */
- static class jlcArgs
- {
- // channel constants moved into OutputChannels class.
- //public static final int both = 0;
- //public static final int left = 1;
- //public static final int right = 2;
- //public static final int downmix = 3;
- public int which_c;
- public int output_mode;
- public boolean use_own_scalefactor;
- public float scalefactor;
- public String output_filename;
- public String filename;
- //public boolean stdout_mode;
- public boolean verbose_mode;
- public int verbose_level = 3;
- public jlcArgs()
- {
- which_c = OutputChannels.BOTH_CHANNELS;
- use_own_scalefactor = false;
- scalefactor = (float) 32768.0;
- //stdout_mode = false;
- verbose_mode = false;
- }
- /**
- * Process user arguments.
- *
- * Returns true if successful.
- */
- public boolean processArgs(String[] argv)
- {
- filename = null;
- Crc16[] crc;
- crc = new Crc16[1];
- int i;
- int argc = argv.length;
- //stdout_mode = false;
- verbose_mode = false;
- output_mode = OutputChannels.BOTH_CHANNELS;
- output_filename = "";
- if (argc < 2 || argv[1].equals("-h"))
- return Usage();
- i = 1;
- while (i < argc)
- {
- /* System.out.println("Option = "+argv[i]);*/
- if (argv[i].charAt(0) == '-')
- {
- if (argv[i].startsWith("-v"))
- {
- verbose_mode = true;
- if (argv[i].length()>2)
- {
- try
- {
- String level = argv[i].substring(2);
- verbose_level = Integer.parseInt(level);
- }
- catch (NumberFormatException ex)
- {
- System.err.println("Invalid verbose level. Using default.");
- }
- }
- System.out.println("Verbose Activated (level "+verbose_level+")");
- }
- /* else if (argv[i].equals("-s"))
- ma.stdout_mode = true; */
- else if (argv[i].equals("-p"))
- {
- if (++i == argc)
- {
- System.out.println("Please specify an output filename after the -p option!");
- System.exit (1);
- }
- //output_mode = O_WAVEFILE;
- output_filename = argv[i];
- }
- /*else if (argv[i].equals("-f"))
- {
- if (++i == argc)
- {
- System.out.println("Please specify a new scalefactor after the -f option!");
- System.exit(1);
- }
- ma.use_own_scalefactor = true;
- // ma.scalefactor = argv[i];
- }*/
- else return Usage();
- }
- else
- {
- filename = argv[i];
- System.out.println("FileName = "+argv[i]);
- if (filename == null) return Usage();
- }
- i++;
- }
- if (filename == null)
- return Usage();
- return true;
- }
- /**
- * Usage of JavaLayer.
- */
- public boolean Usage()
- {
- System.out.println("JavaLayer Converter :");
- System.out.println(" -v[x] verbose mode. ");
- System.out.println(" default = 2");
- /* System.out.println(" -s write u-law samples at 8 kHz rate to stdout");
- System.out.println(" -l decode only the left channel");
- System.out.println(" -r decode only the right channel");
- System.out.println(" -d downmix mode (layer III only)");
- System.out.println(" -s write pcm samples to stdout");
- System.out.println(" -d downmix mode (layer III only)");*/
- System.out.println(" -p name output as a PCM wave file");
- System.out.println("");
- System.out.println(" More info on http://www.javazoom.net");
- /* System.out.println(" -f ushort use this scalefactor instead of the default value 32768");*/
- return false;
- }
- };
- };
|