Skip to main content
AOQ SDK overview

Referência da API C++ do SDK Cliente AOQ para Linux

Este tópico descreve as APIs C++, os callbacks e os tipos de dados do SDK Cliente AOQ para Linux.

Índice de APIs

Ciclo de vida do engine

API

Descrição

createEngine

Crie a instância do engine (método estático, singleton)

destroy

Destrói a instância do engine (método estático)

getVersion

Obtém a versão do SDK (método estático)

connect

Conecta ao servidor relay

disconnect

Desconecta do servidor

Gerenciamento de dispositivos de áudio

API

Descrição

startAudioCapture

Abre o dispositivo de captura de áudio (implementação vazia no Linux)

stopAudioCapture

Fecha o dispositivo de captura de áudio (sem efeito no Linux)

muteAudioCapture

Silencia ou reativa a captura de áudio

startAudioPlayer

Inicia a renderização de áudio (implementação vazia no Linux)

stopAudioPlayer

Interrompe a renderização de áudio (sem efeito no Linux)

pauseAudioPlayer

Pausa a renderização de áudio com suporte a fade-out

resumeAudioPlayer

Retoma a renderização de áudio com suporte a fade-in

interruptAudioPlayer

Interrompe a reprodução de áudio atual

Configuração de codec de áudio

API

Descrição

setAudioEncoderConfig

Defina os parâmetros de codificação de áudio

setAudioDecoderConfig

Defina os parâmetros de decodificação de áudio

Gerenciamento de dispositivos de vídeo

API

Descrição

startVideoCapture

Abre o dispositivo de captura de vídeo (Linux suporta apenas o modo de captura externa)

stopVideoCapture

Fecha o dispositivo de captura de vídeo

setLocalView

Defina ou remova a janela de renderização de vídeo local (sem implementação de renderização no Linux)

setRemoteView

Defina ou remova a janela de renderização de vídeo remoto (sem implementação de renderização no Linux)

Codec de vídeo e entrada externa

API

Descrição

setVideoEncoderConfig

Defina os parâmetros de codificação de vídeo

setVideoDecoderConfig

Defina os parâmetros de decodificação de vídeo (proposta de codec no lado da assinatura)

pushExternalVideoCapturedFrame

Envia um frame de vídeo capturado externamente

pushExternalVideoEncodedFrame

Envia um frame de vídeo codificado externamente

Controle de stream de mídia

API

Descrição

enableSendMediaStream

Ative ou desative o envio de uma stream de mídia local

Reprodução de arquivos de áudio

API

Descrição

startAudioFile

Inicia a reprodução de um arquivo de áudio local na stream de publicação

stopAudioFile

Interrompe a reprodução do arquivo de áudio

pauseAudioFile

Pausa a reprodução do arquivo de áudio

resumeAudioFile

Retoma a reprodução do arquivo de áudio

getAudioFileDuration

Consulta a duração total do arquivo de áudio

getAudioFileCurrentPosition

Consulta a posição atual de reprodução do arquivo de áudio

setAudioFilePositionMillis

Defina a posição de reprodução do arquivo de áudio (seek)

setAudioFileVolume

Defina o volume do arquivo de áudio

getAudioFileVolume

Consulta o volume atual do arquivo de áudio

Streams de áudio externas

API

Descrição

addAudioExternalStream

Adiciona uma stream de áudio externa

pushAudioExternalStreamData

Alimenta dados PCM de áudio externo

setAudioExternalStreamVolume

Defina o volume de uma stream de áudio externa

getAudioExternalStreamVolume

Consulta o volume de uma stream de áudio externa

clearAudioExternalStreamBuffer

Limpa o buffer de uma stream de áudio externa

removeAudioExternalStream

Remove uma stream de áudio externa

Mensagens em tempo real

API

Descrição

sendDataMsg

Envia uma mensagem de dados em tempo real

Callbacks de frames de áudio

API

Descrição

setAudioFrameObserver

Registra o listener de dados de frames de áudio (virtual puro)

enableAudioFrameObserver

Ative ou desative o callback de frames de áudio em uma posição especificada (virtual puro)

Indicação de volume local

API

Descrição

enableLocalAudioVolumeIndication

Ative ou desative o callback de indicação de volume de captura local

Callbacks de frames de vídeo

API

Descrição

setVideoFrameObserver

Registra o listener de dados de frames de vídeo (virtual puro)

enableVideoFrameObserver

Ative ou desative o callback de frames de vídeo em uma posição especificada (virtual puro)

Callbacks do AoqEngineEventListener

Callback

Descrição

onError

Callback de erro do engine

onWarning

Callback de aviso do engine

onConnectionStatusChange

Callback de alteração de status de conexão

onStats

Callback de estatísticas do engine

onAudioDeviceStateChanged

Callback de alteração de status operacional do dispositivo de áudio

onAudioDeviceRouteChanged

Callback de alteração de rota de saída de áudio (não acionado no Linux)

onAudioFileState

Callback de status de reprodução de arquivo de áudio

onLocalAudioVolumeIndication

Callback de indicação de volume de captura local

onVideoDeviceStateChanged

Callback de alteração de status operacional do dispositivo de vídeo

onDataMsg

Callback para mensagem de dados em tempo real recebida

Interfaces de listener de dados de frame

API

Descrição

IAudioFrameObserver

Interface para escuta de dados de frames de áudio (quatro callbacks virtuais puros)

IVideoFrameObserver

Interface para escuta de dados de frames de vídeo (três callbacks virtuais puros)

Detalhes das APIs

Ciclo de vida do engine

createEngine

Crie a instância do engine. O SDK mantém o engine como um singleton global; portanto, chamar este método novamente retorna a instância existente.
static AoqClientEngine* createEngine(const AoqCreateConfig& config,
                                    AoqEngineEventListener* listener);

Parâmetros

Tipo

Descrição

config

AoqCreateConfig

Configuração de criação do engine

listener

AoqEngineEventListener\*

Listener de callback de eventos do engine, implementado pelo chamador via herança

Retorno: Um ponteiro para a instância do engine. Em caso de falha, o retorno é nullptr. O ciclo de vida do listener deve exceder o do engine.

destroy

Destrói a instância do engine e libera todos os recursos.
static int destroy();
Retorno: 0 indica sucesso; um valor diferente de 0 indica falha.

getVersion

Obtém a versão atual do SDK.
static const char* getVersion();
Retorno: A string de versão, mantida pelo SDK.

connect

Conecta ao servidor relay. O servidor de aplicação obtém parâmetros temporários de conexão AOQ com base no protocolo em uso e os envia ao cliente. Para mais informações, consulte Token authentication.
virtual int connect(const AoqConnectConfig& config);

Parâmetros

Tipo

Descrição

config

AoqConnectConfig

Configuração de conexão que inclui o token, SID, o array de pontos de acesso relay e os arrays de tracks de publicação e assinatura

Retorno: 0 indica sucesso e execução assíncrona da operação; valores diferentes de 0 indicam falha. O resultado da conexão é notificado por onConnectionStatusChange.
relayEndpoints / publishTracks / subscribeTracks são estruturas do tipo "ponteiro de array estilo C + comprimento". O chamador mantém a memória, que precisa ser válida apenas durante a chamada de connect.

