/* * @(#)NativeDecoder.java 1.8 02/08/21 * * Copyright (c) 1996-2002 Sun Microsystems, Inc. All rights reserved. */ package com.ibm.media.codec.audio.g723; import javax.media.*; import javax.media.format.*; import javax.media.format.*; import com.sun.media.*; public class NativeDecoder extends JavaDecoder { //////////////////////////////////////////////////////////////////////////// // Variables //////////////////////////////////////////////////////////////////////////// // variable used by native code to store a pointer to the C++ class int nativeData; //////////////////////////////////////////////////////////////////////////// // Native methods // initialize the native codec private native void initNative(); // free any buffers allocated by the native codec private native void freeNative(); // free any buffers allocated by the native codec private native void resetNative(); private native boolean decodeNative(byte[] inpBuffer,int readPtr, byte[] outBuffer,int writePtr, int inpLength); //////////////////////////////////////////////////////////////////////////// // Methods public NativeDecoder() { } /** Initializes the codec. **/ public void open() throws ResourceUnavailableException { try { com.sun.media.JMFSecurityManager.loadLibrary("jmutil"); com.sun.media.JMFSecurityManager.loadLibrary("jmg723"); initNative(); return; } catch (Throwable t) { System.err.println("can not load "+PLUGIN_NAME); System.err.println("reason : "+t); throw new ResourceUnavailableException("can not load "+PLUGIN_NAME); } } /** Clean up **/ public void close() { freeNative(); } public void reset() { resetNative(); } protected void decode( byte[] inpData,int readPtr, byte[] outData,int writePtr, int inpLength) { decodeNative(inpData,readPtr,outData,writePtr,inpLength); } }