Skip to main content

Referencia de API de C++ de AOQ Client SDK para Linux

Este tema describe las API de C++, las devoluciones de llamada y los tipos de datos de AOQ Client SDK para Linux.

El SDK de AOQ proporciona API generales de video. Qwen-Audio-Realtime no admite entrada ni salida de video. Para conocer las capacidades de medios de otros modelos, consulte su documentación de conexión.

Índice de API

Ciclo de vida del motor

APIDescripción
createEngineCrear una instancia del motor (método singleton estático)
destroyDestruir la instancia del motor (método estático)
getVersionObtener la versión del SDK (método estático)
connectConectar al servidor Relay
disconnectDesconectar del servidor

Gestión de dispositivos de audio

APIDescripción
startAudioCaptureAbrir el dispositivo de captura de audio (operación nula en Linux)
stopAudioCaptureCerrar el dispositivo de captura de audio (sin efecto en Linux)
muteAudioCaptureSilenciar o reactivar la captura de audio
startAudioPlayerIniciar renderizado de audio (sin efecto en Linux)
stopAudioPlayerDetener la renderización de audio (sin efecto en Linux)
pauseAudioPlayerPausar el renderizado de audio, con desvanecimiento opcional
resumeAudioPlayerReanudar el renderizado de audio, con aparición gradual opcional
interruptAudioPlayerInterrumpir la reproducción de audio actual

Configuración del códec de audio

APIDescripción
setAudioEncoderConfigEstablecer parámetros de codificación de audio
setAudioDecoderConfigEstablecer parámetros de decodificación de audio

Gestión de dispositivos de video

APIDescripción
startVideoCaptureAbrir el dispositivo de captura de video (Linux solo admite captura externa)
stopVideoCaptureCerrar el dispositivo de captura de video
setLocalViewEstablecer o eliminar la ventana de renderización de video local (sin renderizador en Linux)
setRemoteViewEstablecer o eliminar la ventana de renderización de video remoto (sin renderizador en Linux)

Configuración de códec de video y entrada externa

APIDescripción
setVideoEncoderConfigEstablecer parámetros de codificación de video
setVideoDecoderConfigEstablecer parámetros de decodificación de video (propuesta de códec del suscriptor)
pushExternalVideoCapturedFrameEnviar tramas de video capturadas externamente
pushExternalVideoEncodedFrameEnviar tramas de video codificadas externamente

Captura de pantalla

APIDescripción
startScreenCaptureIniciar la captura de pantalla
stopScreenCaptureDetener la captura de pantalla

Control de transmisión de flujo de medios

APIDescripción
enableSendMediaStreamHabilitar o deshabilitar la transmisión de secuencia de medios local

Reproducción de archivos de audio

APIDescripción
startAudioFileIniciar la reproducción y publicación de un archivo de audio local
stopAudioFileDetener la reproducción del archivo de audio
pauseAudioFilePausar la reproducción del archivo de audio
resumeAudioFileReanudar la reproducción del archivo de audio
getAudioFileDurationObtener la duración total del archivo de audio
getAudioFileCurrentPositionObtener la posición de reproducción actual del archivo de audio
setAudioFilePositionMillisBuscar una posición en el archivo de audio
setAudioFileVolumeEstablecer el volumen del archivo de audio
getAudioFileVolumeObtener el volumen actual del archivo de audio

Secuencias de audio externas

APIDescripción
addAudioExternalStreamAgregar un flujo de audio externo
pushAudioExternalStreamDataEnviar datos de audio PCM externos
setAudioExternalStreamVolumeEstablecer el volumen de la secuencia de audio externa
getAudioExternalStreamVolumeObtener el volumen de la secuencia de audio externa
clearAudioExternalStreamBufferBorrar el búfer de la secuencia de audio externa
removeAudioExternalStreamEliminar un flujo de audio externo

Mensajes en tiempo real

APIDescripción
sendDataMsgEnviar un mensaje de datos en tiempo real

Devoluciones de llamada de cuadros de audio

APIDescripción
setAudioFrameObserverRegistrar el observador de tramas de audio (virtual puro)
enableAudioFrameObserverHabilitar o deshabilitar devoluciones de llamada de tramas de audio en una etapa específica (virtual puro)

Indicación de volumen de audio local

APIDescripción
enableLocalAudioVolumeIndicationHabilitar o deshabilitar las devoluciones de llamada de indicación de volumen de captura local

Devoluciones de llamada de cuadros de video

APIDescripción
setVideoFrameObserverRegistrar el observador de tramas de video (virtual puro)
enableVideoFrameObserverHabilitar o deshabilitar devoluciones de llamada de tramas de video en una etapa específica (virtual puro)

Devoluciones de llamada de AoqEngineEventListener

APIDescripción
onErrorCallback de error del motor
onWarningCallback de advertencia del motor
onConnectionStatusChangeCallback de cambio de estado de conexión
onStatsCallback de estadísticas del motor
onAudioDeviceStateChangedCallback de cambio de estado de operación del dispositivo de audio
onAudioDeviceRouteChangedDevolución de llamada de cambio de ruta de salida de audio (no se activa en Linux)
onAudioFileStateCallback de estado de reproducción de archivo de audio
onLocalAudioVolumeIndicationCallback de indicación de volumen de captura local
onVideoDeviceStateChangedCallback de cambio de estado de operación del dispositivo de video
onDataMsgCallback de mensaje de datos en tiempo real recibido

Devoluciones de llamada de IAudioFrameObserver

APIDescripción
onCapturedAudioFrameSe invoca cuando se captura un cuadro de audio sin procesar. El cuadro contiene datos PCM no procesados.
onProcessCapturedAudioFrameInvocado para una trama de audio después del procesamiento 3A (AEC/AGC/ANS).
onPublishAudioFrameSe invoca para un cuadro de audio antes de la publicación, inmediatamente antes de la codificación y la transmisión.
onPlaybackAudioFrameInvocado para una trama de audio remota decodificada antes de la reproducción.

Devoluciones de llamada de IVideoFrameObserver

APIDescripción
onCapturedVideoFrameInvocado cuando se captura una trama de video sin procesar. La trama aún no ha sido preprocesada.
onPreEncodeVideoFrameInvocado para una trama de video sin procesar después del preprocesamiento y antes de la codificación.
onRemoteVideoFrameInvocado para una trama de video remota sin procesar después de la decodificación y antes de la renderización.

Detalles de la API

Ciclo de vida del motor

createEngine

Crea la instancia del motor. El SDK mantiene el motor como un singleton global, por lo que llamar a este método nuevamente devuelve la instancia existente.
static AoqClientEngine* createEngine(const AoqCreateConfig& config,
                                    AoqEngineEventListener* listener);

Parámetros

Tipo

Descripción

config

AoqCreateConfig

Configuración de creación del motor

listener

AoqEngineEventListener\*

Observador de eventos del motor, que el invocador implementa mediante herencia

Devuelve: Un puntero a la instancia del motor. Se devuelve nullptr en caso de fallo. El ciclo de vida del listener debe superar al del motor.

destroy

Destruye la instancia del motor y libera todos los recursos.
static int destroy();
Devuelve: 0 indica éxito; un valor distinto de 0 indica un fallo.

getVersion

Obtiene la versión actual del SDK.
static const char* getVersion();
Devuelve: La cadena de versión, que es mantenida por el SDK.

connect

Se conecta al servidor de retransmisión. El servidor de aplicaciones obtiene parámetros de conexión AOQ temporales basados en el protocolo en uso y los envía al cliente. Para más información, consulte Autenticación por token.
virtual int connect(const AoqConnectConfig& config);

Parámetros

Tipo

Descripción

config

AoqConnectConfig

Configuración de conexión, que incluye el token, SID, la matriz de puntos de acceso de retransmisión y las matrices de pistas de publicación y suscripción

