/*
 * @(#)NativeEncoder.java	1.8 03/04/24
 *
 * Copyright (c) 1996-2002 Sun Microsystems, Inc.  All rights reserved.
 */

package com.ibm.media.codec.audio.gsm;

import javax.media.*;
import javax.media.format.*;
import javax.media.format.*;
import com.sun.media.*;

/**
 * RTP GSM encoder plugin wrapper, which uses native methods to do the encoding.
 * @author Shay Ben-David bendavid@haifa.vnet.ibm.com
 */
public final class NativeEncoder extends JavaEncoder {

     ////////////////////////////////////////////////////////////////////////////
    // Variables

   /** <FONT COLOR="#FF0000">
    *  Licensed Materials - Property of IBM                         <br><br>
    *  "Restricted Materials of IBM"                                <br><br>
    *  5648-B81                                                     <br><br>
    *  (c) Copyright IBM Corporation 1997,1999 All Rights Reserved  <br><br>
    *  US Government Users Restricted Rights - Use, duplication or
    *  disclosure restricted by GSA ADP Schedule Contract with
    *  IBM Corporation.</FONT>
    *
    **/
    public static final String a_copyright_notice="(c) Copyright IBM Corporation 1997,1999.";

    int nativeData;

     ////////////////////////////////////////////////////////////////////////////
    // Methods
    protected native void  initNative();
    protected native void  resetNative();
    protected native void  freeNative();
    protected native boolean  codecProcess(byte[] inpData,int readPtr,
                                    byte[] outData,int writePtr,
  			            int inpLength,
				    int[]  readBytes,int[] writeBytes,
                                    int[]  frameNumber,
				    int[] regions,int[] regionsTypes) ;

    public NativeEncoder() {
    }

    public void open() throws ResourceUnavailableException{
        try {
	    JMFSecurityManager.loadLibrary("jmutil");
	    JMFSecurityManager.loadLibrary("jmgsm");
            initNative();
            return;

	} catch (Throwable t) {
	}

        throw new ResourceUnavailableException("Unable to load "+PLUGIN_NAME);
    }

    public void codecReset() {
        resetNative();
    }

    public void close() {
        freeNative();
    }

}