disconnect

Desconecta do servidor e libera os recursos associados à conexão.
virtual int disconnect();
Retorno: 0 indica sucesso; um valor diferente de 0 indica falha.

Gerenciamento de dispositivos de áudio

virtual int startAudioCapture(const AoqAudioCaptureConfig& config);
virtual int stopAudioCapture();
virtual int muteAudioCapture(bool mute);
virtual int startAudioPlayer(const AoqAudioPlaybackConfig& config);
virtual int stopAudioPlayer();
virtual int pauseAudioPlayer(int fadeMs);
virtual int resumeAudioPlayer(int fadeMs);
virtual int interruptAudioPlayer(AoqTrackType trackType, int fadeMs);

Parâmetros

Tipo

Descrição

config

AoqAudioCaptureConfig / AoqAudioPlaybackConfig

Configuração de captura e reprodução

mute

bool

true silencia; false reativa o som

fadeMs

int

Duração do fade-out ou fade-in, em milissegundos. 0 indica execução imediata.

trackType

AoqTrackType

Tipo de track

Restrição importante no Linux: startAudioCapture / startAudioPlayer possuem implementações vazias na compilação para Linux (retornam 0 diretamente e não abrem nenhum dispositivo de placa de som). Além disso, stopAudioCapture / stopAudioPlayer não têm efeito real porque o estado interno não é definido. No Linux, utilize streams de áudio externas (2.8) para entrada de áudio e use callbacks de frames de áudio (2.10) para reproduzir a saída de áudio por conta própria. Para mais informações, consulte 4,3.

Configuração de codec de áudio

virtual int setAudioEncoderConfig(const AoqAudioCodecConfig& config);
virtual int setAudioDecoderConfig(const AoqAudioCodecConfig& config);
Recomendamos chamar este método antes de connect(). Uma combinação inválida de taxa de amostragem e modo aciona o callback onError com AoqECParamInvalid durante a conexão.

Gerenciamento de dispositivos de vídeo

virtual int startVideoCapture(const AoqVideoCaptureConfig& config);
virtual int stopVideoCapture();
virtual int setLocalView(AoqTrackType trackType, const AoqVideoCanvas& canvas);
virtual int setRemoteView(AoqTrackType trackType, const AoqVideoCanvas& canvas);

Parâmetros

Tipo

Descrição

config

AoqVideoCaptureConfig

Configuração de captura de vídeo

trackType

AoqTrackType

Tipo de track de vídeo

canvas

AoqVideoCanvas

Canvas de renderização. Se canvas.view == nullptr, a vinculação é removida.

Restrição importante no Linux: A captura de câmera no Linux é uma implementação de espaço reservado e não produz frames. Use startVideoCapture({.isExternal = true}) + pushExternalVideoCapturedFrame para entregar frames. setLocalView / setRemoteView não possuem backend de renderização no Linux (AoqVideoCanvas.view suporta apenas Apple NSView* / Windows HWND / views de renderização Android). Para pré-visualização, faça a renderização por conta própria através do callback de frames de vídeo (2.12). Para mais informações, consulte 4,3.

Codec de vídeo e entrada externa

virtual int setVideoEncoderConfig(const AoqVideoCodecConfig& config);
virtual int setVideoDecoderConfig(const AoqVideoCodecConfig& config);
virtual int pushExternalVideoCapturedFrame(AoqTrackType trackType, const AoqVideoFrame& frame);
virtual int pushExternalVideoEncodedFrame(AoqTrackType trackType, const AoqVideoEncodedFrame& frame);

Parâmetros

Tipo

Descrição

config

AoqVideoCodecConfig

Configuração de codec roteada com base em config.trackType

trackType

AoqTrackType

Destino do roteamento. Defina como AoqTrackTypeVideo.

frame

AoqVideoFrame / AoqVideoEncodedFrame

Dados de frame bruto ou codificado

Observações:
  • setVideoDecoderConfig é uma proposta de codec para o lado da assinatura e deve ser chamado antes de connect. Durante a decodificação, apenas trackType/codecType/width/height/fps/bitrate entram em vigor.
  • pushExternalVideoCapturedFrame requer startVideoCapture(isExternal=true) previamente. Retorna AoqECVideoExternalCaptureNotEnabled(211) quando a captura externa não foi iniciada, AoqECParamInvalid quando o formato não é suportado e AoqECVideoExternalBufferFull(210) quando o buffer está cheio.
  • pushExternalVideoEncodedFrame requer setVideoEncoderConfig(isExternal=true) previamente. O SDK empacota e envia o frame diretamente sem recodificação. Atualmente, apenas JPEG é suportado.
  • Quando frame.timeStamp for 0, o SDK o preenche com a hora local.

Controle de stream de mídia

virtual int enableSendMediaStream(AoqTrackType trackType, bool enable);
Especifica se deve enviar uma stream de mídia local específica. trackType pode ser AoqTrackTypeAudio ou AoqTrackTypeVideo. Um valor de retorno de 0 indica que a chamada foi despachada e executa assincronamente. Recomendamos desativar o envio após a inicialização e ativá-lo somente depois que onConnectionStatusChange reportar AoqConnectionStatusConnected.

Reprodução de arquivos de áudio

virtual int startAudioFile(const char* fileId, const AoqAudioFileMixConfig& config);
virtual int stopAudioFile(const char* fileId);
virtual int pauseAudioFile(const char* fileId);
virtual int resumeAudioFile(const char* fileId);
virtual int64_t getAudioFileDuration(const char* fileId);
virtual int64_t getAudioFileCurrentPosition(const char* fileId);
virtual int setAudioFilePositionMillis(const char* fileId, int64_t positionMillis);
virtual int setAudioFileVolume(const char* fileId, AoqAudioStreamDirection type, int volume);
virtual int getAudioFileVolume(const char* fileId, AoqAudioStreamDirection type);

Parâmetros

Tipo

Descrição

fileId

const char\*

ID do arquivo de áudio. A camada de negócios deve garantir unicidade global.

config

AoqAudioFileMixConfig

Configuração de mixagem de arquivos

positionMillis

int64_t

Posição alvo de reprodução, em milissegundos

type

AoqAudioStreamDirection

Volume de publicação ou volume de reprodução local

volume

int

Volume. Valores válidos: 0 a 100.

Descrição do valor de retorno:
  • getAudioFileDuration / getAudioFileCurrentPosition: Um valor >=0 representa o valor em milissegundos; um valor <0 indica falha, e seu valor absoluto é -AoqErrorCode.
  • getAudioFileVolume: Um valor de 0-100 representa o volume; um valor <0 indica falha, e seu valor absoluto é -AoqErrorCode.
Alterações no estado de reprodução são reportadas através do callback onAudioFileState. A mixagem de arquivos utiliza o caminho de publicação e não depende da placa de som local. Portanto, no Linux, você pode usá-la para enviar um arquivo local como fonte de áudio.

Streams de áudio externas

virtual int addAudioExternalStream(const char* streamId, const AoqAudioExternalStreamConfig& config);
virtual int pushAudioExternalStreamData(const char* streamId, AoqAudioFrameData& data);
virtual int setAudioExternalStreamVolume(const char* streamId, AoqAudioStreamDirection type, int vol);
virtual int getAudioExternalStreamVolume(const char* streamId, AoqAudioStreamDirection type);
virtual void clearAudioExternalStreamBuffer(const char* streamId, int fadeoutMs);
virtual int removeAudioExternalStream(const char* streamId);