Devuelve: 0 indica éxito y la operación se ejecuta de forma asíncrona; un valor distinto de 0 indica un fallo. El resultado de la conexión se notifica mediante onConnectionStatusChange.
relayEndpoints / publishTracks / subscribeTracks son todas estructuras de "puntero de matriz estilo C + longitud". La memoria es mantenida por el llamante y solo necesita ser válida durante la llamada de conexión.

disconnect

Desconecta del servidor y libera los recursos asociados con la conexión.
virtual int disconnect();
Devuelve: 0 indica éxito; un valor distinto de 0 indica un fallo.

Gestión de dispositivos de audio

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

Descripción

config

AoqAudioCaptureConfig / AoqAudioPlaybackConfig

Configuración de captura y reproducción

mute

bool

true silencia; false activa el sonido

fadeMs

int

Duración de fundido de salida o entrada, en milisegundos. 0 indica ejecución inmediata.

trackType

AoqTrackType

Tipo de pista

Restricción importante en Linux: startAudioCapture / startAudioPlayer tienen implementaciones vacías en la compilación de Linux (devuelven 0 directamente y no abren ningún dispositivo de tarjeta de sonido), y stopAudioCapture / stopAudioPlayer no tienen ningún efecto real porque el estado interno no se establece. En Linux, utilice flujos de audio externos (2.8) para la entrada de audio y utilice devoluciones de llamada de fotograma de audio (2.10) para reproducir la salida de audio usted mismo.

Configuración del códec de audio

virtual int setAudioEncoderConfig(const AoqAudioCodecConfig& config);
virtual int setAudioDecoderConfig(const AoqAudioCodecConfig& config);
Se recomienda llamar a este método antes de connect(). Una combinación inválida de la frecuencia de muestreo y el modo activa el callback onError con AoqECParamInvalid durante la conexión.

Gestión de dispositivos de video

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

Descripción

config

AoqVideoCaptureConfig

Configuración de captura de video

trackType

AoqTrackType

Tipo de pista de video

canvas

AoqVideoCanvas

Lienzo de renderización. Si canvas.view == nullptr, se elimina el vínculo.

Restricción importante en Linux: La captura de cámara en Linux es una implementación provisional y no produce fotogramas. Utilice startVideoCapture({.isExternal = true}) + pushExternalVideoCapturedFrame para entregar fotogramas. setLocalView / setRemoteView no tienen backend de renderizado en Linux. Para la vista previa, realice el renderizado usted mismo a través de la devolución de llamada de fotograma de video (2.12).

Configuración de códec de video y 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

Descripción

config

AoqVideoCodecConfig

Configuración del códec, que se enruta según config.trackType

trackType

AoqTrackType

Destino de enrutamiento. Establézcalo en AoqTrackTypeVideo o AoqTrackTypeScreen.

frame

AoqVideoFrame / AoqVideoEncodedFrame

Cuadro sin procesar o datos de cuadro codificado

  • setVideoDecoderConfig es una propuesta de códec para el lado de suscripción y debe llamarse antes de connect. Durante la decodificación, solo trackType/codecType/width/height/fps/bitrate surten efecto.
  • pushExternalVideoCapturedFrame requiere primero startVideoCapture(isExternal=true) para Video o startScreenCapture(isExternal=true) para Pantalla. Devuelve AoqECVideoExternalCaptureNotEnabled(211) cuando la captura externa no se ha iniciado, AoqECParamInvalid cuando el formato no es compatible y AoqECVideoExternalBufferFull(210) cuando el búfer está lleno.
  • pushExternalVideoEncodedFrame requiere primero setVideoEncoderConfig(isExternal=true). El SDK empaqueta y envía la trama directamente sin volver a codificarla. Actualmente solo se admite JPEG.
  • Cuando frame.timeStamp es 0, el SDK lo rellena con la hora local.

Captura de pantalla

virtual int startScreenCapture(const AoqScreenCaptureConfig& config);
virtual int stopScreenCapture();
config especifica la configuración de captura de pantalla. El contenido de la pantalla se envía en la pista AoqTrackTypeScreen. Devuelve 0 en caso de éxito o un valor distinto de cero en caso de fallo. Estos métodos devuelven sincrónicamente y no proporcionan un callback onScreenCaptureStateChanged. Linux admite únicamente entrada de tramas sin procesar externas. Establezca isExternal=true. La captura de pantalla interna y la enumeración de fuentes no son compatibles; sourceId y sourceType no existen en la configuración de Linux. Para fotogramas sin procesar externos, establezca isExternal=true y proporcione fotogramas Screen sin procesar a través de pushExternalVideoCapturedFrame para la codificación del SDK. Para fotogramas codificados externamente, configure la pista Screen para codificación externa con setVideoEncoderConfig, luego llame a pushExternalVideoEncodedFrame; no se requiere startScreenCapture.

Control de transmisión de flujo de medios

virtual int enableSendMediaStream(AoqTrackType trackType, bool enable);
Especifica si se debe enviar un flujo de medios local específico. trackType puede ser AoqTrackTypeAudio o AoqTrackTypeVideo o AoqTrackTypeScreen. Un valor de retorno de 0 indica que la llamada se despacha y se ejecuta de forma asíncrona. Se recomienda deshabilitar el envío después de la inicialización y habilitarlo solo después de que onConnectionStatusChange reporte AoqConnectionStatusConnected.

Reproducción de archivos de audio

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

Descripción

fileId

const char\*

ID de archivo de audio. La capa de negocio debe garantizar la unicidad global.

config

AoqAudioFileMixConfig

Configuración de mezcla de archivos

positionMillis

int64_t

Posición de reproducción objetivo, en milisegundos

type

AoqAudioStreamDirection

Volumen de publicación o volumen de reproducción local

volume

int

Volumen. Valores válidos: de 0 a 100.

Descripción del valor de retorno:
  • getAudioFileDuration / getAudioFileCurrentPosition: Un valor >=0 es el valor en milisegundos; un valor <0 indica un fallo, y su valor absoluto es -AoqErrorCode.
  • getAudioFileVolume: Un valor de 0-100 es el volumen; un valor <0 indica un fallo, y su valor absoluto es -AoqErrorCode.
Los cambios de estado de reproducción se notifican a través del callback onAudioFileState. La mezcla de archivos utiliza la ruta de publicación y no depende de la tarjeta de sonido local. Por lo tanto, en Linux, puede utilizarlo para insertar un archivo local como fuente de audio.

Secuencias de audio 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

Descripción

streamId

const char\*

ID de flujo de audio externo. La capa de negocio debe garantizar la unicidad global.

config

AoqAudioExternalStreamConfig

Configuración de flujo de audio externo

data

AoqAudioFrameData

Datos de audio externos sin procesar (PCM), como referencia no constante

type

AoqAudioStreamDirection

Volumen de publicación o volumen de reproducción local

vol

int

Volumen. Valores válidos: de 0 a 100.

fadeoutMs

int

Duración del desvanecimiento. -1 utiliza el desvanecimiento predeterminado del SDK, 0 borra el búfer sin desvanecimiento, y un valor mayor que 0 mantiene la duración de desvanecimiento especificada en milisegundos.

  • Cuando pushAudioExternalStreamData devuelve AoqECAudioExternalBufferFull(110), el búfer interno del SDK está lleno. Se recomienda esperar 20 ms y luego enviar nuevamente la trama de datos actual.
  • Mejor práctica: En escenarios de captura en tiempo real, inserte 10 ms de datos a la vez e insértelos siempre que haya datos disponibles. En escenarios de origen de archivo, inserte 40 ms de datos a la vez en intervalos de 30 ms, y maneje el valor de retorno AoqECAudioExternalBufferFull.
  • getAudioExternalStreamVolume: Un valor de 0-100 es el volumen; un valor <0 indica un fallo, y su valor absoluto es -AoqErrorCode.
  • clearAudioExternalStreamBuffer devuelve void y no tiene valor de retorno.
  • data.pushSequence se utiliza para la notificación de finalización de consumo del SDK (ronda de entrada PCM).
    No existe un dispositivo de captura real en Linux. Este grupo de API es la ruta principal para el enlace ascendente de audio.

