/* * @(#)JavaDecoder_ms.java 1.8 02/08/21 * * 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.*; import com.sun.media.controls.*; /** * MS GSM decoder plugin wrapper, which uses Java methods to do the decoding. * @author Shay Ben-David bendavid@haifa.vnet.ibm.com */ public class JavaDecoder_ms extends JavaDecoder { //////////////////////////////////////////////////////////////////////////// // 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."; //////////////////////////////////////////////////////////////////////////// // Methods public JavaDecoder_ms() { super(); supportedInputFormats = new AudioFormat[] { new AudioFormat(AudioFormat.GSM_MS) }; PLUGIN_NAME="GSM MS Decoder"; } public void open() throws ResourceUnavailableException{ decoder=new GsmDecoder_ms(); decoder.decoderInit(); } protected int calculateOutputSize(int inputSize) { return inputSize/65 * 640; } protected void decode(byte[] inpData,int readPtr,byte[] outData,int writePtr,int inpLength) { int numberOfFrames = (inpLength/65); for ( int n=1 ; n<=numberOfFrames ; n++,writePtr += 640,readPtr += 65) { decoder.decodeFrame(inpData, readPtr , outData,writePtr); } } public java.lang.Object[] getControls() { if (controls==null) { controls=new Control[1]; controls[0]=new SilenceSuppressionAdapter(this,false,false); } return (Object[])controls; } }