Синий экран при использовании интерфейса IAMStreamConfig - PullRequest
0 голосов
/ 09 января 2019

Возникла проблема с использованием интерфейса 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...