Mensajes en tiempo real

virtual int sendDataMsg(const AoqDataMsg& msg);
Envía un mensaje de datos en tiempo real. msg.data apunta a memoria mantenida por el llamante y solo necesita ser válida durante la llamada. Los mensajes del par se notifican a través del callback onDataMsg.

Devoluciones de llamada de cuadros de audio

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

Parámetros

Tipo

Descripción

observer

IAudioFrameObserver\*

Instancia del observador. Pase nullptr para detener las devoluciones de llamada.

enabled

bool

Especifica si se deben habilitar las devoluciones de llamada de datos en esta posición

audioSource

AoqAudioSource

Posición de la fuente de datos de audio sin procesar

config

AoqAudioObserverConfig

Tasa de muestreo de la devolución de llamada, número de canales y modo de lectura-escritura

Uso: Primero, llame a setAudioFrameObserver(observer) para registrar el listener. Luego, llame a enableAudioFrameObserver para cada posición que necesite. El ciclo de vida del observador debe cubrir todo el período del callback. Libere el observador solo después de anular su registro. Soporte de modo lectura-escritura (véase la declaración IAudioFrameObserver): onCapturedAudioFrame / onProcessCapturedAudioFrame / onPlaybackAudioFrame admiten modo lectura-escritura, mientras que onPublishAudioFrame admite únicamente modo de solo lectura.
En Linux, setAudioFrameObserver completa el registro mediante un despacho asíncrono (PostTask al hilo de control), por lo que la devolución de llamada puede surtir efecto poco después de que la llamada regrese. Antes de liberar el observador, deje un intervalo de seguridad suficiente o mantenga el objeto activo.

Indicación de volumen de audio local

virtual int enableLocalAudioVolumeIndication(const AoqAudioVolumeIndicationConfig& config);
Habilita o deshabilita la indicación de volumen de captura local. Si config.interval <= 0, la devolución de llamada se deshabilita. Una vez habilitada, onLocalAudioVolumeIndication se activa en el intervalo especificado por config.interval. Debe llamar a este método después de startAudioCapture para obtener los datos de volumen.
No hay captura de dispositivo en Linux. Los datos de volumen en este callback provienen de la ruta de mezcla de publicación/reproducción (mezclador).

Devoluciones de llamada de cuadros de video

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

Parámetros

Tipo

Descripción

observer

IVideoFrameObserver\*

Instancia del observador. Pase nullptr para detener las devoluciones de llamada.

enabled

bool

Especifica si se deben habilitar las devoluciones de llamada de datos en esta posición

videoSource

AoqVideoSource

Fuente de datos de la devolución de llamada de trama de video (posición en la canalización)

config

AoqVideoObserverConfig

Formato de píxel esperado, política de alineación, modo de lectura-escritura y espejo

Si el callback devuelve true, los datos se modifican y deben escribirse de nuevo en el SDK. Esto surte efecto únicamente para I420 / CVPixelBuffer, lo que significa solo I420 en Linux. Si el callback devuelve false, los datos son de solo lectura.
Linux no tiene renderizado integrado. Este grupo de callbacks es la única forma de obtener la imagen de video remota (AoqVideoSourceRemote).

Devoluciones de llamada de AoqEngineEventListener

AoqEngineEventListener es el punto de entrada unificado para todas las notificaciones de eventos asíncronos del SDK. Usted lo hereda e implementa, y luego lo pasa cuando llama a createEngine.
Todos los callbacks en esta clase son funciones virtuales puras (= 0) sin implementación vacía predeterminada. En Linux, debe implementar completamente los siguientes 10 métodos; de lo contrario, la clase derivada no se puede instanciar. Los callbacks pueden activarse en hilos internos del 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;
};

Devoluciones de llamada de AoqEngineEventListener

onError

Callback de error del motor. code corresponde a un valor de enumeración AoqErrorCode (véase 3.3), y message es válido únicamente durante el callback.

onWarning

Devolución de llamada de advertencia del motor. code corresponde a un valor de enumeración AoqWarningCode (consulte 3.3).

onConnectionStatusChange

Callback de cambio de estado de conexión. Transiciones de estado: Desconectado -> Conectando -> Conectado / Fallido -> Desconectado.

onStats

Callback de estadísticas del motor. El SDK reporta periódicamente estadísticas de publicación y suscripción de audio y video, así como estadísticas de red, que puede utilizar para monitorear la calidad de la llamada y el estado de la red en tiempo real, y para diagnosticar problemas de audio y video.

Parámetros

Tipo

Descripción

stats

AoqStats

Estadísticas de publicación y suscripción, y estadísticas de red para mensajes de audio, video y datos

AoqStats utiliza internamente una estructura de "puntero de matriz + recuento". El puntero es válido únicamente durante el callback, por lo que debe copiar los datos usted mismo para uso asíncrono.

onAudioDeviceStateChanged

Devolución de llamada para cambios en el estado de operación de captura y reproducción del dispositivo de audio. state.reason es un valor AoqErrorCode.

onAudioDeviceRouteChanged

Devolución de llamada de cambio de ruta de salida de audio. routeType corresponde a un valor de enumeración AoqAudioDeviceRouteType (consulte 3.4).
No se activa en Linux: La compilación de Linux no incluye el listener de dispositivos de plataforma, y los dispositivos de audio del lado del servidor no generan eventos de ruta. Aún debe implementar este método (virtual puro), pero la implementación puede estar vacía.

onAudioFileState

Devolución de llamada para el estado de reproducción de archivos de audio. state.fileId es válido solo durante la devolución de llamada.

onLocalAudioVolumeIndication

Devolución de llamada de indicación de volumen de captura local. Para habilitarla, llame a enableLocalAudioVolumeIndication.

onVideoDeviceStateChanged

Devolución de llamada para cambios en el estado de operación de captura del dispositivo de video. state.reason es un valor AoqErrorCode.

onDataMsg

Callback para un mensaje de datos en tiempo real recibido. msg.datatiene garantía de validez únicamente durante el callback. Si necesita utilizarlo de forma asíncrona, cópielo usted mismo.

Devoluciones de llamada de IAudioFrameObserver

Interfaz para escucha de datos de audio. No realice operaciones que consuman mucho tiempo en los callbacks. De lo contrario, pueden producirse anomalías en el audio. Todos los métodos son funciones virtuales puras y deben implementarse completamente.
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

Cómo habilitarlo (audioSource)

Modo de lectura-escritura

onCapturedAudioFrame

AoqAudioSourceCaptured

Lectura-escritura admitida

onProcessCapturedAudioFrame

AoqAudioSourceProcessCaptured

Lectura-escritura admitida

onPublishAudioFrame

AoqAudioSourcePublish (requiere una conexión exitosa)

Solo se admite modo de solo lectura

onPlaybackAudioFrame

AoqAudioSourcePlayback

Lectura-escritura admitida

Todos los callbacks anteriores admiten la configuración de la frecuencia de muestreo y el número de canales mediante AoqAudioObserverConfig.
En Linux, onPlaybackAudioFrame es la ruta principal para obtener el PCM descendente remoto. Debido a que el módulo 3A no se compila en Linux, los datos de onProcessCapturedAudioFrame (datos después del procesamiento 3A) son esencialmente los mismos que los datos capturados sin procesar.

onCapturedAudioFrame

