// Path: src/com/mexuar/corraleta/audio/AudioInterface.java
// public interface AudioInterface {
//   /**
//  * Return the minimum sample size for use in creating buffers etc.
//  * @return int
//  */
// public int getSampSz() ;
// 
// /**
//  * Read from the Microphone, using the buffer provided,
//  * but _only_ filling getSampSz() bytes.
//  * returns the timestamp of the sample from the audio clock.
//  * @param buff byte[]
//  * @return long
//  */
// public long readWithTime(byte[] buff) throws IOException ;
// public long readDirect(byte[] buff) throws IOException ;
// 
// /**
//  * stop the reccorder - but don't throw it away.
//  */
// public void stopRec() ;
// 
// /**
//  * start the recorder
//   * returning the time...
//  */
// 
// public long startRec() ;
// 
// /**
//  * The Audio properties have changed so attempt to
//  * re connect to a new device
//  */
// public void changedProps() ;
// 
// /**
//  * Start the player
//  */
// public void startPlay() ;
// 
// /**
//  * Stop the player
//  */
// public void stopPlay();
// 
// /**
//  * play the sample given (getSampSz() bytes)
//  * assuming that it's timestamp is long
//  * @param buff byte[]
//  * @param timestamp long
//  */
// 
// public void write(byte[] buff, long timestamp) throws IOException;
// 
// public void writeDirect(byte[] buff) throws IOException;
// 
//   /**
//    * startRinging
//    */
//   public void startRinging();
// 
//   /**
//    * stopRinging
//    */
//   public void stopRinging();
//   public int getFormatBit();
//   public void setAudioSender(com.mexuar.corraleta.protocol.AudioSender as);
// 
// public void playAudioStream(java.io.InputStream in) throws IOException;
// public void sampleRecord(SampleListener list) throws IOException;
// public Integer supportedCodecs();
// public String codecPrefString();  
// public void cleanUp();
// public AudioInterface getByFormat(Integer format);
// }
// 
// Path: src/com/mexuar/corraleta/protocol/AudioSender.java
// public class AudioSender {
// 
//     private Call _call;
//     private int _formatBit;
//     private boolean _done = false;
//     private long _astart;
//     private long _cstart;
//     private long _nextdue;
//     private int _stamp;
//     private char _lastminisent;
//     private boolean _first;
//     private AudioInterface _aif;
//     private byte [] _buff;
// 
//     /**
//      * Constructor for the AudioSender object
//      *
//      * @param aif The audio interface
//      * @param ca The call object
//      */
//     AudioSender(AudioInterface aif, Call ca) {
//         _call = ca;
//         _aif = aif;
//         _formatBit = aif.getFormatBit();
//         _buff = new byte[_aif.getSampSz()];
// 
//         _cstart = this._call.getTimestamp();
//         _nextdue = _cstart;
//         _lastminisent = 0;
//         _first = true;
// 
//     }
// 
//     /**
//      * sending audio, using VoiceFrame and MiniFrame frames.
//      */
//     public void send() throws IOException {
// 
//             if (!_done) {
// 
//             	long stamp = _aif.readWithTime(_buff);
//             	@SuppressWarnings("unused")
// 				long now = stamp - _astart + _cstart;
//                 _stamp = (int) _nextdue;
//                 char mstamp = (char) (0xffff & _stamp);
//                 if (_first || (mstamp < _lastminisent)) {
//                     _first = false;
//                     VoiceFrame vf = new VoiceFrame(_call);
//                     vf._sCall = _call.getLno().charValue();
//                     vf._dCall = _call.getRno().charValue();
//                     vf.setTimestampVal(_stamp);
//                     vf._subclass = _formatBit;
//                     vf.sendMe(_buff);
//                     Log.debug("sent Full voice frame");
//                     // send a full audio frame
//                 }
//                 else {
//                     // send a miniframe
//                     MiniFrame mf = new MiniFrame(_call);
//                     mf._sCall = _call.getLno().charValue();
//                     mf.setTimestampVal(mstamp); // ?
//                     mf.sendMe(_buff);
//                     Log.verb("sent voice mini frame " + (int) (mstamp / 20));
//                 }
//                 // eitherway note it down
//                 _lastminisent = mstamp;
//                 // now workout how long to wait...
//                 _nextdue += 20;
// 
//             }
// 
//     }
// 
// }
// 
// Path: src/com/mexuar/corraleta/audio/SampleListener.java
// public interface SampleListener {
//   public void setSampleValue(int sampleValue);
// }


import com.mexuar.corraleta.audio.AudioInterface;
import java.io.IOException;
import com.mexuar.corraleta.protocol.AudioSender;
import java.io.*;
import com.mexuar.corraleta.audio.SampleListener;
     */
    public String codecPrefString() {
        return ""+(char) (com.mexuar.corraleta.protocol.VoiceFrame.ULAW_NO + 66);
    }

    /**
     * cleanUp
     *
     * @todo Implement this com.mexuar.corraleta.audio.AudioInterface method
     */
    public void cleanUp() {
        try {
            if (_inS != null) {
                _inS.close();
            }
            if (_outS != null) {
                _outS.close();
            }
        } catch (Exception x){
            x.printStackTrace();
        }
    }

    /**
     * getByFormat
     *
     * @param format Integer
     * @return AudioInterface
     * @todo Implement this com.mexuar.corraleta.audio.AudioInterface method
     */
