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

📄 bitmapinfotest.java

📁 FMJ(freedom media for java)是java视频开发的新选择
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
											assertEquals(f.getMaxDataLength(), b.biSizeImage);											}					else if (classes[i] == short[].class)					{	assertEquals(f.getPixelStride(), 1);//						if (f.getLineStride() != b.biWidth)//							System.out.println(b.biWidth);//						assertEquals(f.getLineStride(), b.biWidth);	// 1, 2, or 3...//					assertEquals(f.getLineStride(), f.getPixelStride() * b.biWidth); // TODO											assertEquals(f.getMaxDataLength(), b.biSizeImage / 2);						if (b.biSizeImage == 0)							assertEquals(f.getMaxDataLength(), 0);						else if (b.biSizeImage == 1)							assertEquals(f.getMaxDataLength(), 0);						else if (b.biSizeImage == 2)							assertEquals(f.getMaxDataLength(), 1);						else if (b.biSizeImage == 3)							assertEquals(f.getMaxDataLength(), 1);						else if (b.biSizeImage == 6)							assertEquals(f.getMaxDataLength(), 3);						else if (b.biSizeImage == 12)							assertEquals(f.getMaxDataLength(), 6);						else							System.out.println(b.biSizeImage);																				}					else if (classes[i] == int[].class)					{	assertEquals(f.getPixelStride(), 0);					//assertEquals(f.getLineStride(), f.getPixelStride() * b.biWidth); // TODO					//assertEquals(f.getMaxDataLength(), 0);											assertEquals(f.getMaxDataLength(), b.biSizeImage / 4);						if (b.biSizeImage == 0)							assertEquals(f.getMaxDataLength(), 0);						else if (b.biSizeImage == 1)							assertEquals(f.getMaxDataLength(), 0);						else if (b.biSizeImage == 2)							assertEquals(f.getMaxDataLength(), 0);						else if (b.biSizeImage == 3)							assertEquals(f.getMaxDataLength(), 0);						else if (b.biSizeImage == 6)							assertEquals(f.getMaxDataLength(), 1);						else if (b.biSizeImage == 12)							assertEquals(f.getMaxDataLength(), 3);						else							System.out.println(b.biSizeImage);					}									}				else if (f.getBitsPerPixel() == 32)				{					if (classes[i] == byte[].class)					{	assertEquals(f.getBlueMask(), 1);							assertEquals(f.getGreenMask(), 2);						assertEquals(f.getRedMask(), 3);												assertEquals(f.getPixelStride(), 4);						assertEquals(f.getLineStride(), f.getPixelStride() * b.biWidth);												assertEquals(f.getMaxDataLength(), b.biSizeImage);						}					else if (classes[i] == int[].class)					{	assertEquals(f.getBlueMask(), 0xFF);							assertEquals(f.getGreenMask(), 0xFF00);						assertEquals(f.getRedMask(), 0xFF0000);												assertEquals(f.getPixelStride(), 1);						assertEquals(f.getLineStride(), f.getPixelStride() * b.biWidth);												assertEquals(f.getMaxDataLength(), b.biSizeImage / 4);												if (b.biSizeImage == 0)							assertEquals(f.getMaxDataLength(), 0);						else if (b.biSizeImage == 1)							assertEquals(f.getMaxDataLength(), 0);						else if (b.biSizeImage == 2)							assertEquals(f.getMaxDataLength(), 0);						else if (b.biSizeImage == 3)							assertEquals(f.getMaxDataLength(), 0);						else if (b.biSizeImage == 6)							assertEquals(f.getMaxDataLength(), 1);						else if (b.biSizeImage == 12)							assertEquals(f.getMaxDataLength(), 3);						else							System.out.println(b.biSizeImage);												}					else if (classes[i] == short[].class)					{	assertEquals(f.getBlueMask(), 1);							assertEquals(f.getGreenMask(), 2);						assertEquals(f.getRedMask(), 3);						assertEquals(f.getPixelStride(), 2);						assertEquals(f.getLineStride(), f.getPixelStride() * b.biWidth);												assertEquals(f.getMaxDataLength(), b.biSizeImage / 2);						if (b.biSizeImage == 0)							assertEquals(f.getMaxDataLength(), 0);						else if (b.biSizeImage == 1)							assertEquals(f.getMaxDataLength(), 0);						else if (b.biSizeImage == 2)							assertEquals(f.getMaxDataLength(), 1);						else if (b.biSizeImage == 3)							assertEquals(f.getMaxDataLength(), 1);						else if (b.biSizeImage == 6)							assertEquals(f.getMaxDataLength(), 3);						else if (b.biSizeImage == 12)							assertEquals(f.getMaxDataLength(), 6);						else							System.out.println(b.biSizeImage);					}				}				else if (f.getBitsPerPixel() == 16)				{					assertEquals(f.getBlueMask(), 31);						assertEquals(f.getGreenMask(), 992);					assertEquals(f.getRedMask(), 31744);										if (classes[i] == byte[].class)					{						assertEquals(f.getPixelStride(), 2);												assertEquals(f.getMaxDataLength(), b.biSizeImage);						if (b.biSizeImage == 0)							assertEquals(f.getMaxDataLength(), 0);						else if (b.biSizeImage == 1)							assertEquals(f.getMaxDataLength(), 1);						else if (b.biSizeImage == 2)							assertEquals(f.getMaxDataLength(), 2);						else if (b.biSizeImage == 3)							assertEquals(f.getMaxDataLength(), 3);						else if (b.biSizeImage == 6)							assertEquals(f.getMaxDataLength(), 6);						else if (b.biSizeImage == 12)							assertEquals(f.getMaxDataLength(), 12);						else							System.out.println(b.biSizeImage);											}					else if (classes[i] == short[].class)					{												assertEquals(f.getPixelStride(), 1);												assertEquals(f.getMaxDataLength(), b.biSizeImage / 2);						if (b.biSizeImage == 0)							assertEquals(f.getMaxDataLength(), 0);						else if (b.biSizeImage == 1)							assertEquals(f.getMaxDataLength(), 0);						else if (b.biSizeImage == 2)							assertEquals(f.getMaxDataLength(), 1);						else if (b.biSizeImage == 3)							assertEquals(f.getMaxDataLength(), 1);						else if (b.biSizeImage == 6)							assertEquals(f.getMaxDataLength(), 3);						else if (b.biSizeImage == 12)							assertEquals(f.getMaxDataLength(), 6);						else							System.out.println(b.biSizeImage);																								}					else if (classes[i] == int[].class)					{												assertEquals(f.getPixelStride(), 0);												assertEquals(f.getMaxDataLength(), b.biSizeImage / 4);						if (b.biSizeImage == 0)							assertEquals(f.getMaxDataLength(), 0);						else if (b.biSizeImage == 1)							assertEquals(f.getMaxDataLength(), 0);						else if (b.biSizeImage == 2)							assertEquals(f.getMaxDataLength(), 0);						else if (b.biSizeImage == 3)							assertEquals(f.getMaxDataLength(), 0);						else if (b.biSizeImage == 6)							assertEquals(f.getMaxDataLength(), 1);						else if (b.biSizeImage == 12)							assertEquals(f.getMaxDataLength(), 3);						else							System.out.println(b.biSizeImage);					}									}				else if (f.getBitsPerPixel() == 8 || f.getBitsPerPixel() == 12)				{					assertEquals(f.getBlueMask(), -1);						assertEquals(f.getGreenMask(), -1);					assertEquals(f.getRedMask(), -1);										if (classes[i] == byte[].class)					{						assertEquals(f.getPixelStride(), 1);												assertEquals(f.getMaxDataLength(), b.biSizeImage);						// same as 16-bit						if (b.biSizeImage == 0)							assertEquals(f.getMaxDataLength(), 0);						else if (b.biSizeImage == 1)							assertEquals(f.getMaxDataLength(), 1);						else if (b.biSizeImage == 2)						{	//dump(b);							assertEquals(f.getMaxDataLength(), 2);						}						else if (b.biSizeImage == 3)							assertEquals(f.getMaxDataLength(), 3);						else if (b.biSizeImage == 6)							assertEquals(f.getMaxDataLength(), 6);						else if (b.biSizeImage == 12)							assertEquals(f.getMaxDataLength(), 12);						else							System.out.println(b.biSizeImage);					}					else if (classes[i] == short[].class)					{						assertEquals(f.getPixelStride(), 0);						//						 same as 16-bit: ??												assertEquals(f.getMaxDataLength(), b.biSizeImage / 2);						if (b.biSizeImage == 0)							assertEquals(f.getMaxDataLength(), 0);						else if (b.biSizeImage == 1)							assertEquals(f.getMaxDataLength(), 0);						else if (b.biSizeImage == 2)							assertEquals(f.getMaxDataLength(), 1);						else if (b.biSizeImage == 3)							assertEquals(f.getMaxDataLength(), 1);						else if (b.biSizeImage == 6)							assertEquals(f.getMaxDataLength(), 3);						else if (b.biSizeImage == 12)							assertEquals(f.getMaxDataLength(), 6);						else							System.out.println(b.biSizeImage);												}					else if (classes[i] == int[].class)					{						assertEquals(f.getPixelStride(), 0);												assertEquals(f.getMaxDataLength(), b.biSizeImage / 4);						// same as 16-bit:						if (b.biSizeImage == 0)						{								//dump(b);							assertEquals(f.getMaxDataLength(), 0);						}						else if (b.biSizeImage == 1)							assertEquals(f.getMaxDataLength(), 0);						else if (b.biSizeImage == 2)						{								//dump(b);							assertEquals(f.getMaxDataLength(), 0);						}						else if (b.biSizeImage == 3)							assertEquals(f.getMaxDataLength(), 0);						else if (b.biSizeImage == 6)							assertEquals(f.getMaxDataLength(), 1);						else if (b.biSizeImage == 12)							assertEquals(f.getMaxDataLength(), 3);						else							System.out.println(b.biSizeImage);					}									}				else				{	assertEquals(f.getBlueMask(), -1);						assertEquals(f.getGreenMask(), -1);					assertEquals(f.getRedMask(), -1);										assertEquals(f.getPixelStride(), 0);	// TODO: 0 or 1					//assertEquals(f.getMaxDataLength(), -2); // TODO: -1 or -2					if (classes[i] == byte[].class)					{												assertEquals(f.getMaxDataLength(), b.biSizeImage);												// same as 16-bit, except -2 case is new						if (b.biSizeImage == 0)							assertEquals(f.getMaxDataLength(), 0);						else if (b.biSizeImage == 1)							assertEquals(f.getMaxDataLength(), 1);						else if (b.biSizeImage == 2)							assertEquals(f.getMaxDataLength(), 2);						else if (b.biSizeImage == 3)							assertEquals(f.getMaxDataLength(), 1);						else if (b.biSizeImage == 6)							assertEquals(f.getMaxDataLength(), 3);						else if (b.biSizeImage == 12)							assertEquals(f.getMaxDataLength(), 6);						else if (b.biSizeImage == -2)							assertEquals(f.getMaxDataLength(), -2);						else							System.out.println(b.biSizeImage);					}					else if (classes[i] == short[].class)					{						assertEquals(f.getMaxDataLength(), b.biSizeImage / 2);//						 same as 16-bit:						assertEquals(f.getMaxDataLength(), -1);					}					else if (classes[i] == int[].class)					{												assertEquals(f.getMaxDataLength(), b.biSizeImage / 4);												// same as 16-bit:, except -2 case is new						if (b.biSizeImage == 0)							assertEquals(f.getMaxDataLength(), 0);						else if (b.biSizeImage == 1)							assertEquals(f.getMaxDataLength(), 0);						else if (b.biSizeImage == 2)							assertEquals(f.getMaxDataLength(), 1);						else if (b.biSizeImage == 3)							assertEquals(f.getMaxDataLength(), 1);						else if (b.biSizeImage == 6)							assertEquals(f.getMaxDataLength(), 3);						else if (b.biSizeImage == 12)							assertEquals(f.getMaxDataLength(), 6);						else if (b.biSizeImage == -2)							assertEquals(f.getMaxDataLength(), 0);						else							System.out.println("X" + b.biSizeImage);					}												}				assertEquals(f.getEndian(), 1);				assertEquals(f.getFlipped(), 1);				//assertEquals(f.getLineStride(), -40);	// TODO: varies, sometimes -40, sometimes -20														}			else if (b.fourcc.equals("YV12"))			{				final YUVFormat f;				if (j == 0)					f = (YUVFormat) b.createVideoFormat(classes[i]);				else					f = (YUVFormat) b.createVideoFormat(classes[i], frameRates[j]);								assertEquals(f.getEncoding(), "yuv");				assertEquals(f.getYuvType(), YUVFormat.YUV_420);				assertEquals(f.getDataType(), byte[].class);				assertEquals(f.getFrameRate(), j == 0 ? -1.f : frameRates[j]);				assertEquals(f.getSize(), new Dimension(b.biWidth, b.biHeight));								assertEquals(f.getMaxDataLength(), b.biSizeImage); // sometimes 0				assertEquals(f.getOffsetY(), 0);				assertEquals(f.getOffsetU(), b.biWidth *  b.biHeight + (b.biWidth *  b.biHeight) / 4);	// empirically determined				//320x240: 96000				// 96000 - 76800 = 19200.  96000 / 76800 = 1.25				// 				assertEquals(f.getOffsetV(), b.biWidth *  b.biHeight);								assertEquals(f.getStrideUV(), b.biWidth / 2);				assertEquals(f.getStrideY(), b.biWidth);								}			else			{				final com.sun.media.format.AviVideoFormat f;				if (j == 0)					f = (com.sun.media.format.AviVideoFormat) b.createVideoFormat(classes[i]);				else					f = (com.sun.media.format.AviVideoFormat) b.createVideoFormat(classes[i], frameRates[j]);				assertEquals(f.getEncoding(), b.fourcc);				assertEquals(f.getBitsPerPixel(), b.biBitCount);				assertEquals(f.getClrImportant(), b.biClrImportant);				assertEquals(f.getClrUsed(), b.biClrUsed);				assertEquals(f.getCodecSpecificHeader(), b.extraBytes);				assertEquals(f.getDataType(), classes[i]);				assertEquals(f.getFrameRate(), j == 0 ? -1.f : frameRates[j]);				assertEquals(f.getImageSize(), b.biSizeImage);				assertEquals(f.getMaxDataLength(), b.biSizeImage);				assertEquals(f.getPlanes(), b.biPlanes);				assertEquals(f.getSize(), new Dimension(b.biWidth, b.biHeight));				assertEquals(f.getXPelsPerMeter(), b.biXPelsPerMeter);				assertEquals(f.getYPelsPerMeter(), b.biYPelsPerMeter);			}		}			}			void testRGBFormat(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 RGBFormat f;			if (j == 0)				f = (RGBFormat) b.createVideoFormat(classes[i]);			else				f = (RGBFormat) b.createVideoFormat(classes[i], frameRates[j]);			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));		}			}		private void assertEquals(float f1, float f2)	{	assertTrue(f1 == f2);	}}

⌨️ 快捷键说明

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