Se invoca cuando se captura un cuadro de audio sin procesar. El cuadro contiene datos PCM no procesados.
virtual void onCapturedAudioFrame(const AoqAudioFrameData& data) = 0;
ParámetroTipoDescripción
dataconst AoqAudioFrameData&Datos de fotograma de audio capturado
Valor de retorno: None (void).
Los punteros en data son válidos únicamente durante el callback. Copie los datos antes de utilizarlos de forma asíncrona. Linux no tiene dispositivo de captura interno; este callback recibe datos de flujos de audio externos o de la tubería de mezcla.

onProcessCapturedAudioFrame

Invocado para una trama de audio después del procesamiento 3A (AEC/AGC/ANS).
virtual void onProcessCapturedAudioFrame(const AoqAudioFrameData& data) = 0;
ParámetroTipoDescripción
dataconst AoqAudioFrameData&Datos de trama de audio después del procesamiento 3A
Valor de retorno: None (void).
Los punteros en data son válidos únicamente durante el callback. Copie los datos antes de utilizarlos de forma asíncrona. El módulo 3A no se compila en Linux, por lo que los datos no difieren materialmente de los datos capturados sin procesar.

onPublishAudioFrame

Se invoca para un cuadro de audio antes de la publicación, inmediatamente antes de la codificación y la transmisión.
virtual void onPublishAudioFrame(AoqTrackType trackType, const AoqAudioFrameData& data) = 0;
ParámetroTipoDescripción
trackTypeAoqTrackTypeTipo de pista de audio
dataconst AoqAudioFrameData&Datos de trama de audio antes de la publicación
Valor de retorno: None (void).
Los punteros en data son válidos únicamente durante el callback. Copie los datos antes de utilizarlos de forma asíncrona. Este callback admite únicamente acceso de solo lectura.

onPlaybackAudioFrame

Invocado para una trama de audio remota decodificada antes de la reproducción.
virtual void onPlaybackAudioFrame(const AoqAudioFrameData& data) = 0;
ParámetroTipoDescripción
dataconst AoqAudioFrameData&Datos de trama de audio remota antes de la reproducción
Valor de retorno: None (void).
Los punteros en data son válidos únicamente durante el callback. Copie los datos antes de utilizarlos de forma asíncrona. En Linux, este callback es la forma principal de obtener datos PCM descendentes remotos.

Devoluciones de llamada de IVideoFrameObserver

Interfaz para escucha de datos de video. No realice operaciones que consuman mucho tiempo en los callbacks. De lo contrario, puede producirse tartamudeo en el video. Todos los métodos son funciones virtuales puras.
class AOQ_API IVideoFrameObserver {
public:
    virtual ~IVideoFrameObserver() {}
    virtual bool onCapturedVideoFrame(AoqTrackType trackType, AoqVideoFrame& frame) = 0;
    virtual bool onPreEncodeVideoFrame(AoqTrackType trackType, AoqVideoFrame& frame) = 0;
    virtual bool onRemoteVideoFrame(AoqTrackType trackType, AoqVideoFrame& frame) = 0;
};

Callback

Cómo habilitarlo (videoSource)

Descripción

onCapturedVideoFrame

AoqVideoSourceCaptured

Datos sin procesar locales después de la captura, antes del preprocesamiento

onPreEncodeVideoFrame

AoqVideoSourcePreEncode

Datos sin procesar locales antes de la codificación, después del preprocesamiento

onRemoteVideoFrame

AoqVideoSourceRemote

Datos sin procesar remotos después de la decodificación y antes de la renderización

Devuelve: true indica que los datos se modifican y deben escribirse de nuevo en el SDK, lo cual surte efecto únicamente para I420 / CVPixelBuffer; false indica solo lectura. Los punteros en frame son válidos únicamente durante el callback. Para utilizarlos de forma asíncrona, cópielos usted mismo.

onCapturedVideoFrame

Invocado cuando se captura una trama de video sin procesar. La trama aún no ha sido preprocesada.
virtual bool onCapturedVideoFrame(AoqTrackType trackType, AoqVideoFrame& frame) = 0;
ParámetroTipoDescripción
trackTypeAoqTrackTypePista de cuadro (Video / Pantalla)
frameAoqVideoFrame&Datos de fotograma de video capturado
Valor de retorno: true indica que los datos modificados deben escribirse de nuevo en el SDK (compatible únicamente con I420/CVPixelBuffer). false indica acceso de solo lectura.
Los punteros en frame son válidos solo durante la devolución de llamada. Copie los datos antes de usarlos de forma asíncrona.

onPreEncodeVideoFrame

Invocado para una trama de video sin procesar después del preprocesamiento y antes de la codificación.
virtual bool onPreEncodeVideoFrame(AoqTrackType trackType, AoqVideoFrame& frame) = 0;
ParámetroTipoDescripción
trackTypeAoqTrackTypePista de cuadro (Video / Pantalla)
frameAoqVideoFrame&Datos de fotograma de video antes de la codificación
Valor de retorno: true indica que los datos modificados deben escribirse de nuevo en el SDK (compatible únicamente con I420/CVPixelBuffer). false indica acceso de solo lectura.
Los punteros en frame son válidos solo durante la devolución de llamada. Copie los datos antes de usarlos de forma asíncrona.

onRemoteVideoFrame

Invocado para una trama de video remota sin procesar después de la decodificación y antes de la renderización.
virtual bool onRemoteVideoFrame(AoqTrackType trackType, AoqVideoFrame& frame) = 0;
ParámetroTipoDescripción
trackTypeAoqTrackTypePista de cuadro (Video / Pantalla)
frameAoqVideoFrame&Datos de fotograma de video remoto decodificado
Valor de retorno: true indica que los datos modificados deben escribirse de nuevo en el SDK (compatible únicamente con I420/CVPixelBuffer). false indica acceso de solo lectura.
Los punteros en frame son válidos únicamente durante el callback. Copie los datos antes de utilizarlos de forma asíncrona. Linux no tiene renderizador integrado; este callback es la única forma de obtener tramas de video remotas.

Tipos de datos y enumeraciones

Tipos comunes

AoqCreateConfig

Campo

Tipo

Valor predeterminado

Descripción

workDir

const char\*

nullptr

Directorio de trabajo del SDK (para registros y archivos temporales)

enableDumpAudio

bool

false

Especifica si se deben guardar los datos de audio (para depuración)

extras

const char\*

nullptr

Parámetros extendidos (una cadena JSON)

maxEncodedVideoFrameBytesint190 × 1024Tamaño máximo de trama codificada en bytes. Se aplica únicamente al codificador JPEG interno del SDK. Un valor de 0 desactiva el límite.
enableDropOversizedVideoFrameboolfalsePara el codificador JPEG interno del SDK, si se debe descartar un cuadro que sigue siendo demasiado grande incluso con la calidad más baja.
Los campos de cadena deben permanecer válidos al menos hasta que createEngine regrese. El motor los copia internamente según sea necesario. El campo isBTScoMode no existe en Linux.

AoqConnectConfig

Campo

Tipo

Valor predeterminado

Descripción

token

const char\*

nullptr

Token de autenticación de conexión

sid

const char\*

nullptr

ID de sesión

certFingerprint

const char\*

nullptr

Huella digital del certificado del servidor

workspaceIdHash

const char\*

nullptr

Hash del ID del espacio de trabajo

relayEndpoints

const AoqRelayEndpoint\*

nullptr

Dirección de inicio del arreglo de puntos de acceso de retransmisión

relayEndpointsCount

size_t

0

Número de puntos de acceso de retransmisión

publishTracks

const AoqTrackParam\*

nullptr

Dirección de inicio del arreglo de atributos de pistas de publicación

publishTracksCount

size_t

0

Número de pistas publicadas

subscribeTracks

const AoqTrackParam\*

nullptr

Dirección de inicio del arreglo de atributos de pistas de suscripción

subscribeTracksCount

size_t

0

Número de pistas suscritas

AoqRelayEndpoint

Campo

Tipo

Valor predeterminado

