首页 > 其他分享 >【小记】MSMF 框架开发 UVC 摄像头如何正确设置 MF_MT_SUBTYPE

【小记】MSMF 框架开发 UVC 摄像头如何正确设置 MF_MT_SUBTYPE

时间:2024-01-24 20:22:14浏览次数:29  
标签:MF SUBTYPE SetCurrentMediaType pType MT IMFMediaType

简单说一下:

IMFSourceReader 有两个可以获取 IMFMediaType 对象的接口,分别是 GetNativeMediaType 与 GetCurrentMediaType。 初始化时调用 GetCurrentMediaType 获得的 IMFMediaType 对象(此时为硬件默认情况下自动选择的对象)再进行修改是不能用于 SetCurrentMediaType 的,即便是 SetCurrentMediaType 返回 S_OK。 正确的做法是先使用 GetNativeMediaType 遍历硬件所支持的 IMFMediaType 中 MF_MT_SUBTYPE 类型 ,再 SetCurrentMediaType 相对应的 IMFMediaType 。    
    // IMFSourceReader* m_reader = 假设 IMFSourceReader 已经初始化并可用;
    DWORD dwMediaTypeIndex = 0;
    HRESULT hr = S_OK;
    while (hr != MF_E_NO_MORE_TYPES)
    {
        IMFMediaType* pType = nullptr;
        hr = m_reader->GetNativeMediaType((DWORD)MF_SOURCE_READER_FIRST_VIDEO_STREAM, dwMediaTypeIndex, &pType);
        if (hr == S_OK)
        {
            GUID subtype;
            pType->GetGUID(MF_MT_SUBTYPE, &subtype);
            if (IsEqualGUID(subtype, MFVideoFormat_YUY2)) // 假设需要将硬件输出设置为 YUY2
            {
                iRet = m_reader->SetCurrentMediaType((DWORD)MF_SOURCE_READER_FIRST_VIDEO_STREAM, NULL, pType);
                if (iRet != S_OK)
                {
                    pType->Release();
                    // 处理错误
                    break;
                }
                MFGetAttributeSize(pType, MF_MT_FRAME_SIZE, &m_width, &m_height);
                pType->Release();
                break;
            }
            pType->Release();
        }
        dwMediaTypeIndex++;
    }

 

 

标签:MF,SUBTYPE,SetCurrentMediaType,pType,MT,IMFMediaType
From: https://www.cnblogs.com/airchip/p/17985780

相关文章

  • MFC 简单的绘图用法
    ▲效果在OnDraw函数中://CMFCApplication1View绘图voidCMFCApplication1View::OnDraw(CDC*pDC){CMFCApplication1Doc*pDoc=GetDocument();ASSERT_VALID(pDoc);if(!pDoc)return;/*a)定义画家b)定义画笔(画刷)CPen,CBrush......
  • MFC 画线
    ▲连续划线//鼠标是否按下标志点位变量private://是否按下boolm_isPress;//存点数据CPointm_myPoint;消息:BEGIN_MESSAGE_MAP(CMFCApplication1View,CView) //标准打印命令 ON_COMMAND(ID_FILE_PRINT,&CView::OnFilePrint) ON_COMMAND(ID_......
  • MFC 简单的事件测试
    View的WM_LBUTTONDOWN事件消息。voidCMFCApplication1View::OnLButtonDown(UINTnFlags,CPointpoint){CStringstr;str.Format(TEXT("x=%d,y=%d"),point.x,point.y);MessageBox(str);CView::OnLButtonDown(nFlags,point);}View......
  • linux进阶之nmtui和nmcli配置网络
    CentOS7配置网络推荐使用NetworkManager服务(不推荐network服务)。图形化方式:nmtui或Applications->SystemTools->Settings->Network命令方式:->IPv4寻址方式 [X]Automaticallyconnect->默认->自动连接->ONBOOT=yes [X]Availabletoallusers->默认->所有用户均可使用......
  • MFC 简单的界面切换测试主窗体类似控件的方式嵌入其他窗体
    ▲类向导->MFC类创建两个子窗体。1。创建两个子窗体。2。属性设置:1)、“Style”选择“Child”;中文版“样式”选择“下层”。2)、“Border”为“None”;中文版“边框”选择“无”。3。主窗体中实例子窗体对象:声明:private:CSubForm1*m_CSubForm1;CSubForm2*m_CSu......
  • Microsoft 365 解决方案:Security Group与Conditional Access强强联手限制不同用户的MF
    51CTO博客链接:https://blog.51cto.com/u_13637423多重身份验证(MFA)为登录流程增加了一层保护。访问帐户或应用时,用户需要提供额外的身份验证,例如扫描指纹或输入手机收到的验证码,确保你用于高风险帐户的凭据可以防止网络钓鱼和渠道入侵。MicrosoftEntra中的MFA会要求使用以下......
  • MFC 基于对话框的程序如何屏蔽掉 ENTER 键和 ESC 键退出的情况
    重写PreTranslateMessage(MSG*pMsg)函数。protected: HICONm_hIcon; //生成的消息映射函数 virtualBOOLOnInitDialog(); afx_msgvoidOnSysCommand(UINTnID,LPARAMlParam); afx_msgvoidOnPaint(); afx_msgHCURSOROnQueryDragIcon();afx_msgBOOLPreTra......
  • 30V、单 N 沟道NTMFS4C908NAT3G、NTMFS4C910NAT3G功率 MOSFET
    NTMFS4C908N、NTMFS4C910NN沟道MOSFET是30V、单N沟道功率MOSFET,具有低RDS(on)值和低电容,可最大限度地降低导通和驱动器损耗。这些MOSFET采用8-SOFL封装尺寸,设计紧凑。MOSFET符合AEC-Q101标准并具有PPAP功能典型应用包括电池保护、电机控制、电源开关、开关电源、负载开关和电磁......
  • MFC OnPaint 绘制一行简单文字
    ▲绘制一行简单文字OnPaint()消息。voidCMFCApplication6Dlg::OnPaint(){CPaintDCcdc(this);/***OnPaint绘制简单文字*****/cdc.TextOutW(100,100,TEXT("你好,MFC!")); if(IsIconic()) { CPaintDCdc(this);//用于绘制的设备上下文 SendMessa......
  • vulnhub-symfonos(环境变量提权)
    环境准备:靶机-192.168.0.110攻击机-192.168.0.128演示:首先nmap探测网段。 打开网站发现为一张图片没别的内容使用smbclient探测445端口内容 smbclient-L192.168.0.110-L:显示服务器端所分享出来的所有资源发现存在helios用户,和anonymous,先访问下匿名用户资源s......