Compartilhar via


Transições de estado

Para garantir a alocação ordenada de recursos, somente um subconjunto das possíveis transições de estado de streaming de kernel é permitido. A tabela a seguir lista as transições permitidas junto com as tarefas que um minidriver de classe Stream normalmente executa durante essas transições.

Transição Descrição

Parar para pausar

Alocar recursos. As SRBs de leitura são enfileiradas após a conclusão da transição para KSSTATE_PAUSE .

Pausar para executar

Inicie o streaming.

Executar para pausar

Pare o streaming. As SRBs de leitura pendentes permanecem na fila mantida pelo minidriver.

Pausar para parar

Desaloque os recursos e conclua todas as SRBs de leitura pendentes. As SRBs que não foram preenchidas com uma imagem são concluídas com comprimento zero no membro DataUsed da estrutura KSSTREAM_HEADER .

Observação : as transições podem circular várias vezes entre os estados KSSTATE_PAUSE e KSSTATE_RUN antes de retornar ao estado KSSTATE_STOP . Os minidrivers de captura de vídeo devem esperar transições como:

KSSTATE_STOP ->KSSTATE_ACQUIRE ->KSSTATE_PAUSE ->KSSTATE_RUN ->KSSTATE_PAUSE ->KSSTATE_RUN ->KSSTATE_PAUSE -> KSSTATE_STOP

Quando um fluxo está em um estado KSSTATE_STOP , o minidriver deve concluir imediatamente todas as SRBs de leitura de dados pendentes.

Como um aplicativo de modo de usuário pode terminar inesperadamente durante o streaming, todos os minidrivers da classe Stream devem aceitar e processar uma solicitação SRB_CLOSE_STREAM da interface da classe Stream a qualquer momento. Antes que a interface da classe Stream envie SRB_CLOSE_STREAM para um minidriver, ela cancela todos os buffers pendentes por meio da rotina HwCancelPacket do minidriver . Observe que o estado do fluxo não pode ser definido como KSSTATE_STOP antes que o aplicativo seja encerrado.

Não atualize os membros PictureNumber ou DropCount de KS_FRAME_INFO, KS_VBI_FRAME_INFO ou KSPROPERTY_DROPPEDFRAMES_CURRENT_S na transição de KSSTATE_PAUSE para KSSTATE_RUN ou KSSTATE_RUN para KSSTATE_PAUSE. Para obter mais informações, consulte Captura de vídeo.