- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 Color Converter DMO ( http://msdn.microsoft.com/en-us/library/windows/desktop/ff819079(v=vs.85).aspx ) 通过 Media Foundation 将 RBG24 转换为 YV12/NV12。我已经通过 CLSID_CColorConvertDMO 创建了一个 Color Converter DSP 实例,然后尝试设置所需的输入/输出类型,但即使使用 GetOutputAvailableType
和 返回的媒体类型,调用也总是返回 E_INVALIDARG >获取输入可用类型
。如果我将媒体类型设置为 NULL
然后我得到媒体类型无效的错误,这是有道理的。我看过来自 MSDN 的示例,人们在其中做同样的事情 - 枚举可用类型,然后将它们设置为输入类型 - 他们声称它有效,但我有点卡在 E_INVALIDARG 上。我知道如果没有代码示例很难回答这个问题,如果没有人有过类似的经历,我会尝试发布一个片段,但也许有人遇到过同样的问题?
最佳答案
此 DMO/DSP 是双接口(interface)的,既是具有 IMediaObject
的 DMO,又是具有 IMFTransform
的 MFT。这两个接口(interface)有很多共同点,下面是一个代码片段,用于测试 RGB24 到 YV12 转换的初始化:
#include "stdafx.h"
#include <dshow.h>
#include <dmo.h>
#include <wmcodecdsp.h>
#pragma comment(lib, "strmiids.lib")
#pragma comment(lib, "wmcodecdspuuid.lib")
int _tmain(int argc, _TCHAR* argv[])
{
ATLVERIFY(SUCCEEDED(CoInitialize(NULL)));
CComPtr<IMediaObject> pMediaObject;
ATLVERIFY(SUCCEEDED(pMediaObject.CoCreateInstance(CLSID_CColorConvertDMO)));
VIDEOINFOHEADER InputVideoInfoHeader;
ZeroMemory(&InputVideoInfoHeader, sizeof InputVideoInfoHeader);
InputVideoInfoHeader.bmiHeader.biSize = sizeof InputVideoInfoHeader.bmiHeader;
InputVideoInfoHeader.bmiHeader.biWidth = 1920;
InputVideoInfoHeader.bmiHeader.biHeight = 1080;
InputVideoInfoHeader.bmiHeader.biPlanes = 1;
InputVideoInfoHeader.bmiHeader.biBitCount = 24;
InputVideoInfoHeader.bmiHeader.biCompression = BI_RGB;
InputVideoInfoHeader.bmiHeader.biSizeImage = 1080 * (1920 * 3);
DMO_MEDIA_TYPE InputMediaType;
ZeroMemory(&InputMediaType, sizeof InputMediaType);
InputMediaType.majortype = MEDIATYPE_Video;
InputMediaType.subtype = MEDIASUBTYPE_RGB24;
InputMediaType.bFixedSizeSamples = TRUE;
InputMediaType.bTemporalCompression = FALSE;
InputMediaType.lSampleSize = InputVideoInfoHeader.bmiHeader.biSizeImage;
InputMediaType.formattype = FORMAT_VideoInfo;
InputMediaType.cbFormat = sizeof InputVideoInfoHeader;
InputMediaType.pbFormat = (BYTE*) &InputVideoInfoHeader;
const HRESULT nSetInputTypeResult = pMediaObject->SetInputType(0, &InputMediaType, 0);
_tprintf(_T("nSetInputTypeResult 0x%08x\n"), nSetInputTypeResult);
VIDEOINFOHEADER OutputVideoInfoHeader = InputVideoInfoHeader;
OutputVideoInfoHeader.bmiHeader.biBitCount = 12;
OutputVideoInfoHeader.bmiHeader.biCompression = MAKEFOURCC('Y', 'V', '1', '2');
OutputVideoInfoHeader.bmiHeader.biSizeImage = 1080 * 1920 * 12 / 8;
DMO_MEDIA_TYPE OutputMediaType = InputMediaType;
OutputMediaType.subtype = MEDIASUBTYPE_YV12;
OutputMediaType.lSampleSize = OutputVideoInfoHeader.bmiHeader.biSizeImage;
OutputMediaType.cbFormat = sizeof OutputVideoInfoHeader;
OutputMediaType.pbFormat = (BYTE*) &OutputVideoInfoHeader;
const HRESULT nSetOutputTypeResult = pMediaObject->SetOutputType(0, &OutputMediaType, 0);
_tprintf(_T("nSetOutputTypeResult 0x%08x\n"), nSetOutputTypeResult);
// TODO: ProcessInput, ProcessOutput
pMediaObject.Release();
CoUninitialize();
return 0;
}
这应该可以正常工作并打印出两个 S_OK
...
关于winapi - Color Converter DSP 的 IMFTransform 接口(interface)在 SetInputType/SetOutputType 上给出 E_INVALIDARG,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15341038/
所以我昨晚下载了 Asterisk 的源代码并尝试编译它。一切似乎都运行顺利,在安装过程中没有出现明显的错误。我通过网络将 2 个 IP 电话连接到服务器,它们注册得很好。之后我的问题来了: 在尝试从
我可以将 beagleboard 的 dsp 内核用于哪些应用程序?我可以在 OpenCV 中使用 DSP 加速进行背景减除算法吗? 最佳答案 您可以使用 DSP 进行各种计算。它是针对 DSP 应用
我正在实现“过滤器扫描”效果(我不知道它是否是这样调用的)。我所做的基本上是创建一个低通滤波器并使其沿某个频率范围“移动”。 为了计算给定时刻的滤波器截止频率,我使用用户提供的线性函数,它产生 0 到
我想为这个 DSP 处理器实现一些东西。 http://www.onsemi.com/pub_link/Collateral/BELASIGNA300-D.PDF这是它的数据表.. 这是我想要实现的函
这个问题是相关的: DSP : audio processing : squart or log to leverage fft? 我在其中迷失了选择正确的算法。 现在, 目标: 我想获取信号的所有频
我想学习录音,所以我编译了下面网上找到的代码,但是由于某些原因我打不开/dev/dsp。我尝试关闭 pulseaudio,但我一 killall 它就重新打开了。我真的不知道我在做什么;这周后半段我一
我想实现一些旨在在 beagleboard 上运行的图像处理算法.这些算法广泛使用卷积。我正在尝试为 2D 卷积找到一个好的 C 实现(可能使用快速傅里叶变换)。我还希望该算法能够在 beaglebo
最近我一直在检查 CMSIS DSP 复杂数学函数库,我看到了一些我无法完全理解的东西,因此我是关于 SO 的第一篇文章。 我无法理解的是 he11 复杂的点积函数如何产生正确的结果?该功能可在此处找
我会尝试在这里提出具体问题:- 我正在使用 Python 查看一些相对基础的 DSP,我想实现自动增益控制。除非我弄错了,否则这将采用(简化的)形式: 我不太关心 i/o 信号之间的相移,输入信号是由
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 4年前关闭。 Improve thi
我正在尝试实现 this extenstion的 Karplus-Strong 弹拨弦算法,但我不明白那里使用的符号。也许需要多年的学习,但也许不会——也许你可以告诉我。 我认为下面的方程是在频域之类
我正在寻找适用于 Android 的快速 DSP 库。看起来好像将 FFTW 或其他一些带有 JNI 的 native 库使用可能是我的最佳选择。我使用过 JTransforms,它似乎可以与用于 x
我在 iPhone 上玩卡拉 OK 应用程序并提出以下问题: 该应用程序允许其用户控制艺术家的音量;甚至静音。这怎么可能?调整艺术家声音/设置均衡器等是否意味着对所需频率进行一些转换?这里需要什么样的
我有一个关于在 FMOD 中停止 DSP 的问题。我有一个按钮,我想停止启用 DSP。 - (IBAction)myButton:(id)sender { FMOD_DSP_Reset(FMOD
我正在考虑将我自己的 3d 音频渲染系统编码作为一个教育项目,因为我确定 OpenAL 等技术过于面向设备并且缺乏我使用的功能。我希望它尽可能灵活。为此,我已经开始考虑我应该如何对其进行编码,以便我可
我对复值频谱执行 iFFT 并通过让第一个样本归零来更改相应的时域信号。最后,我通过 FFT 将其转换回频域。 我想知道这里使用两侧(对称)频谱或仅使用一侧频谱(仅正频率)之间的(物理)差异在哪里,因
我有一个内存很小的数据记录器,我想在固件中实现对过滤器的支持。 我可以轻松实现哪些类型的过滤器而不需要缓冲区或庞大的功能? 想到的是指数移动平均线,例如: sample = (alpha * new_
我正在查看相位累加器的代码,我一定是个傻瓜,因为我不明白。代码很简单: Every Clock Tick do: accum = accum + NCO_param; return a
如何将基带采样信号从实值样本转换为复值样本(实部、虚部),反之亦然。 我的样本是整数,我正在寻找一种快速(但准确)的转换算法。 C++ 示例代码(真实的,不复杂的;-)将非常受欢迎。 编辑:IPP 代
在 Linux 中播放或录制一些音频只是读取或写入/dev/dsp 但如何在 Windows 中执行相同的操作? (与 C) 最佳答案 没有静态设备名称,你应该使用waveOut*函数,here是使用
我是一名优秀的程序员,十分优秀!