Возникла проблема с использованием интерфейса IAMStreamConfig.
У меня есть следующий код для установки формата вывода:
private void SetFormat(IAMStreamConfig streamConfig, VideoCapabilities resolution = null)
{
int capabilitiesCount = 0, capabilitySize = 0;
AMMediaType newMediaType = null;
var caps = new VideoStreamConfigCaps();
streamConfig.GetNumberOfCapabilities(out capabilitiesCount, out capabilitySize);
for (int i = 0; i < capabilitiesCount; i++)
{
try
{
var vc = new VideoCapabilities(streamConfig, i);
if (resolution == vc || resolution == null)
{
if (streamConfig.GetStreamCaps(i, out newMediaType, caps) == 0)
break;
}
}
catch { }
}
if (newMediaType != null)
{
if (averageTimePerFrame >= 0)
{
unsafe
{
VideoInfoHeader* vih = (VideoInfoHeader*)newMediaType.FormatPtr;
vih->AverageTimePerFrame = averageTimePerFrame;
}
}
streamConfig.SetFormat(newMediaType);
newMediaType.Dispose();
newMediaType = null;
}
}
До вчерашнего дня у меня никогда не было проблем с каким-либо устройством, но вчера я проверил это с новым источником видео, Osprey 850e SDI, и я всегда получаю синий экран при попытке установить формат:
streamConfig.SetFormat(newMediaType)
Устанавливаемый формат: YUY2.
Кто-нибудь сталкивался с подобной проблемой или есть предложения?
Спасибо.
EDIT:
Ниже приведены данные о типе носителя:
Major Type: 73646976-0000-0010-8000-00aa00389b71 WMMEDIATYPE_Video
Sub Type: 59565955-0000-0010-8000-00aa00389b71 MEDIASUBTYPE_UYVY
Fixed Size Samples: true
Temporal Compression: false
Sample Size 691200
Format Type: 05589f80-c356-11ce-bf01-00aa0055595a WMFORMAT_VideoInfo
unkPtr: 0
Format Size: 88
FormatPtr: 111386040