Parâmetros

Tipo

Descrição

streamId

const char\*

ID da stream de áudio externa. A camada de negócios deve garantir unicidade global.

config

AoqAudioExternalStreamConfig

Configuração da stream de áudio externa

data

AoqAudioFrameData

Dados brutos de áudio externo (PCM), como referência não constante

type

AoqAudioStreamDirection

Volume de publicação ou volume de reprodução local

vol

int

Volume. Valores válidos: 0 a 100.

fadeoutMs

int

Duração do fade-out. -1 usa o fade-out padrão do SDK, 0 limpa o buffer sem fade-out, e um valor maior que 0 mantém a duração especificada de fade-out em milissegundos.

Observações:
  • Quando pushAudioExternalStreamData retorna AoqECAudioExternalBufferFull(110), o buffer interno do SDK está cheio. Recomendamos aguardar 20 ms e então enviar o frame de dados atual novamente.
  • Melhor prática: Em cenários de captura em tempo real, envie 10 ms de dados por vez sempre que houver dados disponíveis. Em cenários de fonte de arquivo, envie 40 ms de dados por vez em intervalos de 30 ms e trate o valor de retorno AoqECAudioExternalBufferFull.
  • getAudioExternalStreamVolume: Um valor de 0-100 representa o volume; um valor <0 indica falha, e seu valor absoluto é -AoqErrorCode.
  • clearAudioExternalStreamBuffer retorna void e não possui valor de retorno.
  • data.pushSequence é usado para a notificação de conclusão de consumo do SDK (rodada de entrada PCM).
    Não há dispositivo de captura real no Linux. Este grupo de APIs é o caminho principal para o uplink de áudio.

Mensagens em tempo real

virtual int sendDataMsg(const AoqDataMsg& msg);
Envia uma mensagem de dados em tempo real. msg.data aponta para memória mantida pelo chamador e precisa ser válida apenas durante a chamada. Mensagens do par são reportadas através do callback onDataMsg.

Callbacks de frames de áudio

virtual int setAudioFrameObserver(IAudioFrameObserver* observer) = 0;
virtual int enableAudioFrameObserver(bool enabled, AoqAudioSource audioSource,
                                     const AoqAudioObserverConfig& config) = 0;

Parâmetros

Tipo

Descrição

observer

IAudioFrameObserver\*

Instância do listener. Passe nullptr para interromper os callbacks.

enabled

bool

Especifica se deve ativar callbacks de dados nesta posição

audioSource

AoqAudioSource

Posição da fonte de dados de áudio bruto

config

AoqAudioObserverConfig

Taxa de amostragem do callback, número de canais e modo de leitura-escrita

Uso: Primeiro, chame setAudioFrameObserver(observer) para registrar o listener. Em seguida, chame enableAudioFrameObserver para cada posição necessária. O ciclo de vida do observer deve cobrir todo o período de callback. Libere o observer somente após cancelar o registro. Suporte ao modo de leitura-escrita (consulte a declaração IAudioFrameObserver): onCapturedAudioFrame / onProcessCapturedAudioFrame / onPlaybackAudioFrame suportam modo de leitura-escrita, enquanto onPublishAudioFrame suporta apenas modo somente leitura.
No Linux, setAudioFrameObserver conclui o registro através de despacho assíncrono (PostTask para a thread de controle), então o callback pode entrar em vigor logo após o retorno da chamada. Antes de liberar o observer, deixe um intervalo de segurança suficiente ou mantenha o objeto ativo.

Indicação de volume local

virtual int enableLocalAudioVolumeIndication(const AoqAudioVolumeIndicationConfig& config);
Ative ou desative a indicação de volume de captura local. Se config.interval <= 0, o callback é desativado. Após a ativação, onLocalAudioVolumeIndication é acionado no intervalo especificado por config.interval. Você deve chamar este método após startAudioCapture para obter dados de volume.
Não há captura de dispositivo no Linux. Os dados de volume neste callback vêm do caminho de mixagem de publicação/reprodução (mixer).

Callbacks de frames de vídeo

virtual int setVideoFrameObserver(IVideoFrameObserver* observer) = 0;
virtual int enableVideoFrameObserver(bool enabled, AoqVideoSource videoSource,
                                     const AoqVideoObserverConfig& config) = 0;

Parâmetros

Tipo

Descrição

observer

IVideoFrameObserver\*

Instância do listener. Passe nullptr para interromper os callbacks.

enabled

bool

Especifica se deve ativar callbacks de dados nesta posição

videoSource

AoqVideoSource

Fonte de dados do callback de frames de vídeo (posição no pipeline)

config

AoqVideoObserverConfig

Formato de pixel esperado, política de alinhamento, modo de leitura-escrita e espelhamento

Se o callback retornar true, os dados foram modificados e devem ser gravados de volta no SDK. Isso tem efeito apenas para I420 / CVPixelBuffer, o que significa apenas I420 no Linux. Se o callback retornar false, os dados são somente leitura.
O Linux não possui renderização integrada. Este grupo de callbacks é a única maneira de obter a imagem de vídeo remota (AoqVideoSourceRemote).

Callbacks do AoqEngineEventListener

AoqEngineEventListener é o ponto de entrada unificado para todas as notificações de eventos assíncronos do SDK. Herde e implemente esta classe e passe-a ao chamar createEngine.
Principais diferenças em relação ao Android: Todos os callbacks nesta classe são funções virtuais puras (= 0) sem implementação vazia padrão. No Linux, você deve implementar totalmente os 10 métodos a seguir; caso contrário, a classe derivada não poderá ser instanciada. Os callbacks podem ser acionados em threads internas do SDK.
class AOQ_API AoqEngineEventListener {
public:
    AoqEngineEventListener();
    virtual ~AoqEngineEventListener();

    virtual void onError(int code, const char* message) = 0;
    virtual void onWarning(int code, const char* message) = 0;
    virtual void onConnectionStatusChange(AoqConnectionStatus status) = 0;
    virtual void onStats(const AoqStats& stats) = 0;
    virtual void onAudioDeviceStateChanged(const AoqAudioDeviceState& state) = 0;
    virtual void onAudioDeviceRouteChanged(int routeType) = 0;
    virtual void onAudioFileState(const AoqAudioFileState& state) = 0;
    virtual void onLocalAudioVolumeIndication(const AoqAudioVolume& volume) = 0;
    virtual void onVideoDeviceStateChanged(const AoqVideoDeviceState& state) = 0;
    virtual void onDataMsg(const AoqDataMsg& msg) = 0;
};

onError

Callback de erro do engine. code corresponde a um valor enum AoqErrorCode (consulte 3.3), e message é válido apenas durante o callback.

onWarning

Callback de aviso do engine. code corresponde a um valor enum AoqWarningCode (consulte 3.3).

onConnectionStatusChange

Callback de alteração de status de conexão. Transições de estado: Disconnected -> Connecting -> Connected / Failed -> Disconnected.

onStats

