Поделиться через


Формат сигнала

[Функция, связанная с этой страницей 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, поэтому он не является надежным.)

Управление dv camcorder