package org.red5.app.sip.codecs; /** * Interface for audio codecs * */ public interface Codec { public static final String MEDIA_TYPE_AUDIO = "audio"; public static final String MEDIA_TYPE_VIDEO = "video"; public static final String ATTRIBUTE_PTIME = "ptime"; public static final String ATTRIBUTE_RTPMAP = "rtpmap"; public static final String ATTRIBUTE_FMTP = "fmtp"; public static final String ATTRIBUTE_AS = "AS"; public static final int DEFAULT_PACKETIZATION = 20; public void encodeInit( int defaultEncodePacketization ); public void decodeInit( int defaultDecodePacketization ); public String codecNegotiateAttribute( String attributeName, String localAttributeValue, String remoteAttributeValue ); public int getCodecBlankPacket( byte[] buffer, int offset ); public int pcmToCodec( float[] bufferIn, byte[] bufferOut ); public int codecToPcm( byte[] bufferIn, float[] bufferOut ); public int getIncomingEncodedFrameSize(); public int getIncomingDecodedFrameSize(); public int getOutgoingEncodedFrameSize(); public int getOutgoingDecodedFrameSize(); public int getSampleRate(); public String getCodecName(); public int getCodecId(); public int getIncomingPacketization(); public int getOutgoingPacketization(); public void setLocalPtime( int localPtime ); public void setRemotePtime( int remotePtime ); /** * Get codec media attributes used for SDP negotiation * Example: iLBC codec will return "fmtp:111 mode=30" * @return String array containing codec attribute */ public String[] getCodecMediaAttributes(); }