Callback de estatísticas do engine. O SDK reporta periodicamente estatísticas de publicação e assinatura de áudio e vídeo, além de estatísticas de rede. Use-as para monitorar a qualidade da chamada e o status da rede em tempo real, bem como para diagnosticar problemas de áudio e vídeo.

Parâmetros

Tipo

Descrição

stats

AoqStats

Estatísticas de publicação e assinatura e estatísticas de rede para áudio, vídeo e mensagens de dados

AoqStats usa internamente uma estrutura de "ponteiro de array + contagem". O ponteiro é válido apenas durante o callback; portanto, copie os dados por conta própria para uso assíncrono.

onAudioDeviceStateChanged

Callback para alterações no status operacional de captura e reprodução do dispositivo de áudio. state.reason é um valor AoqErrorCode.

onAudioDeviceRouteChanged

Callback de alteração de rota de saída de áudio. routeType corresponde a um valor enum AoqAudioDeviceRouteType (consulte 3.4).
Não acionado no Linux: A compilação para Linux não inclui o listener de dispositivos da plataforma (AOQ_HAS_NATIVE_DEVICE_MONITOR é definido apenas no Windows / macOS), e dispositivos de áudio do lado do servidor não geram eventos de rota. Você ainda deve implementar este método (virtual puro), mas a implementação pode ser vazia.

onAudioFileState

Callback para status de reprodução de arquivo de áudio. state.fileId é válido apenas durante o callback.

onLocalAudioVolumeIndication

Callback de indicação de volume de captura local. Para ativá-lo, chame enableLocalAudioVolumeIndication.

onVideoDeviceStateChanged

Callback para alterações no status operacional de captura do dispositivo de vídeo. state.reason é um valor AoqErrorCode.

onDataMsg

Callback para mensagem de dados em tempo real recebida. msg.data tem garantia de validade apenas durante o callback. Se precisar usá-lo assincronamente, copie-o por conta própria.

Interfaces de listener de dados de frame

IAudioFrameObserver

Interface para escuta de dados de áudio. Não execute operações demoradas nos callbacks. Caso contrário, anomalias de áudio podem ocorrer. Todos os métodos são funções virtuais puras e devem ser totalmente implementados.
class AOQ_API IAudioFrameObserver {
public:
    virtual ~IAudioFrameObserver() {}
    virtual void onCapturedAudioFrame(const AoqAudioFrameData& data) = 0;
    virtual void onProcessCapturedAudioFrame(const AoqAudioFrameData& data) = 0;
    virtual void onPublishAudioFrame(AoqTrackType trackType, const AoqAudioFrameData& data) = 0;
    virtual void onPlaybackAudioFrame(const AoqAudioFrameData& data) = 0;
};

Callback

Como ativar (audioSource)

Modo de leitura-escrita

onCapturedAudioFrame

AoqAudioSourceCaptured

Leitura-escrita suportado

onProcessCapturedAudioFrame

AoqAudioSourceProcessCaptured

Leitura-escrita suportado

onPublishAudioFrame

AoqAudioSourcePublish (requer connect bem-sucedido)

Apenas somente leitura é suportado

onPlaybackAudioFrame

AoqAudioSourcePlayback

Leitura-escrita suportado

Todos os callbacks acima suportam a definição da taxa de amostragem e do número de canais usando AoqAudioObserverConfig.
No Linux, onPlaybackAudioFrame é o caminho principal para obter o PCM de downlink remoto. Como o módulo 3A não é compilado no Linux, os dados de onProcessCapturedAudioFrame (dados após processamento 3A) são essencialmente iguais aos dados brutos capturados. Para mais informações, consulte 4,3.

IVideoFrameObserver

Interface para escuta de dados de vídeo. Não execute operações demoradas nos callbacks. Caso contrário, travamentos de vídeo podem ocorrer. Todos os métodos são funções virtuais puras.
class AOQ_API IVideoFrameObserver {
public:
    virtual ~IVideoFrameObserver() {}
    virtual bool onCapturedVideoFrame(AoqVideoFrame& frame) = 0;
    virtual bool onPreEncodeVideoFrame(AoqTrackType trackType, AoqVideoFrame& frame) = 0;
    virtual bool onRemoteVideoFrame(AoqTrackType trackType, AoqVideoFrame& frame) = 0;
};

Callback

Como ativar (videoSource)

Descrição

onCapturedVideoFrame

AoqVideoSourceCaptured

Dados brutos locais após captura, antes do pré-processamento

onPreEncodeVideoFrame

AoqVideoSourcePreEncode

Dados brutos locais antes da codificação, após o pré-processamento

onRemoteVideoFrame

AoqVideoSourceRemote

Dados brutos remotos após decodificação e antes da renderização

Retorno: true indica que os dados foram modificados e devem ser gravados de volta no SDK, o que tem efeito apenas para I420 / CVPixelBuffer; false indica somente leitura. Os ponteiros em frame são válidos apenas durante o callback. Para usá-los assincronamente, copie-os por conta própria.

Tipos de dados e enumerações

Todos os tipos são definidos em AoqClientEngine.h no namespace AoqClientSdk. Todas as estruturas são tipos POD com valores padrão; portanto, você obtém os valores padrão na tabela simplesmente declarando-as. Campos marcados como exclusivos para mobile são excluídos por compilação condicional no Linux e não existem nas estruturas.

Tipos gerais

AoqCreateConfig

Campo

Tipo

Valor padrão

Descrição

workDir

const char\*

nullptr

Diretório de trabalho do SDK (para logs e arquivos temporários)

enableDumpAudio

bool

false

Especifica se deve salve dados de áudio (para depuração)

extras

const char\*

nullptr

Parâmetros estendidos (uma string JSON)

Os campos de string devem permanecer válidos pelo menos até que createEngine retorne. O engine os copia internamente conforme necessário. O campo isBTScoMode no Android é exclusivo para mobile e não existe no Linux.

AoqConnectConfig

Campo

Tipo

Valor padrão

Descrição

token

const char\*

nullptr

Token de autenticação de conexão

sid

const char\*

nullptr

ID da sessão

certFingerprint

const char\*

nullptr

Impressão digital do certificado do servidor

workspaceIdHash

const char\*

nullptr

Hash do ID do workspace

relayEndpoints

const AoqRelayEndpoint\*

nullptr

Endereço inicial do array de pontos de acesso relay

relayEndpointsCount

size_t

0

Número de pontos de acesso relay

publishTracks

const AoqTrackParam\*

nullptr

Endereço inicial do array de atributos de tracks de publicação

publishTracksCount

size_t

0

Número de tracks de publicação

subscribeTracks

const AoqTrackParam\*

nullptr

Endereço inicial do array de atributos de tracks de assinatura

subscribeTracksCount

size_t

0

Número de tracks de assinatura

AoqRelayEndpoint

Campo

Tipo

Valor padrão

Descrição

route_index

int

-1

Índice da rota

endpoint

const char\*

nullptr

Nome de domínio ou endereço IP do servidor relay

port

int

0

Porta do servidor relay

Note que o nome do campo route_index usa snake case, diferentemente do camel case usado pelos outros campos.

AoqTrackParam

Campo

Tipo

Valor padrão

Descrição

trackType

AoqTrackType

AoqTrackTypeAudio

Tipo de track

trackMode

AoqTrackMode