Descripción

route_index

int

-1

Índice de ruta

endpoint

const char\*

nullptr

Nombre de dominio o dirección IP del servidor de retransmisión

port

int

0

Puerto del servidor de retransmisión

tcp_portint0Puerto de reserva TCP. Un valor de 0 utiliza el puerto predeterminado del SDK, 443.
Tenga en cuenta que el nombre del campo route_index usa snake case, a diferencia del camel case utilizado por los otros campos.

AoqTrackParam

Campo

Tipo

Valor predeterminado

Descripción

trackType

AoqTrackType

AoqTrackTypeAudio

Tipo de pista

trackMode

AoqTrackMode

AoqTrackModeSegment

Modo de transmisión o sin transmisión. Efectivo solo para el enlace descendente de audio.

AoqDataMsg

Campo

Tipo

Valor predeterminado

Descripción

data

const uint8_t\*

nullptr

Contenido del mensaje. Apunta a memoria mantenida por el invocador.

dataSize

size_t

0

Número de bytes

Cuando los datos se utilizan en un callback, se garantiza que son válidos únicamente durante el callback. Para uso asíncrono, copie los datos usted mismo.

Tipos de estadísticas

AoqStats

Un resumen de estadísticas del motor, que se reporta periódicamente a través de onStats. Utiliza una estructura de "puntero de matriz + recuento", en la que todos los punteros tienen como valor predeterminado nullptr y todos los recuentos tienen como valor predeterminado 0.

Campo

Tipo

Descripción

audioPublishStats

const AoqAudioPublishStats\*

Arreglo de estadísticas de publicación para audio

audioPublishStatsCount

unsigned int

Número de entradas de estadísticas de publicación para audio

videoPublishStats

const AoqVideoPublishStats\*

Arreglo de estadísticas de publicación para video

videoPublishStatsCount

unsigned int

Número de entradas de estadísticas de publicación para video

dataMsgPublishStats

const AoqDataMsgPublishStats\*

Arreglo de estadísticas de publicación para mensajes de datos

dataMsgPublishStatsCount

unsigned int

Número de entradas de estadísticas de publicación para mensajes de datos

audioSubscribeStats

const AoqAudioSubscribeStats\*

Arreglo de estadísticas de suscripción para audio

audioSubscribeStatsCount

unsigned int

Número de entradas de estadísticas de suscripción para audio

videoSubscribeStats

const AoqVideoSubscribeStats\*

Arreglo de estadísticas de suscripción para video

videoSubscribeStatsCount

unsigned int

Número de entradas de estadísticas de suscripción para video

dataMsgSubscribeStats

const AoqDataMsgSubscribeStats\*

Arreglo de estadísticas de suscripción para mensajes de datos

dataMsgSubscribeStatsCount

unsigned int

Número de entradas de estadísticas de suscripción para mensajes de datos

networkStats

const AoqNetworkStats\*

Estadísticas de red

AoqAudioPublishStats

Campo

Tipo

Valor predeterminado

Descripción

trackType

AoqTrackType

AoqTrackTypeAudio

Tipo de pista

bitrate

unsigned int

0

Tasa de bits, en bit/s

bytes

uint64_t

0

Bytes enviados acumulados

encodeVolume

unsigned int

0

Volumen de codificación del flujo de publicación

AoqAudioSubscribeStats

Campo

Tipo

Valor predeterminado

Descripción

trackType

AoqTrackType

AoqTrackTypeAudio

Tipo de pista

bitrate

unsigned int

0

Tasa de bits, en bit/s

bytes

uint64_t

0

Bytes acumulados recibidos

playVolume

unsigned int

0

Volumen de reproducción

AoqVideoPublishStats

Campo

Tipo

Valor predeterminado

Descripción

trackType

AoqTrackType

AoqTrackTypeVideo

Tipo de pista

bitrate

unsigned int

0

Tasa de bits, en bit/s

bytes

uint64_t

0

Bytes enviados acumulados

encodeFps

unsigned int

0

Tasa de cuadros de codificación

AoqVideoSubscribeStats

Campo

Tipo

Valor predeterminado

Descripción

trackType

AoqTrackType

AoqTrackTypeVideo

Tipo de pista

bitrate

unsigned int

0

Tasa de bits, en bit/s

bytes

uint64_t

0

Bytes acumulados recibidos

decodeFps

unsigned int

0

Tasa de fotogramas de decodificación

renderFps

unsigned int

0

Tasa de fotogramas de renderizado

AoqDataMsgPublishStats / AoqDataMsgSubscribeStats

Campo

Tipo

Valor predeterminado

Descripción

trackType

AoqTrackType

AoqTrackTypeData

Tipo de pista

bitrate

unsigned int

0

Tasa de bits, en bit/s

bytes

uint64_t

0

Bytes acumulados enviados y recibidos

AoqNetworkStats

Campo

Tipo

Valor predeterminado

Descripción

sendBitrate

unsigned int

0

Tasa de bits de envío, en bit/s

sendBytes

uint64_t

0

Bytes enviados acumulados

recvBitrate

unsigned int

0

Tasa de bits de recepción, en bit/s

recvBytes

uint64_t

0

Bytes acumulados recibidos

loss

unsigned int

0

Tasa de pérdida de paquetes, de 0 a 100

rtt

unsigned int

0

Latencia de ida y vuelta, en ms

Enumeraciones

AoqTrackType

Valor de enumeración

Valor

Descripción

AoqTrackTypeAudio

0

Pista de audio

AoqTrackTypeVideo

1

Pista de video

AoqTrackTypeData

2

Pista de mensajes de datos

AoqTrackTypeScreen3Pista de pantalla compartida. Solo enlace ascendente.

AoqTrackMode

Valor de enumeración

Valor

Descripción

AoqTrackModeSegment

0

Segmentado: los datos se empaquetan y entregan en segmentos semánticos, como una oración.

AoqTrackModeStream

1

Transmisión: los datos se entregan de forma continua.

AoqEncoderType

Valor de enumeración

Valor

Descripción

AoqEncoderTypeUnknown

0

Formato desconocido

AoqEncoderTypeAudioPCM

1

Audio PCM

AoqEncoderTypeAudioOpus

2

Audio Opus (basado en complementos; compilado estáticamente en Linux y disponible de forma nativa)

AoqEncoderTypeVideoH264

3

Video H.264

AoqEncoderTypeVideoJpeg

4

Video JPEG

AoqEncoderTypeDataText

5

Texto del mensaje

AoqConnectionStatus

Valor de enumeración

Valor

Descripción

AoqConnectionStatusDisconnected

0

Desconectado

AoqConnectionStatusConnecting

1

Conectando

AoqConnectionStatusConnected

2

Conectado

AoqConnectionStatusFailed

3

Error de conexión

AoqErrorCode

Valor de enumeración

Valor

Descripción

AoqECOK

0

Éxito

AoqECParamInvalid

1

Parámetro no válido

AoqECStateInvalid

2

Estado no válido

AoqECUnSupport

3

Se llama a la API pero no está implementada en la plataforma actual o en el modo actual

AoqECAudio

100

Error genérico de audio

AoqECAudioExternalBufferFull

110

El búfer de audio externo está lleno

AoqECAudioDevice

120

Error genérico de dispositivo de audio

AoqECAudioDeviceRecordingAuthFailed

121

Permiso de grabación no concedido

AoqECAudioDeviceRecordingOccupied

122

El dispositivo de grabación está en uso

AoqECAudioDeviceRecordingBackgroundStart

123

Error al iniciar la grabación en segundo plano

AoqECAudioDeviceRecordingStartFail

124

Error al iniciar la grabación

AoqECAudioDevicePlayoutOccupied

125

El dispositivo de reproducción está en uso

AoqECAudioDevicePlayoutBackgroundStart

126

Error al iniciar la reproducción en segundo plano

