⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bitmapinfotest.java

📁 FMJ(freedom media for java)是java视频开发的新选择
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
package net.sf.fmj.test.compat.sun;import java.awt.Dimension;import javax.media.format.H261Format;import javax.media.format.H263Format;import javax.media.format.JPEGFormat;import javax.media.format.RGBFormat;import javax.media.format.VideoFormat;import javax.media.format.YUVFormat;import junit.framework.TestCase;import com.sun.media.vfw.BitMapInfo;/** *  * @author Ken Larson * */public class BitMapInfoTest extends TestCase{	// TODO: test all video formats://	H261Format//	H263Format//	IndexedColorFormat//	JPEGFormat//	YUVFOrmat		public void testBitMapInfo8()	{		{			BitMapInfo b = new BitMapInfo(new VideoFormat("xyz"));			assertEquals(b.biBitCount, 24);			assertEquals(b.biWidth, 320);			assertEquals(b.biHeight, 240);			assertEquals(b.biPlanes, 1);			assertEquals(b.biSizeImage, -1);			assertEquals(b.fourcc, "xyz");			assertEquals(b.biXPelsPerMeter, 0);			assertEquals(b.biYPelsPerMeter, 0);			assertEquals(b.biClrUsed, 0);			assertEquals(b.biClrImportant, 0);			assertEquals(b.extraSize, 0);			assertEquals(b.extraBytes, null);			test(b);		}			}		public void testBitMapInfo7()	{		{			BitMapInfo b = new BitMapInfo(new YUVFormat());			assertEquals(b.biBitCount, 24);			assertEquals(b.biWidth, 320);			assertEquals(b.biHeight, 240);			assertEquals(b.biPlanes, 1);			assertEquals(b.biSizeImage, -1);			assertEquals(b.fourcc, "yuv");			assertEquals(b.biXPelsPerMeter, 0);			assertEquals(b.biYPelsPerMeter, 0);			assertEquals(b.biClrUsed, 0);			assertEquals(b.biClrImportant, 0);			assertEquals(b.extraSize, 0);			assertEquals(b.extraBytes, null);			test(b);		}				int[] yuvTypes = new int[]{				YUVFormat.YUV_411, 				YUVFormat.YUV_420, 				YUVFormat.YUV_422, 				YUVFormat.YUV_111,				YUVFormat.YUV_YVU9,				YUVFormat.YUV_YUYV,				YUVFormat.YUV_SIGNED				};		for (int i = 0; i < yuvTypes.length; ++i)		{			final int yuvType = yuvTypes[i];			//System.out.println(yuvType);						// TODO: test other constructors			// TODO: how to get I420?						YUVFormat f = new YUVFormat(yuvType);			//System.out.println(f.getEncoding());			BitMapInfo b = new BitMapInfo(f);			if (yuvType == YUVFormat.YUV_411)			{					assertEquals(b.biBitCount, 24);				assertEquals(b.fourcc, "yuv");			}			else if (yuvType == YUVFormat.YUV_420)			{	assertEquals(b.biBitCount, 12);				assertEquals(b.fourcc, "YV12");			}			else if (yuvType == YUVFormat.YUV_422)			{	assertEquals(b.biBitCount, 24);				assertEquals(b.fourcc, "yuv");			}			else if (yuvType == YUVFormat.YUV_111)			{	assertEquals(b.biBitCount, 24);				assertEquals(b.fourcc, "yuv");			}			else if (yuvType == YUVFormat.YUV_YVU9)			{	assertEquals(b.biBitCount, 24);				assertEquals(b.fourcc, "yuv");			}			else if (yuvType == YUVFormat.YUV_YUYV)			{	assertEquals(b.biBitCount, 24);				assertEquals(b.fourcc, "yuv");			}			else if (yuvType == YUVFormat.YUV_SIGNED)			{	assertEquals(b.biBitCount, 24);				assertEquals(b.fourcc, "yuv");			}			assertEquals(b.biWidth, 320);			assertEquals(b.biHeight, 240);			assertEquals(b.biPlanes, 1);			assertEquals(b.biSizeImage, -1);						assertEquals(b.biXPelsPerMeter, 0);			assertEquals(b.biYPelsPerMeter, 0);			assertEquals(b.biClrUsed, 0);			assertEquals(b.biClrImportant, 0);			assertEquals(b.extraSize, 0);			assertEquals(b.extraBytes, null);			test(b);		}			}		public void testBitMapInfo6()	{		{			BitMapInfo b = new BitMapInfo(new JPEGFormat());			assertEquals(b.biBitCount, 24);			assertEquals(b.biWidth, 320);			assertEquals(b.biHeight, 240);			assertEquals(b.biPlanes, 1);			assertEquals(b.biSizeImage, -1);			assertEquals(b.fourcc, "jpeg");			assertEquals(b.biXPelsPerMeter, 0);			assertEquals(b.biYPelsPerMeter, 0);			assertEquals(b.biClrUsed, 0);			assertEquals(b.biClrImportant, 0);			assertEquals(b.extraSize, 0);			assertEquals(b.extraBytes, null);			test(b);		}			}	//	public void testBitMapInfo5()//	{//		{//			BitMapInfo b = new BitMapInfo(new IndexedColorFormat());//			assertEquals(b.biBitCount, 24);//			assertEquals(b.biWidth, 320);//			assertEquals(b.biHeight, 240);//			assertEquals(b.biPlanes, 1);//			assertEquals(b.biSizeImage, -1);//			assertEquals(b.fourcc, "h263");//			assertEquals(b.biXPelsPerMeter, 0);//			assertEquals(b.biYPelsPerMeter, 0);//			assertEquals(b.biClrUsed, 0);//			assertEquals(b.biClrImportant, 0);//			assertEquals(b.extraSize, 0);//			assertEquals(b.extraBytes, null);//			test(b);////		}//		////	}		public void testBitMapInfo4()	{		{			BitMapInfo b = new BitMapInfo(new H263Format());			assertEquals(b.biBitCount, 24);			assertEquals(b.biWidth, 320);			assertEquals(b.biHeight, 240);			assertEquals(b.biPlanes, 1);			assertEquals(b.biSizeImage, -1);			assertEquals(b.fourcc, "h263");			assertEquals(b.biXPelsPerMeter, 0);			assertEquals(b.biYPelsPerMeter, 0);			assertEquals(b.biClrUsed, 0);			assertEquals(b.biClrImportant, 0);			assertEquals(b.extraSize, 0);			assertEquals(b.extraBytes, null);			test(b);		}			}		public void testBitMapInfo3()	{		{			BitMapInfo b = new BitMapInfo(new H261Format());			assertEquals(b.biBitCount, 24);			assertEquals(b.biWidth, 320);			assertEquals(b.biHeight, 240);			assertEquals(b.biPlanes, 1);			assertEquals(b.biSizeImage, -1);			assertEquals(b.fourcc, "h261");			assertEquals(b.biXPelsPerMeter, 0);			assertEquals(b.biYPelsPerMeter, 0);			assertEquals(b.biClrUsed, 0);			assertEquals(b.biClrImportant, 0);			assertEquals(b.extraSize, 0);			assertEquals(b.extraBytes, null);			test(b);		}			}		public void testBitMapInfo2()	{		{			BitMapInfo b = new BitMapInfo(new RGBFormat());			assertEquals(b.biBitCount, -1);			assertEquals(b.biWidth, 320);			assertEquals(b.biHeight, 240);			assertEquals(b.biPlanes, 1);			assertEquals(b.biSizeImage, -2);			assertEquals(b.fourcc, "RGB");			assertEquals(b.biXPelsPerMeter, 0);			assertEquals(b.biYPelsPerMeter, 0);			assertEquals(b.biClrUsed, 0);			assertEquals(b.biClrImportant, 0);			assertEquals(b.extraSize, 0);			assertEquals(b.extraBytes, null);			assertEquals(b.toString(), "Size = 320 x 240	Planes = 1	BitCount = -1	FourCC = RGB	SizeImage = -2\nClrUsed = 0\nClrImportant = 0\nExtraSize = 0\n");			test(b);		}			}		private static void dump(BitMapInfo b)	{		//System.out.println(b);				System.out.println("[biBitCount=" + b.biBitCount);		System.out.println("biWidth=" + b.biWidth);		System.out.println("biHeight=" + b.biHeight);		System.out.println("biPlanes=" + b.biPlanes);		System.out.println("biSizeImage=" + b.biSizeImage);		System.out.println("fourcc=" + b.fourcc);		System.out.println("biXPelsPerMeter=" + b.biXPelsPerMeter);		System.out.println("biYPelsPerMeter=" + b.biYPelsPerMeter);		System.out.println("biClrUsed=" + b.biClrUsed);		System.out.println("biClrImportant=" + b.biClrImportant);		System.out.println("extraSize=" + b.extraSize);		System.out.println("extraBytes=" + b.extraBytes + "]");	}		public void testBitMapInfo1()	{		{			BitMapInfo b = new BitMapInfo();			assertEquals(b.biBitCount, 24);			assertEquals(b.biWidth, 0);			assertEquals(b.biHeight, 0);			assertEquals(b.biPlanes, 1);			assertEquals(b.biSizeImage, 0);			assertEquals(b.fourcc, "");			assertEquals(b.biXPelsPerMeter, 0);			assertEquals(b.biYPelsPerMeter, 0);			assertEquals(b.biClrUsed, 0);			assertEquals(b.biClrImportant, 0);			assertEquals(b.extraSize, 0);			assertEquals(b.extraBytes, null);			assertEquals(b.toString(), "Size = 0 x 0	Planes = 1	BitCount = 24	FourCC = 	SizeImage = 0\nClrUsed = 0\nClrImportant = 0\nExtraSize = 0\n");			test(b);						final String[] fourccs = new String[]{"", "xyzq", "RGB", "YV12"};			final byte[][] extras = new byte[][]{null, new byte[]{11, 12}};			final int[] bitcounts = new int[] {8, 12, 16, 24, 32};//, 16, 24, 32};			final int[] sizes = new int[] {0, 1, 2, 3, 6, 12};						for (int k = 0; k < bitcounts.length; ++k)			for (b.biWidth = 0; b.biWidth < 3; ++b.biWidth)			for (b.biHeight = 0; b.biHeight < 3; ++b.biHeight)			for (b.biPlanes = 0; b.biPlanes <= 2; ++b.biPlanes)			//for (b.biSizeImage = 0; b.biSizeImage < 3; ++b.biSizeImage)			for (int m = 0; m < sizes.length; ++m)			for (int j = 0; j < extras.length; ++j)			for (b.biXPelsPerMeter = 0; b.biXPelsPerMeter < 2; ++b.biXPelsPerMeter)			for (b.biYPelsPerMeter = 0; b.biYPelsPerMeter < 2; ++b.biYPelsPerMeter)			for (b.biClrUsed = 0; b.biClrUsed < 2; ++b.biClrUsed)			for (b.biClrImportant = 0; b.biClrImportant < 3; ++b.biClrImportant)			for (b.extraSize = 0; b.extraSize < 2; ++b.extraSize)			for (int i = 0; i < fourccs.length; ++i)			{				b.biBitCount = bitcounts[k];				b.fourcc = fourccs[i];				b.extraBytes = extras[j];				b.biSizeImage = sizes[m];								test(b);				{					BitMapInfo b2 = new BitMapInfo(b.fourcc, b.biWidth, b.biHeight);					assertEquals(b2.biBitCount, 24);					assertEquals(b2.biWidth, b.biWidth);					assertEquals(b2.biHeight, b.biHeight);					assertEquals(b2.biPlanes, 1);					if (b2.fourcc.equals("RGB"))						assertEquals(b2.biSizeImage, b2.biWidth * b2.biHeight * (b2.biBitCount / 8));	// TODO					else						assertEquals(b2.biSizeImage, 0);					assertEquals(b2.fourcc, b.fourcc);					assertEquals(b2.biXPelsPerMeter, 0);					assertEquals(b2.biYPelsPerMeter, 0);					assertEquals(b2.biClrUsed, 0);					assertEquals(b2.biClrImportant, 0);					assertEquals(b2.extraSize, 0);					assertEquals(b2.extraBytes, null);					test(b2);				}				{					BitMapInfo b2 = new BitMapInfo(b.fourcc, b.biWidth, b.biHeight, b.biPlanes, b.biBitCount, b.biSizeImage, b.biClrUsed, b.biClrImportant);					assertEquals(b2.biBitCount, b.biBitCount);					assertEquals(b2.biWidth, b.biWidth);					assertEquals(b2.biHeight, b.biHeight);					assertEquals(b2.biPlanes, b.biPlanes);					assertEquals(b2.biSizeImage, b.biSizeImage);					assertEquals(b2.fourcc, b.fourcc);					assertEquals(b2.biXPelsPerMeter, 0);					assertEquals(b2.biYPelsPerMeter, 0);					assertEquals(b2.biClrUsed, b.biClrUsed);					assertEquals(b2.biClrImportant, b.biClrImportant);					assertEquals(b2.extraSize, 0);					assertEquals(b2.extraBytes, null);					test(b2);				}							}					}	}		void test(BitMapInfo b)	{				Class[] classes = new Class[] {byte[].class, short[].class, int[].class};		float[] frameRates = new float[] {-2.f, -1.f, 0.f};		for (int i = 0; i < classes.length; ++i)		for (int j = 0; j < frameRates.length; ++j)		{//			{//				final VideoFormat f;//				//				if (j == 0)//					f = b.createVideoFormat(classes[i]);//				else//					f = b.createVideoFormat(classes[i], frameRates[j]);//				//				BitMapInfo b2 = new BitMapInfo(f);//				//				assertEquals(b2.biBitCount, b.biBitCount);//				assertEquals(b2.biWidth, b.biWidth);//				assertEquals(b2.biHeight, b.biHeight);//				assertEquals(b2.biPlanes, b.biPlanes);//				//assertEquals(b2.biSizeImage, b.biSizeImage);//				assertEquals(b2.fourcc, b.fourcc);//				assertEquals(b2.biXPelsPerMeter, 0);//				assertEquals(b2.biYPelsPerMeter, 0);//				assertEquals(b2.biClrUsed, b.biClrUsed);//				assertEquals(b2.biClrImportant, b.biClrImportant);//				assertEquals(b2.extraSize, 0);//				assertEquals(b2.extraBytes, null);//				//			}						if (b.fourcc.equals("RGB"))			{				final RGBFormat f;								if (b.biWidth == 0)					continue;				if (b.biHeight == 0)					continue;								try				{					if (j == 0)						f = (RGBFormat) b.createVideoFormat(classes[i]);					else						f = (RGBFormat) b.createVideoFormat(classes[i], frameRates[j]);				}				catch (ArithmeticException e)				{					e.printStackTrace();					continue;				}				assertEquals(f.getEncoding(), b.fourcc.toLowerCase());				assertEquals(f.getBitsPerPixel(), b.biBitCount);				assertEquals(f.getDataType(), classes[i]);				assertEquals(f.getFrameRate(), j == 0 ? -1.f : frameRates[j]);				//assertEquals(f.getMaxDataLength(), -2);	// TODO: sometimes -1, sometimes -2				assertEquals(f.getSize(), new Dimension(b.biWidth, b.biHeight));								if (f.getBitsPerPixel() == 24)				{	assertEquals(f.getBlueMask(), 1);						assertEquals(f.getGreenMask(), 2);					assertEquals(f.getRedMask(), 3);					if (classes[i] == byte[].class)					{	assertEquals(f.getPixelStride(), 3);						assertEquals(f.getLineStride(), f.getPixelStride() * b.biWidth);

⌨️ 快捷键说明

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