Cómo integrar la biblioteca de procesamiento estéreo en Android
¿OpenCORE utiliza un controlador de motor y una arquitectura de nodo? Está escrito en lenguaje C++. ¿El motor recibe comandos de la capa de aplicación para administrar y controlar todo el gráfico de nodos? . La selección y construcción de nodos y enlaces de nodos depende de los parámetros de reproducción (tipo y funcionamiento de clips de audio y vídeo, etc.).
Por lo general, los enlaces de nodos se construyen según el siguiente patrón:
Nodos de entrada (nodo fuente) - múltiples nodos de procesamiento (nodos decodificadores) o códecs... - nodos de salida (nodos receptores).
OpenCORE también incluye códecs multimedia de código abierto, como vídeo (como MPEG-4, H.264), audio (como MP3, AAC, MIDI) y voz (como AMRNB, AMR WB ). ¿OpenMAX IL utilizado por OpenCORE? ¿Marco para integrar códecs en el marco openCORE? . La API OpenMAX IL es muy conocida en el mundo móvil integrado y proporciona una nueva capa de abstracción para la portabilidad de componentes.
Integre el procesamiento de sonido en el reproductor multimedia de Android
Dos pasos principales:
1. Agregue soporte para la biblioteca de sonidos en el backend de openCORE.
2. Agregar soporte para nodos de procesamiento de sonido en openCORE del reproductor multimedia (capa de aplicación).
El primer paso es agregar soporte para la biblioteca de sonidos en el backend de openCORE.
OpenCORE proporciona una variedad de métodos alternativos de integración de códecs, disponibles como nodos de códec OpenMAX, componentes OpenMAX IL y E/S multimedia. . La entrada y salida multimedia se utilizan generalmente para la visualización de salida. Un posible enfoque en la integración del procesamiento de sonido es "empaquetar" la biblioteca de sonido como un nodo de códec OpenMAX o un componente OpenMAX IL. El uso de estos dos métodos se explica a continuación.
1.Nodo de códec OpenMAX
Este método requiere que el motor del reproductor admita varios efectos de audio. Cada componente de efecto se implementa como un nodo, que el motor crea al crear un enlace de ruta de datos. El flujo de datos "fluye" entre los nodos de la cadena de la carretera y es gestionado y controlado por el motor. Al mismo tiempo, a medida que aumenta la cantidad de subprocesos generados por múltiples nodos de efectos, la carga del sistema también aumentará.
2. Componente OpenMAX IL
Los datos procesados por el componente de efectos de sonido son la salida del componente de decodificación, por lo que es mejor colocar la [Decodificación de audio] y el [Efecto de sonido]. ¿Procesando] componentes en la misma capa? . OpenCORE utiliza Open MAX IL para proporcionar operaciones API para todos los códecs. Esta característica de OpenCORE hace que la integración del procesamiento de sonido sea muy sencilla.
¿La biblioteca de procesamiento de sonido está compilada en una biblioteca estática? Después de la optimización con RVCT de ARM, se empaqueta con OpenMAX IL y forma parte de OpenCORE.
Los componentes de [Decodificación de audio] y [Procesamiento de efectos de sonido] se comunican a través de la capa IL de la API. El nodo de decodificación de audio OMX actúa como cliente en OpenCORE y es responsable de la creación, eliminación y transmisión de datos. y pasa el comando de control y el búfer de datos al decodificador de audio, el decodificador de audio procesa el búfer de datos y los devuelve al nodo Nodo. El nodo nodo pasa el búfer de datos al componente [procesamiento de sonido] a su vez.
En comparación con el primer método, este método genera menos carga en el sistema, pero eso no significa que no tenga carga en el sistema. ¿La transmisión de datos debe transferirse dos veces tanto en los componentes como en los nodos (defecto)? Y es necesario coordinar los problemas de comunicación entre los componentes.