AoqECAudioDevicePlayoutStartFail

127

Error al iniciar la reproducción

AoqECAudioDeviceEarpieceRequiresVoipMode

128

El receptor requiere modo VoIP (escenarios móviles)

AoqECVideo

200

Error genérico de video

AoqECVideoExternalBufferFull

210

El búfer de video externo está lleno

AoqECVideoExternalCaptureNotEnabled

211

La captura de video externa no está habilitada

AoqECVideoExternalEncoderNotEnabled

212

La codificación de video externa no está habilitada

AoqECVideoDevice

220

Error genérico de dispositivo de video

AoqECVideoDeviceCameraOpenFail

221

Error al abrir la cámara

AoqECVideoDeviceCameraAuthFailed

222

Permiso de cámara no concedido

AoqECVideoDeviceCameraOccupied

223

La cámara está en uso

AoqECVideoDeviceCameraRunningError

224

Excepción de tiempo de ejecución de la cámara

AoqECVideoCodec

230

Error genérico de códec de video

AoqECVideoCodecEncoderInitFail

231

Error al inicializar el codificador de video

AoqECVideoRender

240

Error genérico de renderizado de video

AoqECVideoRenderCreateFail

241

Error al crear el renderizado de video

AoqECVideoRenderDrawError

242

Error de dibujo en el renderizado de video

AoqECScreen300Error general de captura de pantalla
AoqECScreenAuthFailed310Permiso de captura de pantalla denegado
AoqECScreenStartFailed311Error al iniciar la captura de pantalla

AoqWarningCode

Valor de enumeración

Valor

Descripción

AoqWCOK

0

Sin advertencia

AoqWCAudio

100

Advertencia genérica de audio

AoqWCAudioHowling

101

Acople de audio detectado

AoqWCAudioDevice

120

Advertencia genérica de dispositivo de audio

AoqWCAudioDeviceMicEnumerateError

121

Error de enumeración de micrófono

AoqWCAudioDeviceMicStartTimeout

122

Se agotó el tiempo de inicio del micrófono

AoqWCAudioDeviceRecordingError

123

Error durante la grabación

AoqWCAudioDeviceSpeakerEnumerateError

124

Error de enumeración de altavoces

AoqWCAudioDeviceSpeakerStartTimeout

125

Se agotó el tiempo de inicio del altavoz

AoqWCAudioDevicePlayoutError

126

Error durante la reproducción

AoqWCVideo

200

Advertencia genérica de video

AoqWCVideoCameraEnumerateError

201

Error de enumeración de cámaras

AoqWCVideoEncoderSwitched

202

Codificador de video cambiado

AoqWCVideoRenderDowngrade

203

Renderizado de video degradado

AoqMirrorMode

Valor de enumeración

Valor

Descripción

AoqMirrorModeDisabled

0

Deshabilitar espejo

AoqMirrorModeEnabled

1

Habilitar espejo

AoqOrientationMode

Valor de enumeración

Valor

Descripción

AoqOrientationModeAuto

0

Auto-fit

AoqOrientationModePortrait

1

Vertical

AoqOrientationModeLandscape

2

Horizontal

AoqRenderMode

Valor de enumeración

Valor

Descripción

AoqRenderModeAuto

0

Modo adaptativo

AoqRenderModeStretch

1

Modo de estiramiento

AoqRenderModeFill

2

Modo de relleno

AoqRenderModeCrop

3

Modo de recorte

Esto se utiliza únicamente como AoqVideoCanvas.renderMode. Linux no tiene implementación de renderizado, por lo que esta enumeración no surte efecto realmente.

AoqAudioStreamDirection

Valor de enumeración

Valor

Descripción

AoqAudioStreamPublish

0

Publicación de audio

AoqAudioStreamPlayout

1

Audio de reproducción

AoqAudioExternalStreamToggle

Valor de enumeración

Valor

Descripción

AoqAudioExternalStreamToggleNormal

0

Recuperado

AoqAudioExternalStreamTogglePause

1

En pausa

Esta enumeración se declara en el encabezado, pero actualmente ninguna API pública la utiliza. Es una definición reservada.

Tipos de audio

AoqAudioCaptureConfig

Campo

Tipo

Valor predeterminado

Descripción

isExternal

bool

false

Especifica si se debe utilizar captura externa

channel

int

1

Número de canales de captura de audio. Se admiten 1 y 2.

AoqAudioPlaybackConfig

Campo

Tipo

Valor predeterminado

Descripción

isExternal

bool

false

Especifica si se debe utilizar reproducción externa

channel

int

1

Número de canales de reproducción de audio. Se admiten 1 y 2.

AoqAudioCodecConfig

Campo

Tipo

Valor predeterminado

Descripción

trackType

AoqTrackType

AoqTrackTypeAudio

Tipo de pista

codecType

AoqEncoderType

AoqEncoderTypeAudioOpus

Tipo de codificación

sampleRate

int

48000

Tasa de muestreo, en Hz

channel

int

1

Número de canales. Se admiten 1 y 2.

bitrate

int

32000

Tasa de bits, en bit/s

Restricciones de tasa de muestreo (extracto de los comentarios en el archivo de cabecera):
  • Codificación: Opus admite 8 / 16 / 48K, y PCM admite 8 / 16 / 32 / 48K;
  • Decodificación: 24K es adicionalmente compatible, pero 24K está limitado al modo Segmento (el modo Stream no admite 24K);
  • Una combinación no válida activa la devolución de llamada onError con AoqECParamInvalid durante connect.

AoqAudioDeviceRouteType

Valor de enumeración

Valor

Descripción

AoqAudioDeviceRouteDefault

0

Ruta predeterminada

AoqAudioDeviceRouteHeadset

1

Auriculares

AoqAudioDeviceRouteEarpiece

2

Receiver

AoqAudioDeviceRouteHeadsetNoMic

3

Auriculares sin micrófono

AoqAudioDeviceRouteSpeakerPhone

4

Altavoz integrado

AoqAudioDeviceRouteUsb

5

Dispositivo de audio USB

AoqAudioDeviceRouteBluetooth

6

Bluetooth

AoqAudioDeviceRouteBluetoothA2dp

7

Bluetooth A2DP

Esto es solo una referencia para los valores de routeType de onAudioDeviceRouteChanged. Linux no activa este callback.

AoqAudioDeviceStateCode

Valor de enumeración

Valor

Descripción

AoqAudioDeviceNone

0

Sin estado

AoqAudioDeviceRecordStarting

1

Iniciando captura

AoqAudioDeviceRecordStarted

2

Captura iniciada

AoqAudioDeviceRecordStopping

3

Deteniendo captura

AoqAudioDeviceRecordStopped

4

Captura detenida

AoqAudioDeviceRecordFail

5

Error en la captura

AoqAudioDevicePlayStarting

6

Iniciando reproducción

AoqAudioDevicePlayStarted

7

Reproducción iniciada

AoqAudioDevicePlayStopping

8

Deteniendo reproducción

AoqAudioDevicePlayStopped

9

Reproducción detenida

AoqAudioDevicePlayFail

10

Error en la reproducción

AoqAudioDeviceState

Campo

Tipo

Valor predeterminado

Descripción

state

AoqAudioDeviceStateCode

AoqAudioDeviceNone

Estado de operación del dispositivo

reason

int

0

Código de motivo de error. Consulte AoqErrorCode.

AoqAudioFrameData

Datos de audio sin procesar. Se utilizan tanto para la alimentación de flujo externo mediante pushAudioExternalStreamData como para el callback IAudioFrameObserver.

Campo

Tipo

Valor predeterminado

Descripción

dataPtr

void\*

0

Puntero a los datos PCM de audio

numOfSamples

int

0

Número de muestras (por canal)

bytesPerSample

int

0

Bytes por muestra

numOfChannels

int

0

Número de canales