AoqTrackModeSegment

Modo streaming ou não-streaming. Efetivo apenas para o downlink de áudio.

AoqDataMsg

Campo

Tipo

Valor padrão

Descrição

data

const uint8_t\*

nullptr

Conteúdo da mensagem. Aponta para memória mantida pelo chamador.

dataSize

size_t

0

Número de bytes

Quando os dados são usados em um callback, eles têm garantia de validade apenas durante o callback. Para uso assíncrono, copie os dados por conta própria.

Tipos de estatísticas

AoqStats

Um resumo das estatísticas do engine, reportado periodicamente através de onStats. Usa uma estrutura de "ponteiro de array + contagem", na qual todos os ponteiros têm como padrão nullptr e todas as contagens têm como padrão 0.

Campo

Tipo

Descrição

audioPublishStats

const AoqAudioPublishStats\*

Array de estatísticas de publicação para áudio

audioPublishStatsCount

unsigned int

Número de entradas de estatísticas de publicação para áudio

videoPublishStats

const AoqVideoPublishStats\*

Array de estatísticas de publicação para vídeo

videoPublishStatsCount

unsigned int

Número de entradas de estatísticas de publicação para vídeo

dataMsgPublishStats

const AoqDataMsgPublishStats\*

Array de estatísticas de publicação para mensagens de dados

dataMsgPublishStatsCount

unsigned int

Número de entradas de estatísticas de publicação para mensagens de dados

audioSubscribeStats

const AoqAudioSubscribeStats\*

Array de estatísticas de assinatura para áudio

audioSubscribeStatsCount

unsigned int

Número de entradas de estatísticas de assinatura para áudio

videoSubscribeStats

const AoqVideoSubscribeStats\*

Array de estatísticas de assinatura para vídeo

videoSubscribeStatsCount

unsigned int

Número de entradas de estatísticas de assinatura para vídeo

dataMsgSubscribeStats

const AoqDataMsgSubscribeStats\*

Array de estatísticas de assinatura para mensagens de dados

dataMsgSubscribeStatsCount

unsigned int

Número de entradas de estatísticas de assinatura para mensagens de dados

networkStats

const AoqNetworkStats\*

Estatísticas de rede

AoqAudioPublishStats

Campo

Tipo

Valor padrão

Descrição

trackType

AoqTrackType

AoqTrackTypeAudio

Tipo de track

bitrate

unsigned int

0

Taxa de bits, em bit/s

bytes

uint64_t

0

Bytes acumulados enviados

encodeVolume

unsigned int

0

Volume de codificação da stream de publicação

AoqAudioSubscribeStats

Campo

Tipo

Valor padrão

Descrição

trackType

AoqTrackType

AoqTrackTypeAudio

Tipo de track

bitrate

unsigned int

0

Taxa de bits, em bit/s

bytes

uint64_t

0

Bytes acumulados recebidos

playVolume

unsigned int

0

Volume de reprodução

AoqVideoPublishStats

Campo

Tipo

Valor padrão

Descrição

trackType

AoqTrackType

AoqTrackTypeVideo

Tipo de track

bitrate

unsigned int

0

Taxa de bits, em bit/s

bytes

uint64_t

0

Bytes acumulados enviados

encodeFps

unsigned int

0

Taxa de quadros de codificação

AoqVideoSubscribeStats

Campo

Tipo

Valor padrão

Descrição

trackType

AoqTrackType

AoqTrackTypeVideo

Tipo de track

bitrate

unsigned int

0

Taxa de bits, em bit/s

bytes

uint64_t

0

Bytes acumulados recebidos

decodeFps

unsigned int

0

Taxa de quadros de decodificação

renderFps

unsigned int

0

Taxa de quadros de renderização

AoqDataMsgPublishStats / AoqDataMsgSubscribeStats

Campo

Tipo

Valor padrão

Descrição

trackType

AoqTrackType

AoqTrackTypeData

Tipo de track

bitrate

unsigned int

0

Taxa de bits, em bit/s

bytes

uint64_t

0

Bytes acumulados enviados e recebidos

AoqNetworkStats

Campo

Tipo

Valor padrão

Descrição

sendBitrate

unsigned int

0

Taxa de bits de envio, em bit/s

sendBytes

uint64_t

0

Bytes acumulados enviados

recvBitrate

unsigned int

0

Taxa de bits de recebimento, em bit/s

recvBytes

uint64_t

0

Bytes acumulados recebidos

loss

unsigned int

0

Taxa de perda de pacotes, de 0 a 100

rtt

unsigned int

0

Latência de ida e volta, em ms

Enumerações

AoqTrackType

Valor enum

Valor

Descrição

AoqTrackTypeAudio

0

Track de áudio

AoqTrackTypeVideo

1

Track de vídeo

AoqTrackTypeData

2

Track de mensagens de dados

AoqTrackMode

Valor enum

Valor

Descrição

AoqTrackModeSegment

0

Segmentado: os dados são empacotados e entregues em segmentos semânticos, como uma frase.

AoqTrackModeStream

1

Streaming: os dados são entregues continuamente.

AoqEncoderType

Valor enum

Valor

Descrição

AoqEncoderTypeUnknown

0

Formato desconhecido

AoqEncoderTypeAudioPCM

1

Áudio PCM

AoqEncoderTypeAudioOpus

2

Áudio Opus (baseado em plug-in; compilado estaticamente no Linux e disponível imediatamente)

AoqEncoderTypeVideoH264

3

Vídeo H.264

AoqEncoderTypeVideoJpeg

4

Vídeo JPEG

AoqEncoderTypeDataText

5

Texto da mensagem

AoqConnectionStatus

Valor enum

Valor

Descrição

AoqConnectionStatusDisconnected

0

Desconectado

AoqConnectionStatusConnecting

1

Conectando

AoqConnectionStatusConnected

2

Conectado

AoqConnectionStatusFailed

3

Falha na conexão

AoqErrorCode

Nota sobre nomenclatura: Nos cabeçalhos C++, os literais enum usam a forma abreviada AoqEC* (diferente da forma completa AoqErrorCode* no Android), mas os valores são idênticos.

Valor enum

Valor

Descrição

AoqECOK

0

Sucesso

AoqECParamInvalid

1

Parâmetro inválido

AoqECStateInvalid

2

Estado inválido

AoqECUnSupport

3

A API foi chamada, mas não está implementada na plataforma atual ou no modo atual

AoqECAudio

100

Erro genérico de áudio

AoqECAudioExternalBufferFull

110

Buffer de áudio externo está cheio

AoqECAudioDevice

120

Erro genérico de dispositivo de áudio

AoqECAudioDeviceRecordingAuthFailed

121

Permissão de gravação não concedida

AoqECAudioDeviceRecordingOccupied

122

Dispositivo de gravação está em uso

AoqECAudioDeviceRecordingBackgroundStart

123

Falha ao iniciar gravação em segundo plano

AoqECAudioDeviceRecordingStartFail

124

Falha ao iniciar gravação

AoqECAudioDevicePlayoutOccupied

125

Dispositivo de reprodução está em uso

AoqECAudioDevicePlayoutBackgroundStart

126

Falha ao iniciar reprodução em segundo plano

AoqECAudioDevicePlayoutStartFail

