不久前,微软开始向PC厂商提供Windows 8 OEM(预装版),正式版则将于今年10月26日正式在全球范围内上市。而为了解决Windows操作系统一直存在的盗版问题,微软将要求每一套Windows 8 OEM系统使用独立密匙,从而加大盗版Windows 8的激活难度。
具体操作上,微软要求PC厂商必须将每套Windows 8的独立密匙写入每台新PC的BIOS中,以便与该PC的硬件绑定。而独立密匙需要PC厂商直接从微软获得,没有其他渠道。
但在以前,PC厂商可以在所有电脑中使用同一个产品密匙,黑客可以轻松破解并激活盗版Windows系统,流氓PC厂商也借助类似的方式逃避Windows授权费。这也是一张盗版系统盘可以安装在多个PC上的原因。
有网友评论认为,微软这次反盗版非常狠,但这并不意味着盗版就会被杜绝,这种写入BIOS的方式也并不是无法破解,只是需要多花一些时间和多了一些破解风险。
最近折腾DM368 h264解码,解码出的流直接保存成单帧YUV420文件,然后在windows上查看解码是否成功(受调试条件限制,只能通过这个方式来确认解码效果)。
由于YUV420这个格式之前未实际深入调试过,忽视一些重要的知识点,导致困惑。上图,
上图色彩明显不对,这个截图后效果比原始显示要好,原始显示的图片,还有明显的竖条纹出现,感觉是每隔一列一个竖条纹。
开始思路一直怀疑是h264解码问题,查了两天无果。今早忽然灵感来,想到YUV420存储格式的问题。确认,dm368 解码后是NV12,而我用的工具显示是IYUV的,问题定位到。网上搜不到显示NV12的小工具,自己写个代码把NV12转换成IYUV,再显示,如下:
代码:
int ConvertNV12toIYUV(Uint8* pbuf,Uint32 imgw,Uint32 imgh)
{
Uint8* pPU = NULL;
Uint8* pPV = NULL;
Uint8* pPUV = NULL;
Uint8* pcache = NULL;
Uint32 i;
if (pbuf == NULL)
return -1;
pPUV = pbuf + imgw*imgh;
pcache = (Uint8*)malloc((imgw*imgh)>>1);
if (pcache == NULL)
return -1;
pPU = pcache;
pPV = pcache + ((imgw*imgh)>>2);
for (i=0;i<(imgw*imgh)>>1;i++)
{
if ((i % 2) == 0)
*pPV++ = *(pPUV+i);
else
*pPU++ = *(pPUV+i);
}
memcpy(pPUV,pcache,(imgw*imgh)>>1);
if (pcache)
free(pcache);
return 0;
}
TIPS:
a.时间允许还是做事前补充下相关背景知识。
b.dm365/dm368 YUV420 是XDM_YUV_420SP格式。
c.调试小工具很重要。
一个很简单的例子
使用
try {
snapFile.createNewFile();
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(snapFile));
startActivityForResult(intent, ACTIVITY_SNAP_REQUEST);
} catch (Exception e) {
}
去调用系统摄像头拍照
使用
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
System.out.println("snapFile.length() = "+snapFile.length());
}
查看拍摄照片大小
测试了很多部手机,只有华为c8650报错:
java.lang.RuntimeException: Unable to resume activity {test.samyou/test.sam.HelloanActivity}: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=20, result=-1, data=null} to activity {test.samyou/test.sam.HelloanActivity}: java.lang.NullPointerException
debug一晚上发现tmd这部手机不能使用ladscape布局,只要用portrait布局就没问题,只要改为ladscape布局就报错!