samplesPerSec

int

0

Número de muestras por segundo (tasa de muestreo)

pushSequence

int

0

Ronda de entrada PCM (utilizada para la notificación de finalización de consumo de flujo)

timeStamp

int64_t

0

Marca de tiempo

dataSize

int

0

Longitud de datos, en bytes

autoGenMute

bool

false

Válido solo en devoluciones de llamada. true indica datos silenciosos generados por el SDK.

AoqAudioSource

Valor de enumeración

Valor

Descripción

AoqAudioSourceCaptured

0

Datos de audio capturados

AoqAudioSourceProcessCaptured

1

Datos de audio después del procesamiento 3A

AoqAudioSourcePublish

2

Datos de audio que se publicarán (requiere una conexión exitosa)

AoqAudioSourcePlayback

3

Datos de audio a reproducir

AoqAudioSourceMax

4

Marcador de posición, no utilizar

AoqAudioObserverMode

Valor de enumeración

Valor

Descripción

AoqAudioObserverModeReadOnly

0

Modo de solo lectura

AoqAudioObserverModeReadWrite

1

Modo de lectura y escritura

AoqAudioObserverConfig

Campo

Tipo

Valor predeterminado

Descripción

sampleRate

int

48000

Tasa de muestreo del audio de la devolución de llamada, en Hz. Se realiza un remuestreo si la tasa no coincide con la de la fuente.

channels

int

1

Número de canales de audio en el callback. Se admiten 1 y 2. Este parámetro está limitado por los parámetros del códec del flujo de suscripción.

mode

AoqAudioObserverMode

AoqAudioObserverModeReadOnly

Modo de devolución de llamada

Tasas de muestreo admitidas: 8, 12, 16, 24, 32, 44.1, 48, 64, 88.2, 96, 176.4 y 192K.

AoqAudioVolumeIndicationConfig

CampoTipoValor predeterminadoDescripción
reportSpeechboolfalseSi se debe detectar voz.
intervalint0Intervalo de devolución de llamada en milisegundos. Un valor de 0 o menos deshabilita las devoluciones de llamada. Los valores mayores que 0 y menores que 10 se tratan como 10.
smoothint3Coeficiente de suavizado de volumen. Valores más grandes proporcionan mayor suavizado. Valores válidos: 0-10.

AoqAudioVolume

CampoTipoValor predeterminadoDescripción
isSpeechboolfalseSi el audio contiene voz.
volumeint0Volumen instantáneo suavizado. Valores válidos: 0-255.

Tipos de archivos de audio y flujos de audio externos

AoqAudioFileMixConfig

Campo

Tipo

Valor predeterminado

Descripción

fileName

const char\*

nullptr

Nombre del archivo (incluida la ruta)

cycles

int

-1

Número de bucles. -1 indica un bucle ilimitado.

startPosMs

long

0

Posición de inicio de reproducción, en milisegundos

publishVolume

int

100

Volumen de publicación. Valores válidos: de 0 a 100.

playoutVolume

int

100

Volumen de reproducción. Valores válidos: de 0 a 100.

fileId no forma parte del cuerpo de configuración y se pasa como un parámetro separado a startAudioFile.

AoqAudioFileStateCode

Valor de enumeración

Valor

Descripción

AoqAudioFileNone

0

Sin estado

AoqAudioFileStarted

1

Iniciado

AoqAudioFileStopped

2

Detenido

AoqAudioFilePaused

3

En pausa

AoqAudioFileResumed

4

Reanudado

AoqAudioFileEnded

5

Reproducción completada

AoqAudioFileBuffering

6

Buffering

AoqAudioFileBufferingEnd

7

Almacenamiento en búfer finalizado

AoqAudioFileFailed

8

Error en la reproducción

AoqAudioFileErrorCode

Valor de enumeración

Valor

Descripción

AoqAudioFileNoError

0

Sin error

AoqAudioFileOpenFailed

1

Error al abrir el archivo

AoqAudioFileDecodeFailed

2

Error al decodificar el archivo

AoqAudioFileState

Campo

Tipo

Valor predeterminado

Descripción

fileId

const char\*

nullptr

ID de archivo. Es válido solo durante la devolución de llamada.

stateCode

AoqAudioFileStateCode

AoqAudioFileNone

Código de estado del archivo

errorCode

AoqAudioFileErrorCode

AoqAudioFileNoError

Código de error del archivo

AoqAudioExternalStreamConfig

Campo

Tipo

Valor predeterminado

Descripción

trackType

AoqTrackType

AoqTrackTypeAudio

Tipo de pista de audio

codecType

AoqEncoderType

AoqEncoderTypeAudioPCM

Formato de flujo de audio. Se admite PCM.

channels

int

1

Número de canales. Está limitado por el códec de audio del flujo de publicación (se admiten 1 y 2, y los canales adicionales se ignoran).

sampleRate

int

48000

Tasa de muestreo, en Hz

playoutVolume

int

100

Volumen de reproducción. Valores válidos: de 0 a 100.

publishVolume

int

100

Volumen de publicación. Valores válidos: de 0 a 100.

maxBufferDuration

int

600000

Duración máxima del búfer, en milisegundos (es decir, 10 minutos). Valores válidos: 100 y superiores. Si la duración excede este valor, Push falla.

enable3A

bool

false

Aplicar procesamiento 3A al PCM de entrada (no surte efecto en Linux)

Tasas de muestreo admitidas: 8, 12, 16, 24, 32, 44.1, 48, 64, 88.2, 96, 176.4 y 192K.
streamId no forma parte del cuerpo de configuración y se pasa como un parámetro separado a addAudioExternalStream.

Tipos de video

AoqVideoCanvas

Campo

Tipo

Valor predeterminado

Descripción

view

void\*

nullptr

Un puntero opaco al identificador de vista nativo de la plataforma. Pase nullptr para eliminar el vínculo.

renderMode

AoqRenderMode

AoqRenderModeAuto

Modo de relleno de renderizado

Debe asegurarse de que el ciclo de vida de view sea más largo que el período durante el cual se establece mediante setLocalView / setRemoteView.
Sin implementación de plataforma correspondiente en Linux. Esta estructura no tiene uso práctico en Linux.

AoqVideoCaptureConfig

Campo

Tipo

Valor predeterminado

Descripción

width

int

1280

Ancho de captura, en píxeles. Este parámetro no tiene efecto cuando isExternal=true.

height

int

720

Altura de captura, en píxeles. Este parámetro no tiene efecto cuando isExternal=true.

fps

int

15

Tasa de cuadros de captura. Este parámetro no tiene efecto cuando isExternal=true (el ritmo lo determina la entrega de cuadros).

isExternal

bool

false

Especifica si se debe utilizar captura externa. Si es true, la cámara no se abre y las tramas se alimentan mediante pushExternalVideoCapturedFrame.

En Linux, recomendamos que siempre establezca isExternal = true.

AoqVideoCodecConfig

La codificación y la decodificación comparten la misma estructura. Para la decodificación, solo trackType / codecType / width / height / fps / bitrate surten efecto y participan en la negociación como una propuesta de suscripción. minBitrate / keyframeInterval / mirrorMode / orientationMode / isExternal se utilizan únicamente para la codificación.

Campo

Tipo

Valor predeterminado

Descripción

isExternal

bool

false

Modo de codificación externa. Cuando es true, usted inserta tramas codificadas y el SDK no realiza captura ni codificación.

trackType

AoqTrackType

AoqTrackTypeVideo

Tipo de pista

codecType

AoqEncoderType

AoqEncoderTypeVideoH264

Tipo de codificación

width

int

540

Ancho de resolución, en píxeles

height

int

960

Alto de resolución, en píxeles

fps

int

5

Tasa de fotogramas

bitrate

int

500000

Tasa de bits inicial, en bit/s

minBitrate

int

128000

