Formato de sinal

[O recurso associado a esta página, DirectShow, é um recurso herdado. Ele foi substituído por MediaPlayer, IMFMediaEngine e Captura de Áudio/Vídeo na Media Foundation. Esses recursos foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda fortemente que o novo código use MediaPlayer, IMFMediaEngine e Captura de Áudio/Vídeo no Media Foundation em vez de DirectShow, quando possível. A Microsoft sugere que o código existente que usa as APIs herdadas seja reescrito para usar as novas APIs, se possível.]

O formato de sinal de uma filmadora DV pode ser NTSC ou PAL, standard ou long-play.

MSDV Driver

Para obter o formato de sinal de entrada do driver MSDV, chame o método IAMExtTransport::GetTransportBasicParameters e passe o sinalizador ED_TRANSBASIC_INPUT_SIGNAL. O método retorna uma constante definida, indicando o formato.

O código a seguir verifica o formato de sinal e usa esse valor para calcular o tempo médio por quadro. A variável Mode recebe a constante de formato de sinal.

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;
    }
}

Para obter o formato de sinal de saída, chame o mesmo método com o sinalizador ED_TRANSBASIC_OUTPUT_SIGNAL.

UVC Driver

Para obter o formato de sinal de entrada ou saída do driver UVC, chame IAMStreamConfig::GetFormat no pino e examine o bloco de formato de vídeo. (Para dispositivos UVC, o código mostrado no exemplo anterior geralmente retorna ED_TRANSBASIC_SIGNAL_UNKNOWN, portanto, não é confiável.)

Controlando uma gravação de DV