127

Falha ao iniciar reprodução

AoqECAudioDeviceEarpieceRequiresVoipMode

128

O receptor requer modo VoIP (cenários mobile)

AoqECVideo

200

Erro genérico de vídeo

AoqECVideoExternalBufferFull

210

Buffer de vídeo externo está cheio

AoqECVideoExternalCaptureNotEnabled

211

Captura de vídeo externa não está ativada

AoqECVideoExternalEncoderNotEnabled

212

Codificação de vídeo externa não está ativada

AoqECVideoDevice

220

Erro genérico de dispositivo de vídeo

AoqECVideoDeviceCameraOpenFail

221

Falha ao abrir a câmera

AoqECVideoDeviceCameraAuthFailed

222

Permissão da câmera não concedida

AoqECVideoDeviceCameraOccupied

223

Câmera está em uso

AoqECVideoDeviceCameraRunningError

224

Exceção de tempo de execução da câmera

AoqECVideoCodec

230

Erro genérico de codec de vídeo

AoqECVideoCodecEncoderInitFail

231

Falha ao inicializar o codificador de vídeo

AoqECVideoRender

240

Erro genérico de renderização de vídeo

AoqECVideoRenderCreateFail

241

Falha ao crie renderização de vídeo

AoqECVideoRenderDrawError

242

Erro de desenho na renderização de vídeo

AoqWarningCode

Valor enum

Valor

Descrição

AoqWCOK

0

Sem avisos

AoqWCAudio

100

Aviso genérico de áudio

AoqWCAudioHowling

101

Microfonia detectada

AoqWCAudioDevice

120

Aviso genérico de dispositivo de áudio

AoqWCAudioDeviceMicEnumerateError

121

Erro de enumeração do microfone

AoqWCAudioDeviceMicStartTimeout

122

Tempo limite de inicialização do microfone

AoqWCAudioDeviceRecordingError

123

Erro durante a gravação

AoqWCAudioDeviceSpeakerEnumerateError

124

Erro de enumeração do alto-falante

AoqWCAudioDeviceSpeakerStartTimeout

125

Tempo limite de inicialização do alto-falante

AoqWCAudioDevicePlayoutError

126

Erro durante a reprodução

AoqWCVideo

200

Aviso genérico de vídeo

AoqWCVideoCameraEnumerateError

201

Erro de enumeração da câmera

AoqWCVideoEncoderSwitched

202

Codificador de vídeo trocado

AoqWCVideoRenderDowngrade

203

Renderização de vídeo rebaixada

AoqMirrorMode

Valor enum

Valor

Descrição

AoqMirrorModeDisabled

0

Desativar espelhamento

AoqMirrorModeEnabled

1

Ativar espelhamento

AoqOrientationMode

Valor enum

Valor

Descrição

AoqOrientationModeAuto

0

Ajuste automático

AoqOrientationModePortrait

1

Retrato

AoqOrientationModeLandscape

2

Paisagem

AoqRenderMode

Valor enum

Valor

Descrição

AoqRenderModeAuto

0

Modo adaptativo

AoqRenderModeStretch

1

Modo esticado

AoqRenderModeFill

2

Modo preenchido

AoqRenderModeCrop

3

Modo cortado

Isso é usado apenas como AoqVideoCanvas.renderMode. O Linux não possui implementação de renderização, portanto, esta enumeração não tem efeito prático.

AoqAudioStreamDirection

Valor enum

Valor

Descrição

AoqAudioStreamPublish

0

Publicação de áudio

AoqAudioStreamPlayout

1

Reprodução de áudio

AoqAudioExternalStreamToggle

Valor enum

Valor

Descrição

AoqAudioExternalStreamToggleNormal

0

Recuperado

AoqAudioExternalStreamTogglePause

1

Pausado

Esta enumeração é declarada no cabeçalho, mas nenhuma API pública a utiliza atualmente. É uma definição reservada.

Tipos de áudio

AoqAudioCaptureConfig

Campo

Tipo

Valor padrão

Descrição

isExternal

bool

false

Especifica se deve usar captura externa

channel

int

1

Número de canais de captura de áudio. 1 e 2 são suportados.

isVoipMode é um campo exclusivo para mobile e não existe no Linux.

AoqAudioPlaybackConfig

Campo

Tipo

Valor padrão

Descrição

isExternal

bool

false

Especifica se deve usar reprodução externa

channel

int

1

Número de canais de reprodução de áudio. 1 e 2 são suportados.

isVoipMode / isDefaultSpeaker são campos exclusivos para mobile e não existem no Linux.

AoqAudioCodecConfig

Campo

Tipo

Valor padrão

Descrição

trackType

AoqTrackType

AoqTrackTypeAudio

Tipo de track

codecType

AoqEncoderType

AoqEncoderTypeAudioPCM

Tipo de codificação

sampleRate

int

48000

Taxa de amostragem, em Hz

channel

int

1

Número de canais. 1 e 2 são suportados.

bitrate

int

32000

Taxa de bits, em bit/s

Restrições de taxa de amostragem (extraídas dos comentários no arquivo de cabeçalho):
  • Codificação: Opus suporta 8 / 16 / 48K, e PCM suporta 8 / 16 / 32 / 48K;
  • Decodificação: 24K é adicionalmente suportado, mas 24K é limitado ao modo Segment (o modo Stream não suporta 24K);
  • Uma combinação inválida aciona o callback onError com AoqECParamInvalid durante connect.

AoqAudioDeviceRouteType

Valor enum

Valor

Descrição

AoqAudioDeviceRouteDefault

0

Rota padrão

AoqAudioDeviceRouteHeadset

1

Fones de ouvido

AoqAudioDeviceRouteEarpiece

2

Receptor

AoqAudioDeviceRouteHeadsetNoMic

3

Fones de ouvido sem microfone

AoqAudioDeviceRouteSpeakerPhone

4

Alto-falante integrado

AoqAudioDeviceRouteUsb

5

Dispositivo de áudio USB

AoqAudioDeviceRouteBluetooth

6

Bluetooth

AoqAudioDeviceRouteBluetoothA2dp

7

Bluetooth A2DP

Isso serve apenas como referência para os valores de routeType de onAudioDeviceRouteChanged. O Linux não aciona este callback.

AoqAudioDeviceStateCode

Valor enum

Valor

Descrição

AoqAudioDeviceNone

0

Sem estado

AoqAudioDeviceRecordStarting

1

Captura iniciando

AoqAudioDeviceRecordStarted

2

Captura iniciada

AoqAudioDeviceRecordStopping

3

Captura parando

AoqAudioDeviceRecordStopped

4

Captura parada

AoqAudioDeviceRecordFail

5

Falha na captura

AoqAudioDevicePlayStarting

6

Reprodução iniciando

AoqAudioDevicePlayStarted

7

Reprodução iniciada

AoqAudioDevicePlayStopping

8

Reprodução parando

AoqAudioDevicePlayStopped

9

Reprodução parada

AoqAudioDevicePlayFail

10

Falha na reprodução

AoqAudioDeviceState

Campo

Tipo

Valor padrão

Descrição

state

AoqAudioDeviceStateCode

AoqAudioDeviceNone

Status operacional do dispositivo

reason

int

0

