Формат сигнала
[Функция, связанная с этой страницей DirectShow, является устаревшей функцией. Он был заменен MediaPlayer, IMFMediaEngine, и аудио/ видео захвата в Media Foundation. Эти функции оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует, чтобы новый код использовал MediaPlayer, IMFMediaEngine и аудио- и видеозахват в Media Foundation вместо DirectShow, когда это возможно. Корпорация Майкрософт предлагает переписать существующий код, использующий устаревшие API, чтобы по возможности использовать новые API.]
Формат сигнала dv camcorder может быть NTSC или PAL, стандартный или долгоиграющий.
Драйвер MSDV
Чтобы получить формат входного сигнала из драйвера MSDV, вызовите метод IAMExtTransport::GetTransportBasicParameters и передайте флаг ED_TRANSBASIC_INPUT_SIGNAL. Метод возвращает определенную константу, указывающую формат.
Следующий код проверяет формат сигнала и использует это значение для вычисления среднего времени на кадр. Переменная Mode получает константу формата сигнала.
LONG Mode, AvgTimePerFrame;
hr = MyDevCap.pTransport->GetTransportBasicParameters(
ED_TRANSBASIC_INPUT_SIGNAL, &Mode, NULL);
if (SUCCEEDED(hr))
{
switch (Mode)
{
case ED_TRANSBASIC_SIGNAL_525_60_SD: // NTSC SD
AvgTimePerFrame = 33; // 33 msec (29.97 FPS)
break;
case ED_TRANSBASIC_SIGNAL_525_60_SDL: // NTSC SDL
AvgTimePerFrame = 33;
break;
case ED_TRANSBASIC_SIGNAL_625_50_SD: // PAL SD
AvgTimePerFrame = 40; // 40 msec (25 FPS)
break;
case ED_TRANSBASIC_SIGNAL_625_50_SDL: // PAL SDL
AvgTimePerFrame = 40;
break;
default:
// Unknown type
AvgTimePerFrame = 33; // Default
break;
}
}
Чтобы получить формат выходного сигнала, вызовите тот же метод с флагом ED_TRANSBASIC_OUTPUT_SIGNAL.
Драйвер UVC
Чтобы получить формат входного или выходного сигнала от драйвера UVC, вызовите IAMStreamConfig::GetFormat в закреплении и проверьте блок формата видео. (Для устройств UVC код, показанный в предыдущем примере, обычно возвращает ED_TRANSBASIC_SIGNAL_UNKNOWN, поэтому он не является надежным.)
Связанные темы