¿Es la CPU o la GPU la que aumenta varias veces la velocidad de reproducción de archivos de vídeo?
¿Cómo funciona el sistema cuando la decodificación por hardware está vigente? Ahora tenemos dos procesadores, CPU y GPU. Intercambian datos a través del bus PCI/AGP/PCIE.
1.La CPU lee datos sin procesar del sistema de archivos (filtro de origen de DirectSHow) y separa los datos de video comprimidos (demuxer). Ponlo en la memoria del sistema.
2. La CPU proporciona los datos de video comprimidos a la GPU. En este momento, el bus está ocupado y los datos comprimidos se copiarán de la memoria del sistema a la memoria de video de la tarjeta gráfica.
3. La CPU requiere que la GPU inicie la decodificación del hardware. En este momento, la CPU se marea y la GPU se vuelve ocupada. Por supuesto, la CPU comprueba periódicamente qué tan ocupada está la GPU.
4. La GPU comienza a decodificar los datos de vídeo utilizando sus propios circuitos (estos circuitos ya están en la memoria de vídeo), mientras los datos descomprimidos todavía están en la memoria de vídeo.
5. Los datos de vídeo no se pueden mostrar inmediatamente después de completarse la decodificación porque aún requieren posprocesamiento, como desentrelazado, desplegable 3:2, etc. Luego, la GPU utilizará su propio circuito de posprocesamiento para procesar el video mientras la CPU permanece inactiva.
6 Una vez completado el posprocesamiento, los datos sin comprimir se mostrarán en la pantalla y la GPU luego lo hará. Comience a procesar el escalado del video, brillo, gamma, etc. La CPU todavía está inactiva
7. La GPU finalmente completa su trabajo, ¿dónde están los datos de video a continuación? Notifique a la CPU que la GPU está en reposo. La CPU está ocupada nuevamente, regrese al paso 1.
Como se mencionó anteriormente, la CPU puede estar inactiva cuando la decodificación de hardware está en vigor, pero se deben cumplir algunas condiciones para que surta efecto. La razón clave de esto es que las velocidades de los buses PCI, AGP y PCIE son muy diferentes de las velocidades de la memoria del sistema de la CPU y de la memoria de la tarjeta gráfica GPU. El bus PCI tiene una velocidad de 133 MB/S, el bus AGP8X tiene una velocidad de 2,1 GB/S y el bus PCIE16X tiene una velocidad de 4 GB/S. La memoria de la GPU es varias veces más rápida. Si está interesado, puede comparar las velocidades del bus de memoria y del bus AGP/PCIE entre generaciones. Dado que el bus que conecta la CPU y la GPU es muy lento, una vez que los datos de video (ya sea antes o después de la descompresión) se entregan a la GPU, es responsabilidad de la GPU procesarlos hasta su visualización final.
Si la GPU no puede completarse o no deja que se complete en ninguno de los 1 a 5 pasos anteriores, entonces la decodificación del hardware de video no tendrá efecto y la CPU será responsable.
Por supuesto, podrías preguntarte, tal vez la CPU sea lenta, tal vez transmitir datos en un bus de velocidad de tortuga, con la GPU quitando parte del trabajo, sea aún más rápido que hacerlo todo con la CPU. ? Tal vez sea así, pero en la arquitectura Directshow, los filtros (separadores, decodificadores, posprocesadores, renderizadores) que representan todos los aspectos del procesamiento de datos de video deben negociar un método de almacenamiento de datos de video que todos puedan aceptar. Si el filtro El servidor dice I. Solo se puede reproducir en la memoria del sistema, entonces todos tienen que jugar en la memoria, y la GPU y la memoria de video deben renunciar.