Código do motivo do erro. Consulte AoqErrorCode.

AoqAudioFrameData

Dados brutos de áudio. Usado tanto para alimentação de stream externa via pushAudioExternalStreamData quanto para o callback IAudioFrameObserver.

Campo

Tipo

Valor padrão

Descrição

dataPtr

void\*

0

Ponteiro para os dados PCM de áudio

numOfSamples

int

0

Número de amostras (por canal)

bytesPerSample

int

0

Bytes por amostra

numOfChannels

int

0

Número de canais

samplesPerSec

int

0

Número de amostras por segundo (taxa de amostragem)

pushSequence

int

0

Rodada de entrada PCM (usada para notificação de conclusão de consumo da stream)

timeStamp

int64_t

0

Timestamp

dataSize

int

0

Comprimento dos dados, em bytes

autoGenMute

bool

false

Efetivo apenas em callbacks. true indica dados silenciosos gerados pelo SDK.

AoqAudioSource

Valor enum

Valor

Descrição

AoqAudioSourceCaptured

0

Dados de áudio capturados

AoqAudioSourceProcessCaptured

1

Dados de áudio após processamento 3A

AoqAudioSourcePublish

2

Dados de áudio a serem publicados (requer connect bem-sucedido)

AoqAudioSourcePlayback

3

Dados de áudio a serem reproduzidos

AoqAudioSourceMax

4

Espaço reservado, não utilizar

AoqAudioObserverMode

Valor enum

Valor

Descrição

AoqAudioObserverModeReadOnly

0

Modo somente leitura

AoqAudioObserverModeReadWrite

1

Modo leitura-escrita

AoqAudioObserverConfig

Campo

Tipo

Valor padrão

Descrição

sampleRate

int

48000

Taxa de amostragem do áudio do callback, em Hz. A reamostragem é realizada se a taxa não corresponder à da fonte.

channels

int

1

Número de canais de áudio no callback. 1 e 2 são suportados. Este parâmetro é limitado pelos parâmetros de codec da stream de assinatura.

mode

AoqAudioObserverMode

AoqAudioObserverModeReadOnly

Modo de callback

Taxas de amostragem suportadas: 8, 12, 16, 24, 32, 44,1, 48, 64, 88,2, 96, 176,4 e 192K.

AoqAudioVolumeIndicationConfig

Campo

Tipo

Valor padrão

Descrição

interval

int

0

Intervalo do callback, em milissegundos. Um valor menor ou igual a 0 desativa o callback. Um valor maior que 0 e menor que 10 é tratado como 10.

smooth

int

3

Coeficiente de suavização de volume. Um valor maior resulta em uma saída mais suave. Valores válidos: 0 a 10.

AoqAudioVolume

Campo

Tipo

Valor padrão

Descrição

volume

int

0

Volume instantâneo suavizado. Valores válidos: 0 a 255.

Tipos de arquivo de áudio e stream de áudio externa

AoqAudioFileMixConfig

Campo

Tipo

Valor padrão

Descrição

fileName

const char\*

nullptr

Nome do arquivo (incluindo o caminho)

cycles

int

-1

Número de loops. -1 indica loop ilimitado.

startPosMs

long

0

Posição inicial de reprodução, em milissegundos

publishVolume

int

100

Volume de publicação. Valores válidos: 0 a 100.

playoutVolume

int

100

Volume de reprodução. Valores válidos: 0 a 100.

fileId não faz parte do corpo de configuração e é passado como um parâmetro separado para startAudioFile.

AoqAudioFileStateCode

Valor enum

Valor

Descrição

AoqAudioFileNone

0

Sem estado

AoqAudioFileStarted

1

Iniciado

AoqAudioFileStopped

2

Parado

AoqAudioFilePaused

3

Pausado

AoqAudioFileResumed

4

Retomado

AoqAudioFileEnded

5

Reprodução concluída

AoqAudioFileBuffering

6

Bufferizando

AoqAudioFileBufferingEnd

7

Bufferização encerrada

AoqAudioFileFailed

8

Falha na reprodução

AoqAudioFileErrorCode

Valor enum

Valor

Descrição

AoqAudioFileNoError

0

Sem erro

AoqAudioFileOpenFailed

1

Falha ao abrir o arquivo

AoqAudioFileDecodeFailed

2

Falha ao decodificar o arquivo

AoqAudioFileState

Campo

Tipo

Valor padrão

Descrição

fileId

const char\*

nullptr

ID do arquivo. Válido apenas durante o callback.

stateCode

AoqAudioFileStateCode

AoqAudioFileNone

Código de status do arquivo

errorCode

AoqAudioFileErrorCode

AoqAudioFileNoError

Código de erro do arquivo

AoqAudioExternalStreamConfig

Campo

Tipo

Valor padrão

Descrição

trackType

AoqTrackType

AoqTrackTypeAudio

Tipo de track de áudio

codecType

AoqEncoderType

AoqEncoderTypeAudioPCM

Formato da stream de áudio. PCM é suportado.

channels

int

1

Número de canais. Limitado pelo codec de áudio da stream de publicação (1 e 2 são suportados, canais adicionais são ignorados).

sampleRate

int

48000

Taxa de amostragem, em Hz

playoutVolume

int

100

Volume de reprodução. Valores válidos: 0 a 100.

publishVolume

int

100

Volume de publicação. Valores válidos: 0 a 100.

maxBufferDuration

int

600000

Duração máxima do buffer, em milissegundos (ou seja, 10 minutos). Valores válidos: 100 ou superior. Se a duração exceder este valor, o Push falha.

enable3A

bool

false

Aplicar processamento 3A ao PCM de entrada (não tem efeito no Linux, consulte 4,3)

Taxas de amostragem suportadas: 8, 12, 16, 24, 32, 44,1, 48, 64, 88,2, 96, 176,4 e 192K.
streamId não faz parte do corpo de configuração e é passado como um parâmetro separado para addAudioExternalStream.

Tipos de vídeo

AoqVideoCanvas

Campo

Tipo

Valor padrão

Descrição

view

void\*

nullptr

Um ponteiro opaco para o handle de view nativo da plataforma. Passe nullptr para remover a vinculação.

renderMode

AoqRenderMode

AoqRenderModeAuto

Modo de preenchimento de renderização

Significados de plataforma para view: NSView* na Apple, HWND no Windows e o objeto adaptador de view de renderização interna do SDK no Android. Garanta que o ciclo de vida de view seja maior que o período durante o qual ele é definido por setLocalView / setRemoteView.
Sem implementação de plataforma correspondente no Linux. Esta estrutura não tem utilidade prática no Linux.

AoqVideoCaptureConfig

Campo

Tipo

Valor padrão

Descrição

width

int

1280

Largura da captura, em pixels. Este parâmetro é ineficaz quando isExternal=true.

height

int

720

Altura da captura, em pixels. Este parâmetro é ineficaz quando isExternal=true.

fps

int

15

Taxa de quadros de captura. Este parâmetro é ineficaz quando isExternal=true (o ritmo é determinado pela entrega de frames).

isExternal

bool

false

Especifica se deve usar captura externa. Se for true, a câmera não é aberta e os frames são alimentados por pushExternalVideoCapturedFrame.

