Retornos de SDK chamada do produtor - Amazon Kinesis Video Streams

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Retornos de SDK chamada do produtor

As classes e métodos do Amazon Kinesis Video SDK Streams Producer não mantêm seus próprios processos. Em vez disso, eles usam as chamadas e eventos da função de entrada para programar retornos de chamada para se comunicar com o aplicativo.

Há dois padrões de retorno de chamada que o aplicativo pode usar para interagir com oSDK:

  • CallbackProvider— Esse objeto expõe cada retorno de chamada do componente code (PIC) independente da plataforma para o aplicativo. Esse padrão permite funcionalidade completa, mas também significa que a implementação deve lidar com todos os API métodos e assinaturas públicos na camada C++.

  • StreamCallbackProvidere ClientCallbackProvider — Esses objetos expõem os retornos de chamada específicos do fluxo e do cliente, e a camada C++ do expõe o restante dos retornos SDK de chamada. Esse é o padrão de retorno de chamada preferido para interagir com o produtor. SDK

O diagrama a seguir ilustra o modelo de objeto dos objetos de retorno de chamada:

Diagrama mostrando a interação de produtores e consumidores no Kinesis Video Streams.

No diagrama anterior, DefaultCallbackProvider deriva de CallbackProvider (que expõe todos os retornos de chamada noPIC) e contém e. StreamCallbackProvider ClientCallbackProvider

ClientCallbackProvider

O objeto ClientCallbackProvider expõe as funções de retorno no nível do cliente. Os detalhes das funções são descritos na seção ClientCallbacks estrutura.

Métodos de retorno de chamada:

  • getClientReadyCallback— Relata um estado pronto para o cliente.

  • getStorageOverflowPressureCallback— Relata sobrecarga ou pressão de armazenamento. Esse retorno de chamada é feito quando a utilização do armazenamento fica abaixo do valor de STORAGE_PRESSURE_NOTIFICATION_THRESHOLD, que é de 5% do tamanho total do armazenamento. Para obter mais informações, consulte StorageInfo.

StreamCallbackProvider

O objeto StreamCallbackProvider expõe as funções de retorno no nível do streaming.

Métodos de retorno de chamada:

  • getDroppedFragmentReportCallback: relata um fragmento descartado.

  • getDroppedFrameReportCallback— Relata um quadro perdido.

  • getFragmentAckReceivedCallback— Relata que um fragmento ACK foi recebido para o stream.

  • getStreamClosedCallback— Relata uma condição de riacho fechado.

  • getStreamConnectionStaleCallback— Relata uma condição de conexão obsoleta. Nessa condição, o produtor está enviando dados para o serviço, mas não está recebendo confirmações.

  • getStreamDataAvailableCallback— Relata que os dados estão disponíveis no stream.

  • getStreamErrorReportCallback— Relata uma condição de erro de transmissão.

  • getStreamLatencyPressureCallback— Relata uma condição de latência do stream, que ocorre quando o tamanho do buffer acumulado é maior que o max_latency valor. Para obter mais informações, consulte StreamDefinition/StreamInfo.

  • getStreamReadyCallback: —Relata uma condição de prontidão do fluxo.

  • getStreamUnderflowReportCallback— Relata uma condição de subfluxo do riacho. Essa função não é usada atualmente e está reservada para uso futuro.

Para obter o código-fonte deStreamCallbackProvider, consulte StreamCallbackProvider.h.

ClientCallbacks estrutura

A ClientCallbacks estrutura contém os pontos de entrada da função de retorno de chamada que PIC ela chama quando ocorrem eventos específicos. A estrutura também contém informações sobre a versão no campo CALLBACKS_CURRENT_VERSION e um campo customData de dados definidos pelo usuário que é retornado com funções de retorno de chamada individuais.

O aplicativo cliente pode usar um ponteiro this para o campo custom_data para mapear as funções de membro para as funções ClientCallback estáticas em tempo de execução, conforme mostrado no seguinte código de exemplo:

STATUS TestStreamCallbackProvider::streamClosedHandler(UINT64 custom_data, STREAM_HANDLE stream_handle, UINT64 stream_upload_handle) { LOG_INFO("Reporting stream stopped."); TestStreamCallbackProvider* streamCallbackProvider = reinterpret_cast<TestStreamCallbackProvider*> (custom_data); streamCallbackProvider->streamClosedHandler(...);
Eventos
Função Descrição Tipo
CreateDeviceFunc Não implementado no back-end atualmente. Essa chamada falha quando chamada do Java ou do C++. Outros clientes executam inicialização específica à plataforma. Backend API
CreateStreamFunc Chamada quando o streaming é criado. Backend API
DescribeStreamFunc Chamada quando DescribeStream é chamado. Backend API
GetStreamingEndpointFunc Chamada quando GetStreamingEndpoint é chamado. Backend API
GetStreamingTokenFunc Chamada quando GetStreamingToken é chamado. Backend API
PutStreamFunc Chamada quando PutStream é chamado. Backend API
TagResourceFunc Chamada quando TagResource é chamado. Backend API
     
CreateMutexFunc Cria um mutex de sincronização. Sincronização
FreeMutexFunc Libera o mutex. Sincronização
LockMutexFunc Bloqueia o mutex de sincronização. Sincronização
TryLockMutexFunc Tenta bloquear o mutex. Não implementado no momento. Sincronização
UnlockMutexFunc Desbloqueia o mutex. Sincronização
     
ClientReadyFunc Chamada quando o cliente entra em estado de pronto. Notificação
DroppedFrameReportFunc Relata quando um quadro é descartado. Notificação
DroppedFragmentReportFunc Relata quando um fragmento é descartado. Essa função não é usada atualmente e está reservada para uso futuro. Notificação
FragmentAckReceivedFunc Chamado quando um fragmento ACK (armazenamento em buffer, recebido, persistente e erro) é recebido. Notificação
StorageOverflowPressureFunc Chamada quando a utilização do armazenamento fica abaixo do valor de STORAGE_PRESSURE_NOTIFICATION_THRESHOLD, que é definido como 5% do tamanho total do armazenamento. Notificação
StreamClosedFunc Chamada quando os últimos bits dos quadros restantes são transmitidos. Notificação
StreamConnectionStaleFunc Chamada quando o streaming entra em um estado de conexão obsoleta. Nessa condição, o produtor está enviando dados ao serviço, mas não está recebendo confirmações. Notificação
StreamDataAvailableFunc Chamada quando os dados do streaming estão disponíveis. Notificação
StreamErrorReportFunc Chamada quando ocorre um erro de streaming. O fecha PIC automaticamente o fluxo sob essa condição. Notificação
StreamLatencyPressureFunc Chamada quando o streaming entra em uma condição de latência, que é quando o tamanho do buffer acumulado é maior que o valor de max_latency. Para obter mais informações, consulte StreamDefinition/StreamInfo. Notificação
StreamReadyFunc Chamada quando o streaming entra em estado de pronto. Notificação
StreamUnderflowReportFunc Essa função não é usada atualmente e está reservada para uso futuro. Notificação
     
DeviceCertToTokenFunc Retorna o certificado da conexão como um token. Integração de plataformas
GetCurrentTimeFunc Retorna a hora atual. Integração de plataformas
GetDeviceCertificateFunc Retorna o certificado do dispositivo. Essa função não é usada atualmente e está reservada para uso futuro. Integração de plataformas
GetDeviceFingerprintFunc Retorna a impressão digital do dispositivo. Essa função não é usada atualmente e está reservada para uso futuro. Integração de plataformas
GetRandomNumberFunc Retorna um número aleatório entre 0 e RAND_MAX. Integração de plataformas
GetSecurityTokenFunc Retorna o token de segurança que é passado para as funções que se comunicam com o back-endAPI. A implementação pode especificar os AccessKeyId, SecretKeyId e o token de sessão serializados. Integração de plataformas
LogPrintFunc Registra em log uma linha de texto com a tag e o nível do log. Para obter mais informações, consulte PlatformUtils.h. Integração de plataformas

Para as funções de integração de plataformas na tabela anterior, o último parâmetro é uma estrutura ServiceCallContext que tem os seguintes campos:

  • version: a versão do struct.

  • callAfter: um horário absoluto após o qual chamar a função.

  • timeout: o tempo limite da operação em 100 unidades de nanossegundo.

  • customData: um valor definido pelo usuário a ser passado de volta para o cliente.

  • pAuthInfo: as credenciais para a chamada. Para obter mais informações, consulte a estrutura (__AuthInfo) a seguir.

As informações de autorização são fornecidas usando a estrutura __AuthInfo, que podem ser credenciais serializadas ou um token de autenticação específico ao provedor. Esta estrutura tem os seguintes campos:

  • version: a versão da estrutura de __AuthInfo.

  • type: um valor de AUTH_INFO_TYPE que define o tipo de credencial (certificado ou token de segurança).

  • data: uma matriz de bytes que contém as informações de autenticação.

  • size: o tamanho do parâmetro data.

  • expiration: a expiração das credenciais em 100 unidades de nanossegundo.

Implementações de retorno de chamada para repetir o streaming

O Kinesis Video Producer SDK fornece o status do streaming por meio de funções de retorno de chamada. Recomendamos que você implemente os seguintes mecanismos de retorno de chamada para se recuperar de quaisquer problemas momentâneos de rede encontrados durante o streaming.

  • Retorno de chamada de pressão de latência de fluxo - esse mecanismo de retorno de chamada é iniciado quando ele SDK encontra uma condição de latência de fluxo. Isso acontece quando o tamanho do buffer acumulado é maior que o LATENCY valor MAX _. Quando o stream é criado, o aplicativo de streaming define MAX _ LATENCY como o valor padrão de 60 segundos. A implementação típica para esse retorno de chamada é a redefinição da conexão. Você pode usar o exemplo de implementação em https://github.com/awslabs/amazon-kinesis-video-streams- producer-sdk-cpp /blob/master/ kinesis-video-c-producer /src/source/ StreamLatencyStateMachine .c conforme necessário. Observe que não há opção de armazenar os quadros não entregues devido à interrupção da rede em um armazenamento secundário para preenchimento.

  • Retorno de chamada de inatividade do stream — esse retorno de chamada é iniciado quando o produtor pode enviar dados para o serviço Amazon Kinesis Data Streams (uplink), mas não consegue recuperar as confirmações (armazenadas em buffer) a tempo ACK (o padrão é 60 segundos). Dependendo das configurações de rede, o retorno de chamada de pressão de latência do fluxo ou o retorno de chamada de inatividade do fluxo, ou ambos, podem ser iniciados. Semelhante à implementação de nova tentativa do retorno de chamada de pressão de latência do streaming, a implementação típica é a redefinição da conexão e o início de uma nova conexão para streaming. Você pode usar a implementação de amostra em https://github.com/awslabs/amazon-kinesis-video-streamsConnectionStaleStateMachine-producer-c/blob/master/src/source/ .c conforme necessário.

  • Retorno de chamada de erro de transmissão - esse retorno de chamada é iniciado quando ele SDK encontra um tempo limite na conexão de rede ou outros erros durante a chamada para as chamadas de serviço. KVS API

  • Retorno de chamada de quadro perdido - esse retorno de chamada é iniciado quando o tamanho do armazenamento está cheio devido à baixa velocidade da rede ou a um erro de transmissão. Se a velocidade da rede resultar em queda de quadros, você poderá aumentar o tamanho do armazenamento, reduzir o tamanho do quadro do vídeo ou a taxa de quadros para corresponder à velocidade da rede.