주요 내용으로 건너뛰기

Video Decoding

Video Decoding 섹션에서는 개발자가 하드웨어 또는 소프트웨어 비디오 디코딩 기능을 이용해 TouchGFX HAL을 향상시킬 수 있습니다.

TouchGFX Generator Video Decoding 설정

Further reading
TouchGFX에서 MJPEG Video Decoding을 설정하는 방법에 대한 자세한 정보는 MJPEG Video 문서를 참조하십시오.

비디오 소프트웨어 디코딩에서는 애플리케이션 프레임 버퍼에 사용되는 것과는 다른 Decoding Format을 사용할 수 있습니다. 비디오 하드웨어 디코딩은 애플리케이션 프레임 버퍼와 동일한 픽셀 형식을 가진 비디오 RGB 버퍼만 지원합니다.

Note
모든 MCU가 하드웨어 비디오 디코딩을 지원하는 것은 아닙니다.
오디오는 지원되지 않습니다.

Type

기본적으로 Video Decoding의 "Type"은 비활성화되어 있습니다. 필요한 주변 장치가 STM32CubeMX에서 활성화되어 있지 않은 경우에는 "Software"와 "Hardware"가 모두 회색으로 표시됩니다. 회색으로 비활성화된 옵션 위로 마우스를 가져가면 필요한 주변 장치를 확인할 수 있습니다.

"Hardware"에 대한 Video Type 종속성을 보여주는 정보 상자

  • Software - STM32CubeMX의 Middleware and Software Packs 섹션에서 LIBJPEG가 활성화된 경우에는 "Software" 옵션을 선택할 수 있고 소프트웨어 디코더가 생성됩니다. 즉, TouchGFX Generator가 소프트웨어 MJPEG 디코더를 생성합니다.

STM32CubeMX 프로젝트에서 활성화된 LIBJPEG

  • Hardware - Multimedia 섹션에서 JPEG IP가 활성화되어 있고 TouchGFX Generator에서 CMSIS 호환 RTOS가 선택된 경우, "Hardware" 옵션을 선택할 수 있습니다.

STM32CubeMX 프로젝트에서 활성화된 JPEG IP

Further reading
다양한 비디오 디코딩 시나리오에 대한 구체적인 코드 예제는 Scenarios 섹션을 참조하십시오.

Concurrent Videos

"Concurrent Videos" 옵션을 사용하면 특정한 시점에 GUI의 동일한 화면에서 가장 많은 양의 비디오를 동시에 디코딩할 수 있습니다. 화면에서 하나의 비디오만 디코딩하기를 원하는 경우에는 "Number of Videos"를 1로 설정할 수 있습니다.

최대 4개의 비디오를 동시에 디코딩할 수 있습니다.

Strategy

비디오 디코딩 전략과 관련해 개발자에게 세 가지 옵션이 제공됩니다.

  • Direct to Framebuffer - 비디오가 UI 스레드에서 디코딩됩니다. 다른 전략보다 느릴 수 있지만 비디오 프레임 버퍼가 없으므로 램이 절약됩니다.
  • Single Buffer - 전용 버퍼에서 별도의 작업으로 비디오가 디코딩됩니다. 이 버퍼는 내부 메모리에서 할당이 됩니다.
  • Double Buffer - 같은 메모리 비용으로 더 나은 성능을 얻을 수 있도록 2개의 전용 버퍼에서 별도의 작업으로 비디오가 디코딩됩니다.

단일 또는 이중 프레임 버퍼 전략을 사용할 때는 CMSIS 호환 OS를 활성화해야 합니다.

CMSIS RTOS 요구 사항에 대한 정보 상자:

Note
이중 버퍼 전략을 사용할 때는 메모리 소비량에 주의해야 합니다.
Further reading
비디오 디코딩을 위해 FreeRTOS를 구성하는 방법에 대한 구체적 예제는 Scenarios를 참조하십시오.

Decode Format

소프트웨어 디코딩의 경우, 개발자는 프레임 버퍼의 픽셀 형식에 관계 없이 RGB 버퍼의 픽셀 형식을 선택할 수 있습니다. TouchGFX Generator는 형식이 다른 경우 DMA2D(ChromART)가 픽셀 형식 변환을 수행할 수 있는 코드를 생성합니다.

  • RGB565 - 비디오 RGB 버퍼는 16비트입니다.
  • RGB888 - 비디오 RGB 버퍼는 24비트입니다.
  • ARGB8888 - 비디오 RGB 버퍼는 32비트입니다. 알파 값은 255입니다.
Tip
RGB888(24비트) 애플리케이션의 RGB565(16비트)에 비디오 디코딩 버퍼가 있으면 개발자가 메모리 공간을 줄일 수 있습니다.

Buffer size

버퍼 너비 및 높이 설정은 애플리케이션에서 가장 큰 비디오보다 크거나 같아야 합니다. 너비는 32로 나누기가 가능해야 합니다.