cameraDirection é um campo exclusivo para mobile e não existe em plataformas desktop (incluindo Linux). No Linux, recomendamos que você sempre defina isExternal = true.

AoqVideoCodecConfig

Codificação e decodificação compartilham a mesma estrutura. Para decodificação, apenas trackType / codecType / width / height / fps / bitrate entram em vigor e participam da negociação como uma proposta de assinatura. minBitrate / keyframeInterval / mirrorMode / orientationMode / isExternal são usados apenas para codificação.

Campo

Tipo

Valor padrão

Descrição

isExternal

bool

false

Modo de codificação externa. Quando é true, você envia frames codificados e o SDK não realiza captura ou codificação.

trackType

AoqTrackType

AoqTrackTypeVideo

Tipo de track

codecType

AoqEncoderType

AoqEncoderTypeVideoH264

Tipo de codificação

width

int

540

Largura da resolução, em pixels

height

int

960

Altura da resolução, em pixels

fps

int

5

Taxa de quadros

bitrate

int

500000

Taxa de bits inicial, em bit/s

minBitrate

int

128000

Taxa de bits mínima, em bit/s

keyframeInterval

int

2

Intervalo de keyframe, em segundos

mirrorMode

AoqMirrorMode

AoqMirrorModeDisabled

Modo de espelhamento

orientationMode

AoqOrientationMode

AoqOrientationModeAuto

Modo de orientação

AoqVideoPixelFormat

Valor enum

Valor

Descrição

Suportado no Linux

AoqVideoPixelFormatUnknown

0

Formato desconhecido

-

AoqVideoPixelFormatI420

1

I420 (formato planar YUV)

Suportado

AoqVideoPixelFormatNV12

2

NV12 (formato semi-planar YUV)

Suportado

AoqVideoPixelFormatNV21

3

NV21 (formato semi-planar YUV)

Suportado

AoqVideoPixelFormatBGRA

4

BGRA (32 bits)

Suportado

AoqVideoPixelFormatRGBA

5

RGBA (32 bits)

Suportado

AoqVideoPixelFormatCVPixelBuffer

6

Efetivo apenas em plataformas Apple

Não suportado

AoqVideoPixelFormatTextureOES

7

Textura OES externa Android

Não suportado

AoqVideoPixelFormatTexture2D

8

Textura 2D regular Android

Não suportado

Os valores enum 6/7/8 ainda são visíveis no arquivo de cabeçalho (não são excluídos por compilação condicional), mas o Linux não possui a capacidade de plataforma correspondente. Se você os passar, serão tratados como formatos não suportados.

AoqVideoFrame

Um frame de vídeo bruto externo. Usado tanto para pushExternalVideoCapturedFrame quanto para o callback IVideoFrameObserver.

Campo

Tipo

Valor padrão

Descrição

format

AoqVideoPixelFormat

AoqVideoPixelFormatUnknown

Formato de pixel

width

int

0

Largura, em pixels

height

int

0

Altura, em pixels

dataPtr

void\*

0

Dados de formato empacotado (NV12 / NV21 / BGRA / RGBA)

dataSize

int

0

Número de bytes de dados empacotados

dataY

void\*

0

Plano Y do I420

dataU

void\*

0

Plano U do I420

dataV

void\*

0

Plano V do I420

strideY

int

0

Passo do plano Y

strideU

int

0

Passo do plano U

strideV

int

0

Passo do plano V

nativePixelBuffer

void\*

0

Usado para zero-copy da Apple (CVPixelBufferRef). Este campo não é usado no Linux.

textureId

int

0

ID de textura Android. Este campo não é usado no Linux.

transformMatrix

float array (16 elementos)

Todos zeros

Matriz de transformação de textura (4x4 linha-principal). Este campo não é usado no Linux.

timeStamp

int64_t

0

Timestamp, em milissegundos. Se for 0, o SDK o preenche com a hora local.

AoqVideoCodecType

Valor enum

Valor

Descrição

AoqVideoCodecTypeJPEG

0

Codificação JPEG

AoqVideoEncodedFrame

Um frame de vídeo codificado externamente. O chamador realiza a codificação e o SDK empacota e envia o frame diretamente sem recodificação.

Campo

Tipo

Valor padrão

Descrição

codec

AoqVideoCodecType

AoqVideoCodecTypeJPEG

Formato do codec

data

void\*

nullptr

Ponteiro para os dados codificados

dataSize

int

0

Número de bytes dos dados codificados

width

int

0

Largura, em pixels

height

int

0

Altura, em pixels

timeStamp

int64_t

0

Timestamp, em milissegundos. Se for 0, o SDK o preenche com a hora local.

AoqVideoDeviceStateCode

Valor enum

Valor

Descrição

AoqVideoDeviceNone

0

Sem estado

AoqVideoDeviceCaptureStarting

1

Câmera iniciando

AoqVideoDeviceCaptureStarted

2

Câmera iniciada

AoqVideoDeviceCaptureStopping

3

Câmera parando

AoqVideoDeviceCaptureStopped

4

Câmera parada

AoqVideoDeviceCaptureFail

5

Falha ao iniciar a câmera (por exemplo, permissão negada ou dispositivo indisponível)

AoqVideoDeviceState

Campo

Tipo

Valor padrão

Descrição

state

AoqVideoDeviceStateCode

AoqVideoDeviceNone

Status operacional de captura do dispositivo

reason

int

0

Código do motivo do erro. Consulte AoqErrorCode.

AoqVideoSource

Valor enum

Valor

Descrição

AoqVideoSourceCaptured

0

Dados de vídeo capturados antes do pré-processamento

AoqVideoSourcePreEncode

1

Dados de vídeo antes da codificação, após o pré-processamento

AoqVideoSourceRemote

2

Dados de vídeo remotos após decodificação e antes da renderização

AoqVideoSourceMax

3

Espaço reservado, não utilizar

AoqVideoObserverMode

Valor enum

Valor

Descrição

AoqVideoObserverModeReadOnly

0

Modo somente leitura

AoqVideoObserverModeReadWrite

1

Modo leitura-escrita (suportado apenas para I420 / CVPixelBuffer)

AoqVideoObserverAlignment

Valor enum

Valor

Descrição

AoqVideoObserverAlignmentDefault

0

Alinhamento padrão

AoqVideoObserverAlignmentEven

1

Alinhamento par

AoqVideoObserverAlignment4

2

Alinhamento de 4 bytes

AoqVideoObserverAlignment8

3

Alinhamento de 8 bytes

AoqVideoObserverAlignment16

4

Alinhamento de 16 bytes

AoqVideoObserverConfig

Campo

Tipo

Valor padrão

Descrição

format

AoqVideoPixelFormat

AoqVideoPixelFormatI420

Formato de pixel esperado dos dados do callback

alignment

AoqVideoObserverAlignment

AoqVideoObserverAlignmentDefault

Política de alinhamento de largura

mode

AoqVideoObserverMode

AoqVideoObserverModeReadOnly

Modo de callback. ReadWrite é suportado apenas para I420 / CVPixelBuffer.

mirrorApplied

bool

false

Especifica se deve espelhar os dados do callback

Referência da API de Geração de Texto
Geração de Imagens
  • FAQ
Geração de Vídeo
Áudio
Incorporação de Texto
Produção de Modelos