// Path: src/com/mexuar/corraleta/audio/AudioInterface.java
// public interface AudioInterface {
//   /**
//  * Return the minimum sample size for use in creating buffers etc.
//  * @return int
//  */
// public int getSampSz() ;
// 
// /**
//  * Read from the Microphone, using the buffer provided,
//  * but _only_ filling getSampSz() bytes.
//  * returns the timestamp of the sample from the audio clock.
//  * @param buff byte[]
//  * @return long
//  */
// public long readWithTime(byte[] buff) throws IOException ;
// public long readDirect(byte[] buff) throws IOException ;
// 
// /**
//  * stop the reccorder - but don't throw it away.
//  */
// public void stopRec() ;
// 
// /**
//  * start the recorder
//   * returning the time...
//  */
// 
// public long startRec() ;
// 
// /**
//  * The Audio properties have changed so attempt to
//  * re connect to a new device
//  */
// public void changedProps() ;
// 
// /**
//  * Start the player
//  */
// public void startPlay() ;
// 
// /**
//  * Stop the player
//  */
// public void stopPlay();
// 
// /**
//  * play the sample given (getSampSz() bytes)
//  * assuming that it's timestamp is long
//  * @param buff byte[]
//  * @param timestamp long
//  */
// 
// public void write(byte[] buff, long timestamp) throws IOException;
// 
// public void writeDirect(byte[] buff) throws IOException;
// 
//   /**
//    * startRinging
//    */
//   public void startRinging();
// 
//   /**
//    * stopRinging
//    */
//   public void stopRinging();
//   public int getFormatBit();
//   public void setAudioSender(com.mexuar.corraleta.protocol.AudioSender as);
// 
// public void playAudioStream(java.io.InputStream in) throws IOException;
// public void sampleRecord(SampleListener list) throws IOException;
// public Integer supportedCodecs();
// public String codecPrefString();  
// public void cleanUp();
// public AudioInterface getByFormat(Integer format);
// }
// 
// Path: src/com/mexuar/corraleta/protocol/AudioSender.java
// public class AudioSender {
// 
//     private Call _call;
//     private int _formatBit;
//     private boolean _done = false;
//     private long _astart;
//     private long _cstart;
//     private long _nextdue;
//     private int _stamp;
//     private char _lastminisent;
//     private boolean _first;
//     private AudioInterface _aif;
//     private byte [] _buff;
// 
//     /**
//      * Constructor for the AudioSender object
//      *
//      * @param aif The audio interface
//      * @param ca The call object
//      */
//     AudioSender(AudioInterface aif, Call ca) {
//         _call = ca;
//         _aif = aif;
//         _formatBit = aif.getFormatBit();
//         _buff = new byte[_aif.getSampSz()];
// 
//         _cstart = this._call.getTimestamp();
//         _nextdue = _cstart;
//         _lastminisent = 0;
//         _first = true;
// 
//     }
// 
//     /**
//      * sending audio, using VoiceFrame and MiniFrame frames.
//      */
//     public void send() throws IOException {
// 
//             if (!_done) {
// 
//             	long stamp = _aif.readWithTime(_buff);
//             	@SuppressWarnings("unused")
// 				long now = stamp - _astart + _cstart;
//                 _stamp = (int) _nextdue;
//                 char mstamp = (char) (0xffff & _stamp);
//                 if (_first || (mstamp < _lastminisent)) {
//                     _first = false;
//                     VoiceFrame vf = new VoiceFrame(_call);
//                     vf._sCall = _call.getLno().charValue();
//                     vf._dCall = _call.getRno().charValue();
//                     vf.setTimestampVal(_stamp);
//                     vf._subclass = _formatBit;
//                     vf.sendMe(_buff);
//                     Log.debug("sent Full voice frame");
//                     // send a full audio frame
//                 }
//                 else {
//                     // send a miniframe
//                     MiniFrame mf = new MiniFrame(_call);
//                     mf._sCall = _call.getLno().charValue();
//                     mf.setTimestampVal(mstamp); // ?
//                     mf.sendMe(_buff);
//                     Log.verb("sent voice mini frame " + (int) (mstamp / 20));
//                 }
//                 // eitherway note it down
//                 _lastminisent = mstamp;
//                 // now workout how long to wait...
//                 _nextdue += 20;
// 
//             }
// 
//     }
// 
// }
// 
// Path: src/com/mexuar/corraleta/audio/SampleListener.java
// public interface SampleListener {
//   public void setSampleValue(int sampleValue);
// }


// Path: src/com/mexuar/corraleta/audio/dev/RawDev.java
import com.mexuar.corraleta.audio.AudioInterface;
import java.io.IOException;
import com.mexuar.corraleta.protocol.AudioSender;
import java.io.*;
import com.mexuar.corraleta.audio.SampleListener;

     */
    public String codecPrefString() {
        return ""+(char) (com.mexuar.corraleta.protocol.VoiceFrame.ULAW_NO + 66);
    }

    /**
     * cleanUp
     *
     * @todo Implement this com.mexuar.corraleta.audio.AudioInterface method
     */
    public void cleanUp() {
        try {
            if (_inS != null) {
                _inS.close();
            }
            if (_outS != null) {
                _outS.close();
            }
        } catch (Exception x){
            x.printStackTrace();
        }
    }

    /**
     * getByFormat
     *
     * @param format Integer
     * @return AudioInterface
     * @todo Implement this com.mexuar.corraleta.audio.AudioInterface method
     */
    public AudioInterface getByFormat(Integer format) {