Hi Cameron,
Thanks for your reply
Some of my questions are answered by dear Dave, but I'm so confused , Please Please answer these my questions and let me to understand the FILL/KEY :
1 - As shown in the table above, 'DeckLink Studio 4K' supports both internal and external keying , but it has only one output channel !!. How can it get separate Key and Fill signals while it has only one output channel?
2 - To get separate Key and Fill signals from a 'DeckLink HD Extreme 3D+' should I write bmdFormat8BitBGRA / bmdFormat8BitARGB Fill bytes on o/p A and Key bytes on o/p B like this :
(note: I found this code
here,but I want to implement it in c++)
- Code: Select all
FileStream fs = new FileStream(FilenameTGA, FileMode.Open, FileAccess.Read);
byte[] ibuffer = new byte[fs.Length];
int bytesread = fs.Read(ibuffer, 0, ibuffer.Length);
index = 0;
// Verify image is 1280x720 and correct TGA format from header/footer not shown
for (uint y = 0; y < 720; y++)
{
for (uint x = 0; x < 1280; x++)
{
pixelindex = (((y * 1280) + x) * 4);
pixel[0] = (byte) ibuffer[pixelindex + 18]; // Blue
pixel[1] = (byte) ibuffer[pixelindex + 19]; // Green
pixel[2] = (byte) ibuffer[pixelindex + 20]; // Red
pixel[3] = (byte) ibuffer[pixelindex + 21]; // Alpha
Marshal.WriteInt32(fillbuffer, index * 4, (Int32)BitConverter.ToInt32(pixel, 0));
// use input's Alpha to generate grey scale
pixel[0] = pixel[3]; // Blue
pixel[1] = pixel[3]; // Green
pixel[2] = pixel[3]; // Red
pixel[3] = (byte) 0xff; // Solid key
Marshal.WriteInt32(keybuffer, index * 4, (Int32)BitConverter.ToInt32(pixel, 0));
index++;
}
}
,Or should I write Fill bytes on o/p A only and the card automatically gives the key signal on o/p B?
3 - Can I use IDeckLinkOutput::ScheduleVideoFrame method instead of IDeckLinkOutput::ScheduleVideoFrame to get fill-key output?