Tasa de bits mínima, en bit/s

keyframeInterval

int

2

Intervalo de fotogramas clave, en segundos

mirrorMode

AoqMirrorMode

AoqMirrorModeDisabled

Modo espejo

orientationMode

AoqOrientationMode

AoqOrientationModeAuto

Modo de orientación

AoqVideoPixelFormat

Valor de enumeración

Valor

Descripción

Compatible con Linux

AoqVideoPixelFormatUnknown

0

Formato desconocido

-

AoqVideoPixelFormatI420

1

I420 (formato planar YUV)

Compatible

AoqVideoPixelFormatNV12

2

NV12 (formato semiplanar YUV)

Compatible

AoqVideoPixelFormatNV21

3

NV21 (formato semiplanar YUV)

Compatible

AoqVideoPixelFormatBGRA

4

BGRA (32 bits)

Compatible

AoqVideoPixelFormatRGBA

5

RGBA (32 bits)

Compatible

AoqVideoPixelFormatCVPixelBuffer

6

Válido solo en plataformas Apple

No compatible

AoqVideoPixelFormatTextureOES

7

Textura OES externa de Android

No compatible

AoqVideoPixelFormatTexture2D

8

Textura 2D estándar de Android

No compatible

Los valores de enumeración 6/7/8 siguen siendo visibles en el archivo de encabezado (no se excluyen por compilación condicional), pero Linux no tiene la capacidad de plataforma correspondiente. Si los pasa, se tratan como formatos no compatibles.

AoqVideoFrame

Una trama de video sin procesar externa. Se utiliza tanto para pushExternalVideoCapturedFrame como para el callback IVideoFrameObserver.

Campo

Tipo

Valor predeterminado

Descripción

format

AoqVideoPixelFormat

AoqVideoPixelFormatUnknown

Formato de píxel

width

int

0

Ancho, en píxeles

height

int

0

Alto, en píxeles

dataPtr

void\*

0

Datos en formato empaquetado (NV12 / NV21 / BGRA / RGBA)

dataSize

int

0

Número de bytes de datos empaquetados

dataY

void\*

0

Plano Y de I420

dataU

void\*

0

Plano U de I420

dataV

void\*

0

Plano V de I420

strideY

int

0

Paso del plano Y

strideU

int

0

Paso del plano U

strideV

int

0

Paso del plano V

nativePixelBuffer

void\*

0

Utilizado para copia cero de Apple (CVPixelBufferRef). Este campo no se utiliza en Linux.

textureId

int

0

ID de textura de Android. Este campo no se utiliza en Linux.

transformMatrix

matriz float (16 elementos)

Todos ceros

Matriz de transformación de textura (fila principal 4x4). Este campo no se utiliza en Linux.

timeStamp

int64_t

0

Marca de tiempo, en milisegundos. Si es 0, el SDK la rellena con la hora local.

AoqVideoCodecType

Valor de enumeración

Valor

Descripción

AoqVideoCodecTypeJPEG

0

Codificación JPEG

AoqVideoEncodedFrame

Una trama de video codificada externamente. El llamante realiza la codificación, y el SDK empaqueta y envía la trama directamente sin volver a codificarla.

Campo

Tipo

Valor predeterminado

Descripción

codec

AoqVideoCodecType

AoqVideoCodecTypeJPEG

Formato de códec

data

void\*

nullptr

Puntero a los datos codificados

dataSize

int

0

Número de bytes de los datos codificados

width

int

0

Ancho, en píxeles

height

int

0

Alto, en píxeles

timeStamp

int64_t

0

Marca de tiempo, en milisegundos. Si es 0, el SDK la rellena con la hora local.

AoqVideoDeviceStateCode

Valor de enumeración

Valor

Descripción

AoqVideoDeviceNone

0

Sin estado

AoqVideoDeviceCaptureStarting

1

Iniciando cámara

AoqVideoDeviceCaptureStarted

2

Cámara iniciada

AoqVideoDeviceCaptureStopping

3

Deteniendo cámara

AoqVideoDeviceCaptureStopped

4

Cámara detenida

AoqVideoDeviceCaptureFail

5

Error al iniciar la cámara (por ejemplo, permiso denegado o dispositivo no disponible)

AoqVideoDeviceState

Campo

Tipo

Valor predeterminado

Descripción

state

AoqVideoDeviceStateCode

AoqVideoDeviceNone

Estado de la operación de captura del dispositivo

reason

int

0

Código de motivo de error. Consulte AoqErrorCode.

AoqVideoSource

Valor de enumeración

Valor

Descripción

AoqVideoSourceCaptured

0

Datos de video capturados antes del preprocesamiento

AoqVideoSourcePreEncode

1

Datos de video antes de la codificación, después del preprocesamiento

AoqVideoSourceRemote

2

Datos de video remoto después de la decodificación y antes de la renderización

AoqVideoSourceMax

3

Marcador de posición, no utilizar

AoqVideoObserverMode

Valor de enumeración

Valor

Descripción

AoqVideoObserverModeReadOnly

0

Modo de solo lectura

AoqVideoObserverModeReadWrite

1

Modo de lectura-escritura (admitido solo para I420 / CVPixelBuffer)

AoqVideoObserverAlignment

Valor de enumeración

Valor

Descripción

AoqVideoObserverAlignmentDefault

0

Alineación predeterminada

AoqVideoObserverAlignmentEven

1

Alineación de números pares

AoqVideoObserverAlignment4

2

Alineación de 4 bytes

AoqVideoObserverAlignment8

3

Alineación de 8 bytes

AoqVideoObserverAlignment16

4

Alineación de 16 bytes

AoqVideoObserverConfig

Campo

Tipo

Valor predeterminado

Descripción

format

AoqVideoPixelFormat

AoqVideoPixelFormatI420

Formato de píxel esperado de los datos del callback

alignment

AoqVideoObserverAlignment

AoqVideoObserverAlignmentDefault

Política de alineación de ancho

mode

AoqVideoObserverMode

AoqVideoObserverModeReadOnly

Modo de devolución de llamada. ReadWrite solo es compatible con I420 / CVPixelBuffer.

mirrorApplied

bool

false

Especifica si se deben reflejar los datos del callback

trackTypeAoqTrackTypeAoqTrackTypeVideoPista de video a observar. Admite solo Video y Screen.

Tipos de captura de pantalla

AoqScreenCaptureConfig

CampoTipoValor predeterminadoDescripción
isExternalboolfalseDebe ser true en Linux. La aplicación captura la pantalla y suministra tramas sin procesar.
appGroupconst char*nullptrSolo para iOS. No se utiliza en esta plataforma.
Todos los tipos están definidos en AoqClientEngine.h dentro del espacio de nombres AoqClientSdk. Todas las estructuras son tipos POD con valores predeterminados, por lo que obtiene los valores predeterminados de la tabla simplemente declarándolas. Consulte cada estructura para conocer la disponibilidad de campos y el alcance de la plataforma. AoqScreenCaptureConfig.appGroup permanece en la estructura pero solo se utiliza en iOS. sourceId y sourceType se excluyen mediante compilación condicional y no existen en la estructura en Linux.

AoqScreenCaptureStateCode

Enumeración de estado de captura de pantalla. El tipo está definido, pero el SDK actual no proporciona un callback de estado correspondiente.
Valor de enumeraciónValorDescripción
AoqScreenCaptureNone0None
AoqScreenCaptureStarting1Iniciando
AoqScreenCaptureStarted2Iniciado
AoqScreenCaptureStopping3Deteniendo
AoqScreenCaptureStopped4Detenido
AoqScreenCaptureFail5Fallido

AoqScreenCaptureState

CampoTipoDescripción
stateAoqScreenCaptureStateCodeCódigo de estado de captura de pantalla.
reasonintCódigo de error de AoqErrorCode. 0 indica un estado normal.