📄 videocodectest.java
字号:
package net.sf.fmj.test.compat.sun;import java.awt.Dimension;import javax.media.Buffer;import javax.media.Format;import javax.media.format.RGBFormat;import javax.media.format.VideoFormat;import junit.framework.TestCase;import com.ibm.media.codec.video.VideoCodec;/** * * @author Ken Larson * */public class VideoCodecTest extends TestCase{ public void testVideoCodec3() { MyVideoCodec c = new MyVideoCodec(); Buffer b = new Buffer(); VideoFormat f = new VideoFormat("xyz", new Dimension(1, 2), 1000, byte[].class, 2.f); c.doUpdateOutput(b, f, 3333, 44); assertTrue(b.getFormat() == f); assertTrue(b.getLength() == 3333); assertTrue(b.getOffset() == 44); assertFalse(b.isDiscard()); assertFalse(b.isEOM()); c.doUpdateOutput(b, null, 3335, 45); assertTrue(b.getFormat() == null); assertTrue(b.getLength() == 3335); assertTrue(b.getOffset() == 45); } public void testVideoCodec2() { MyVideoCodec c = new MyVideoCodec() { //@Override protected Format[] getMatchingOutputFormats(Format arg0) { supportedOutputFormats = defaultOutputFormats; return defaultOutputFormats; //return super.getMatchingOutputFormats(arg0); } }; assertTrue(c.accessPluginName() == null); assertTrue(c.accessDefaultOutputFormats() == null); assertTrue(c.accessSupportedInputFormats() == null); assertTrue(c.accessSupportedOutputFormats() == null); assertTrue(c.accessInputFormat() == null); assertTrue(c.accessOutputFormat() == null); assertTrue(c.getName() == null); c.setPlugInName("abc"); assertEquals(c.getName(), "abc"); c.setDefaultOutputFormats(new VideoFormat[]{ new RGBFormat(new java.awt.Dimension(320, 200), 64000, Format.intArray, 1.3414634f, 32, 0xff, 0xff00, 0xff0000, 1, 320, 0, -1) }); { VideoFormat f = new VideoFormat("xyz", new Dimension(1, 2), 1000, byte[].class, 2.f); //assertEquals(c.checkFormat(new VideoFormat("xyz", new Dimension(1, 2), 1000, byte[].class, 2.f)), true); VideoFormat[] fs = new VideoFormat[] {f}; c.setSupportedInputFormats(fs); assertTrue(c.getSupportedInputFormats() == fs); } // only works once setSupportedInputFormats is called Format[] r = c.getSupportedOutputFormats(new VideoFormat("xyz", new Dimension(1, 2), 1000, byte[].class, 2.f)); assertFalse(r == null); assertEquals(r.length, 1); assertTrue(c.accessSupportedOutputFormats().length == 1); { VideoFormat f = new VideoFormat("xyz", new Dimension(1, 2), 1000, byte[].class, 2.f); VideoFormat result = (VideoFormat) c.setInputFormat(f); // this calls matches assertTrue(f == result); } assertTrue(c.accessSupportedOutputFormats() != null); } public void testVideoCodec() {//if (true)// return; MyVideoCodec c = new MyVideoCodec(); assertTrue(c.accessPluginName() == null); assertTrue(c.accessDefaultOutputFormats() == null); assertTrue(c.accessSupportedInputFormats() == null); assertTrue(c.accessSupportedOutputFormats() == null); assertTrue(c.accessInputFormat() == null); assertTrue(c.accessOutputFormat() == null); assertTrue(c.getName() == null); c.setPlugInName("abc"); assertEquals(c.getName(), "abc"); { VideoFormat f = new VideoFormat("xyz", new Dimension(1, 2), 1000, byte[].class, 2.f); //assertEquals(c.checkFormat(new VideoFormat("xyz", new Dimension(1, 2), 1000, byte[].class, 2.f)), true); VideoFormat[] fs = new VideoFormat[] {f}; c.setSupportedInputFormats(fs); assertTrue(c.getSupportedInputFormats() == fs); } // only works once setSupportedInputFormats is called c.getSupportedOutputFormats(new VideoFormat("xyz", new Dimension(1, 2), 1000, byte[].class, 2.f)); { Format f = new Format("xyz"); VideoFormat result = (VideoFormat) c.setInputFormat(f); // this calls matches assertTrue(null == result); } { VideoFormat f = new VideoFormat("xyz", new Dimension(1, 2), 1000, byte[].class, 2.f); VideoFormat result = (VideoFormat) c.setInputFormat(f); // this calls matches assertTrue(f == result); } assertTrue(c.accessSupportedOutputFormats() == null); { VideoFormat f = new VideoFormat("xyz", new Dimension(1, 2), -1, null, 2.f); VideoFormat result = (VideoFormat) c.setInputFormat(f); // this calls matches assertTrue(f == result); } { VideoFormat f = new VideoFormat("xyz", new Dimension(1, 2), 1000, int[].class, 2.f); VideoFormat result = (VideoFormat) c.setInputFormat(f); // this calls matches assertTrue(null == result); } c.getSupportedOutputFormats(new VideoFormat("xyz", new Dimension(1, 2), 1000, byte[].class, 2.f)); // TODO: need to set default output formats? { VideoFormat f = new VideoFormat("xyz", new Dimension(1, 2), 1000, byte[].class, 2.f); VideoFormat result = (VideoFormat) c.setOutputFormat(f); assertTrue(null == result); } c.getSupportedOutputFormats(new VideoFormat("xyz", new Dimension(1, 2), 1000, byte[].class, 2.f)); { VideoFormat f = new VideoFormat("xyz", new Dimension(1, 2), 1000, byte[].class, 2.f); //assertEquals(c.checkFormat(new VideoFormat("xyz", new Dimension(1, 2), 1000, byte[].class, 2.f)), true); VideoFormat[] fs = new VideoFormat[] {f}; c.setSupportedOutputFormats(fs); assertFalse(c.getSupportedOutputFormats(f) == fs); assertEquals(c.accessMatchingOutputFormats(f).length, 0); } { VideoFormat f = new VideoFormat("xyz", new Dimension(1, 2), 1000, byte[].class, 2.f); VideoFormat result = (VideoFormat) c.setOutputFormat(f); assertTrue(null == result); } { VideoFormat f = new VideoFormat("xyz", new Dimension(1, 2), 1000, byte[].class, 2.f); VideoFormat[] fs = new VideoFormat[] {f}; c.setDefaultOutputFormats(fs); assertTrue(c.accessDefaultOutputFormats() == fs); } assertTrue(c.accessDefaultOutputFormats() != null); assertTrue(c.accessSupportedInputFormats() != null); assertTrue(c.accessSupportedOutputFormats() != null); assertTrue(c.accessInputFormat() != null); assertTrue(c.accessOutputFormat() == null); { VideoFormat f = new VideoFormat("xyz", new Dimension(1, 2), 1000, byte[].class, 2.f); VideoFormat result = (VideoFormat) c.setOutputFormat(f); assertTrue(null == result); assertTrue(c.accessOutputFormat() == null); c.forceSetOutputFormat(f); assertTrue(c.accessOutputFormat() == f); assertTrue(c.checkFormat(new VideoFormat("ayz", new Dimension(1, 2), 2000, null, 3.f))); //assertTrue(c.checkFormat(new VideoFormat("ayz", null, 2000, int[].class, 3.f))); // NPE //assertTrue(c.checkFormat(new Format("ayz"))); // class cast except assertTrue(c.checkFormat(f)); { VideoFormat f2 = new VideoFormat("xyz", new Dimension(1, 2), 1000, byte[].class, 2.f); assertTrue(c.checkFormat(f2)); } { VideoFormat f2 = new VideoFormat("xyc", new Dimension(1, 2), 1000, byte[].class, 2.f); assertTrue(c.checkFormat(f2)); }// {// VideoFormat f2 = new VideoFormat("xyc", new Dimension(1, 3), 1000, byte[].class, 2.f); // assertTrue(c.checkFormat(f2)); // calls videoResized// } assertTrue(c.accessOutputFormat() == f); } if (false) { TracingVideoCodec c2 = new TracingVideoCodec(); { VideoFormat f = new VideoFormat("xyz", new Dimension(1, 2), 1000, byte[].class, 2.f); //assertEquals(c.checkFormat(new VideoFormat("xyz", new Dimension(1, 2), 1000, byte[].class, 2.f)), true); VideoFormat[] fs = new VideoFormat[] {f}; c2.setSupportedInputFormats(fs); assertTrue(c2.getSupportedInputFormats() == fs); } System.out.println("-->"); VideoFormat f = new VideoFormat("xyz", new Dimension(1, 2), 1000, byte[].class, 2.f); c2.getSupportedOutputFormats(f); System.out.println("-->"); c2.setInputFormat(f); System.out.println("-->"); System.out.println("f: " + f); assertTrue(c2.setOutputFormat(f) == null); System.out.println("-->"); assertTrue(c2.getOutputFormat() == null); } } class MyVideoCodec extends VideoCodec { public void doUpdateOutput(Buffer outputBuffer, Format format, int length, int offset) { updateOutput(outputBuffer, format, length, offset); } //@Override public int process(Buffer arg0, Buffer arg1) { return 0; } public void setPlugInName(String s) { PLUGIN_NAME = s; } public String accessPluginName() { return PLUGIN_NAME; } public void forceSetOutputFormat(VideoFormat value) { outputFormat = value; } public void setDefaultOutputFormats(VideoFormat[] value) { defaultOutputFormats = value; } public VideoFormat[] accessDefaultOutputFormats() { return defaultOutputFormats; } public void setSupportedInputFormats(VideoFormat[] value) { supportedInputFormats = value; } public VideoFormat[] accessSupportedInputFormats() { return supportedInputFormats; } public void setSupportedOutputFormats(VideoFormat[] value) { supportedOutputFormats = value; } public VideoFormat[] accessSupportedOutputFormats() { return supportedOutputFormats; } public VideoFormat accessInputFormat() { return inputFormat; } public VideoFormat accessOutputFormat() { return outputFormat; } public Format[] accessMatchingOutputFormats(Format in) { return getMatchingOutputFormats(in); } protected void videoResized() { System.out.println("videoResized"); } } class TracingVideoCodec extends MyVideoCodec { //@Override public boolean checkFormat(Format arg0) { System.out.println("checkFormat"); return super.checkFormat(arg0); } //@Override protected Format getInputFormat() { System.out.println("getInputFormat"); return super.getInputFormat(); } //@Override protected Format[] getMatchingOutputFormats(Format arg0) { System.out.println("getMatchingOutputFormats " + arg0 ); return super.getMatchingOutputFormats(arg0); } //@Override public String getName() { System.out.println("getName"); return super.getName(); } //@Override protected Format getOutputFormat() { System.out.println("getOutputFormat"); return super.getOutputFormat(); } //@Override public Format[] getSupportedInputFormats() { System.out.println("getSupportedInputFormats"); return super.getSupportedInputFormats(); } //@Override public Format[] getSupportedOutputFormats(Format arg0) { System.out.println("getSupportedOutputFormats"); return super.getSupportedOutputFormats(arg0); } //@Override public Format setInputFormat(Format arg0) { System.out.println("setInputFormat"); return super.setInputFormat(arg0); } //@Override public Format setOutputFormat(Format arg0) { System.out.println("setOutputFormat"); return super.setOutputFormat(arg0); } //@Override protected void updateOutput(Buffer arg0, Format arg1, int arg2, int arg3) { System.out.println("updateOutput"); super.updateOutput(arg0, arg1, arg2, arg3); } //@Override protected void videoResized() { System.out.println("videoResized"); super.videoResized(); } //@Override public int process(Buffer arg0, Buffer arg1) { System.out.println("process"); return 0; } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -