代码之家  ›  专栏  ›  技术社区  ›  xsl Fredrik Hedblad

Directdraw:旋转视频流

  •  1
  • xsl Fredrik Hedblad  · 技术社区  · 15 年前

    问题

    Windows Mobile / Directdraw: Rotate video stream

    视频预览正在工作,我现在只需要一种旋转图像的方法。我认为处理这个问题的唯一方法是基于 CTransformFilter 这将为您旋转相机图像。如果你能帮助我解决这个问题,例如,用我有限的DirectDraw知识帮助我开发这个过滤器,那么悬赏就是你的了。

    我目前正在为移动设备(HTC HD2、Windows mobile 6)开发一个应用程序。程序需要做的一件事是使用内置照相机拍照。以前我是用 CameraCaptureDialog

    其想法是在控件中预览相机的视频流,并拍摄高分辨率照片(>=单击控件时,使用相机的照片功能(200万像素)。我们对这个主题做了一些研究,发现实现这一点的最佳方法似乎是使用直接绘图。

    好消息是,一家公司向我们提供了开发符合上述规范的控件的机会。他们估计大约需要10天的时间,如果我们能在合理的时间内自行开发这种控制,这将导致讨论。

    我现在的工作是研究哪种选择更好。不用说,研究整个问题的时间要少得多 architecture 并开发一个演示,这将引导我回答以下问题:

    问题不再相关!

    • 你们中有没有人有类似项目的经验?你有什么建议?
    • 是否有一个好的直接绘制源代码示例,用于处理视频预览和图像捕获?
    2 回复  |  直到 7 年前
        1
  •  2
  •   Goz    15 年前

    如果你看一下EZRGB24示例,你会得到一个简单的视频转换过滤器的基础知识。

    有两件事你需要做的样品,让它做你想要的。

    1) 你需要把x,y复制到y,x。

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

    解1相对简单。您可以通过执行“x+(y*宽度)”来计算像素的位置。因此,你一步一步地计算每个x和y的位置,然后将其写入“y+(x*Height)”。这将转置图像。当然,如果没有步骤2,这看起来是完全错误的。

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

    我希望这有点帮助。

        2
  •  1
  •   Community CDub    7 年前

    question post (在上述问题中也提到)。本文介绍了SDK中CameraCapture示例的扩展。

    但是,不要有太高的期望。看来预览和拍摄的照片只能在小分辨率下工作。虽然DirectDraw有 describe 作为配置分辨率的一种方法,无法保证驱动程序会正确执行此操作。

    根据我的经验,你读到的是真的。唯一的方法是使用HTC驱动程序。所以,如果你不想为了一个可疑的结果而花费无穷无尽的时间在逆向工程中,那就让别人来帮你做这项工作吧。如果你想试一试,试试看 xda-developers forum .