packetizer.java

来自「FMJ(freedom media for java)是java视频开发的新选择」· Java 代码 · 共 88 行

JAVA
88
字号
package net.sf.fmj.media.codec.audio.alaw;import java.util.logging.Logger;import javax.media.Format;import javax.media.format.AudioFormat;import net.sf.fmj.media.AbstractPacketizer;import net.sf.fmj.media.BonusAudioFormatEncodings;import net.sf.fmj.utility.LoggerSingleton;/** *  * @author Ken Larson * */public class Packetizer extends AbstractPacketizer{	private static final Logger logger = LoggerSingleton.logger;		private static final int PACKET_SIZE = 480;		public String getName()	{		return "ALAW Packetizer";	}		public Packetizer()	{		super();		this.inputFormats = new Format[] {new AudioFormat(AudioFormat.ALAW, -1.0, 8, 1, -1, -1, 8, -1.0, Format.byteArray)};			}		// TODO: move to base class?	protected Format[] outputFormats = new Format[] {new AudioFormat(BonusAudioFormatEncodings.ALAW_RTP, -1.0, 8, 1, -1, -1, 8, -1.0, Format.byteArray)};		public Format[] getSupportedOutputFormats(Format input)	{		if (input == null)			return outputFormats;		else		{				if (!(input instanceof AudioFormat))			{					logger.warning(this.getClass().getSimpleName() + ".getSupportedOutputFormats: input format does not match, returning format array of {null} for " + input); // this can cause an NPE in JMF if it ever happens.				return new Format[] {null};			}			final AudioFormat inputCast = (AudioFormat) input;			if (!inputCast.getEncoding().equals(AudioFormat.ALAW) ||				(inputCast.getSampleSizeInBits() != 8 && inputCast.getSampleSizeInBits() != Format.NOT_SPECIFIED) ||				(inputCast.getChannels() != 1 && inputCast.getChannels() != Format.NOT_SPECIFIED) ||				(inputCast.getFrameSizeInBits() != 8 && inputCast.getFrameSizeInBits() != Format.NOT_SPECIFIED)				)			{				logger.warning(this.getClass().getSimpleName() + ".getSupportedOutputFormats: input format does not match, returning format array of {null} for " + input); // this can cause an NPE in JMF if it ever happens.				return new Format[] {null};			}			final AudioFormat result = new AudioFormat(BonusAudioFormatEncodings.ALAW_RTP, inputCast.getSampleRate(), 8,					1, inputCast.getEndian(), inputCast.getSigned(), 8, 					inputCast.getFrameRate(), inputCast.getDataType());			return new Format[] {result};		}	}	public void open()	{		setPacketSize(PACKET_SIZE);	}		public void close()	{	}		public Format setInputFormat(Format arg0)	{		return super.setInputFormat(arg0);	}	public Format setOutputFormat(Format arg0)	{		return super.setOutputFormat(arg0);	}	}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?