- Posts: 8
- Joined: Wed Sep 02, 2020 5:22 pm
- Real Name: Brendan Bolles
It seems like in the ProcessClipMetal.mm example I should be able to replace the Metal setup stuff (everything between factory->CreateCodec() and codec->OpenClip()) with something like this:
But when I do this, all the frames that come out are black. What am I missing?
- Code: Select all
bool pipelineSet = false;
IBlackmagicRawPipelineIterator *pipelineIterator = nullptr;
result = factory->CreatePipelineIterator(blackmagicRawInteropOpenGL, &pipelineIterator);
do
{
BlackmagicRawInterop pipeline_interop = blackmagicRawInteropNone;
BlackmagicRawPipeline pipeline_pipeline = blackmagicRawPipelineCPU;
result = pipelineIterator->GetInterop(&pipeline_interop);
result = pipelineIterator->GetPipeline(&pipeline_pipeline);
IBlackmagicRawPipelineDeviceIterator *deviceIterator = nullptr;
result = factory->CreatePipelineDeviceIterator(pipeline_pipeline, pipeline_interop, &deviceIterator);
do
{
BlackmagicRawInterop device_interop = blackmagicRawInteropNone;
BlackmagicRawPipeline device_pipeline = blackmagicRawPipelineCPU;
result = deviceIterator->GetInterop(&device_interop);
result = deviceIterator->GetPipeline(&device_pipeline);
if(device_pipeline == blackmagicRawPipelineMetal)
{
IBlackmagicRawPipelineDevice *device = nullptr;
result = deviceIterator->CreateDevice(&device);
IBlackmagicRawConfiguration *config = nullptr;
result = codec->QueryInterface(IID_IBlackmagicRawConfiguration, (void **)&config);
result = config->SetFromDevice(device);
pipelineSet = true;
}
}while(deviceIterator->Next() == S_OK && !pipelineSet);
}while(pipelineIterator->Next() == S_OK && !pipelineSet);
But when I do this, all the frames that come out are black. What am I missing?