Red de conocimiento informático - Aprendizaje de código fuente - ¿Es la CPU o la GPU la que aumenta varias veces la velocidad de reproducción de archivos de vídeo?

¿Es la CPU o la GPU la que aumenta varias veces la velocidad de reproducción de archivos de vídeo?

DXVA es el término general para la aceleración de hardware de vídeo, que no sólo se utiliza para la decodificación de datos de vídeo (incluidos H261, MPEG1, MPEG2, H263, MPEG4), sino también para la mezcla alfa, el remuestreo de imágenes, etc. Pero el mayor impacto en la utilización de la CPU durante la reproducción es la decodificación de vídeo, especialmente la decodificación de HDTV. Para sistemas de gama baja, la GPU es la mejor opción para la decodificación de hardware. Sin embargo, el uso de decodificación de hardware también está sujeto a muchas limitaciones en toda la función, especialmente el posprocesamiento de datos de video descomprimidos (como desentrelazado, nitidez y demostración de mosaicos). Por lo tanto, los usuarios que buscan calidad de imagen preferirán renunciar a la decodificación de hardware, pero, por supuesto, el costo es actualizar todo el sistema. Más sobre eso más adelante.

¿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.