ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

c-Directdraw:旋转视频流

2019-10-13 11:06:25  阅读:320  来源: 互联网

标签:c-3 c camera windows-mobile directdraw


问题

Windows Mobile / Directdraw: Rotate video stream

视频预览正在运行,我现在需要的只是一种旋转图像的方法.我认为处理此问题的唯一方法是编写基于CTransformFilter的自定义滤镜,它将为您旋转相机图像.如果您可以帮助我解决此问题,例如通过利用我有限的DirectDraw知识帮助我开发此过滤器,赏金属于您.

背景/上一个问题

我目前正在为移动设备(HTC HD2,Windows Mobile 6)开发应用程序.程序需要做的一件事是使用内置相机拍照.以前,我是使用Windows Mobile 6 SDK提供的CameraCaptureDialog进行此操作的,但是我们的客户希望使用一种更加用户友好的解决方案.

该想法是在单击控件时在控件中预览相机的视频流,并使用相机的照片功能拍摄高分辨率图片(> = 2兆像素).我们对该主题进行了一些研究,发现实现此目标的最佳方法似乎是使用Direct Draw.

缺点是我从未真正使用过任何本机Windows API,而且我的C语言还很糟糕.除此之外,我在某处读到HTC手机的Direct Draw支持特殊性很差,您将不得不使用未记录的本地HTC库调用来拍摄高质量的图片.

好消息是,某公司向我们提供了开发符合上述规格的控件的机会.他们估计大约需要10天,如果可以在合理的时间内自行开发此控件,则会引发讨论.

现在,我的工作是研究哪种替代方法更好.不用说,学习整个architecture并开发演示的时间就少得多,这使我想到了以下问题:

问题不再相关!

>你们中有没有从事过类似项目的经验?您有什么建议?
>是否有一个很好的Direct Draw源代码示例可以处理视频预览和图像捕获?

解决方法:

好吧,如果您查看EZRGB24示例,您将获得一个简单的视频转换滤波器的基础.

您需要对样本执行2件事才能使其执行您想要的操作.

1)您需要将x,y复制到y,x.
2)您需要告诉媒体样本,样本现在是“高度x宽度”,而不是“宽度x高度”.

请记住,最终图像的像素数将完全相同.

解决1比较简单.您可以通过执行“ x(y *宽度)”来计算像素的位置.因此,您将逐步遍历每个x和y,以这种方式计算位置,然后将其写入“ y(x *高度)”.这将转置图像.当然,如果没有步骤2,这将看起来完全错误.

要解决2,您需要获取输入样本的AM_MEDIA_TYPE.然后,您需要找出formatType是什么(可能是FormatType_VideoInfo或FormatType_VideoInfo2).因此,您可以将AM_MEDIA_TYPE的pbFormat成员强制转换为VIDEOINFOHEADER或VIDEOINFOHEADER2(取决于FormatType).现在,您需要将VIDEOINFOHEADER [2] :: bmiHeader.biWidth和biHeight分别设置为输入媒体样本的biHeight和biWidth.其他所有内容都应与输入AM_MEDIA_TYPE相同.

我希望能有所帮助.

标签:c-3,c,camera,windows-mobile,directdraw
来源: https://codeday.me/bug/20191013/1907484.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有