Reputation: 21
this is my code in qt
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QMessageBox>
#include <QPushButton>
#include <mfobjects.h>
#include <mfplay.h>
#include <mfidl.h>
#include <mfapi.h>
#include <mfobjects.h>
#include <mfidl.h>
#include <mferror.h>
#include <Windows.h>
#include <comdef.h>
#include <string>
#include <mfapi.h>
#include <mfobjects.h>
#include <QDebug>
#include <QCoreApplication>
#include <QSettings>
#include <QFileInfo>
// Registry utility function
QString GUIDToString(const GUID& guid) {
wchar_t guidString[39]; // 38 characters for GUID + null terminator
StringFromGUID2(guid, guidString, sizeof(guidString) / sizeof(wchar_t));
return QString::fromWCharArray(guidString);
}
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
setWindowTitle("Virtual Camera Example");
HRESULT hr = MFStartup(MF_VERSION);
if (FAILED(hr)) {
qDebug() << "Failed to initialize Media Foundation. HRESULT: " << QString::number(hr, 16);
return;
}
startVirtualCamera();
}
// Start virtual camera
void MainWindow::startVirtualCamera()
{
HRESULT hr = S_OK;
// Virtual Camera GUID
GUID CLSID_VCam = {0x3cad447d, 0xf283, 0x4af4, {0xa3, 0xb2, 0x6f, 0x53, 0x63, 0x30, 0x9f, 0x51}};
std::wstring cameraName = L"Vita";
// Create Virtual Camera
hr = MFCreateVirtualCamera(
MFVirtualCameraType_SoftwareCameraSource,
MFVirtualCameraLifetime_Session,
MFVirtualCameraAccess_CurrentUser,
cameraName.c_str(),
L"{3cad447d-f283-4af4-a3b2-6f5363309f51}",
nullptr,
0,
&_vcam);
qDebug() << "virtual cam clsid" <<GUIDToString(CLSID_VCam).toStdWString().c_str();
if (FAILED(hr))
{
QMessageBox::critical(this, "Error", "Failed to create virtual camera");
return;
}
hr = _vcam->Start(nullptr);
if (FAILED(hr))
{
qDebug() << "Error Failed to start virtual camera" << hr;
return;
}
QMessageBox::information(this, "Success", "Virtual Camera Started");
}
I have done this in Qt c++, this throws an error saying Error Failed to start virtual camera -2147221164, which is class not registered, how to register the class for this CLSID, I am new to media foundation api, any help is appreciated ;)
I also checked VCAMSAMPLE code but it also seems to do the same thing ( almost)
Upvotes: 2
Views: 48