HDR (High Dynamic Range) 동영상이 도입된 이후 스트리밍 서비스는 전체 화면 환경에 중점을 두고 HDR 동영상 스트리밍을 시작했습니다. 최근 소셜 미디어 앱에서 HDR 동영상 및 울트라 HDR 지원을 출시하여 다양한 앱에서 HDR 채택에 대한 관심이 증가하고 있음을 보여줍니다.
Android의 HDR 지원
다음은 지난 몇 년간 Android에서 HDR 기술을 지원한 주요 기록입니다.
Android 7
- HDR 동영상 디코딩 및 디스플레이에 대한 초기 지원
- HDR 기능의 지속적인 개선
Android 13
- HDR 동영상 캡처, 인코딩, 디스플레이를 위한 엔드 투 엔드 지원
- SDR과 HDR 간에 표시 가능한 다양한 휘도 범위를 정의하는 SDR 및 HDR 혼합 구성을 도입했습니다.
Android 14
- 울트라 HDR을 사용한 HDR 이미지 지원
HDR을 사용한 스크린샷 지원도 지난 몇 년 동안 발전했으며 여러 번 변경되었습니다.
HDR 스크린샷 기능 개선
이 섹션에서는 최근 Android 업데이트에서 HDR 스크린샷 기능의 진행 상황을 추적합니다.
Android 9
Android의 그래픽 컴포저인 SurfaceFlinger에 HDR 동영상 지원이 도입되었습니다. HDR 동영상 및 스크린샷의 GPU 렌더링은 복잡한 다항식 색조 매퍼로 지원됩니다. 이 색조 매핑 곡선은 디스플레이 색조 매퍼와 항상 일치하지 않으므로 스크린샷은 화면 콘텐츠와 다릅니다.
Android 13
톤 매핑 플러그인이 SurfaceFlinger의 GPU 렌더링 블록에 추가되어 OEM이 디스플레이의 톤 매핑 곡선에 맞는 GPU 셰이더를 제공할 수 있습니다. 스크린샷은 화면에 표시되는 내용과 거의 일치하지만 다음과 같은 차이점이 있습니다.
- 스크린샷은 SDR 형식으로 유지됩니다. 따라서 HDR 장면과 함께 보면 스크린샷 내 HDR 영역이 더 어둡게 보입니다.
- SDR 휘도가 관리되지 않아 스크린샷 내 SDR 콘텐츠가 HDR 콘텐츠처럼 밝게 표시됩니다.
즉, 스크린샷으로 캡처된 HDR 동영상은 SDR 동영상으로 변환됩니다.
Android 14
울트라 HDR은 스크린샷을 찍는 데 상당한 어려움을 야기합니다. 동영상과 달리 이미지는 일반적으로 UI 프레임버퍼 내에서 렌더링되며, 이는 두 가지 주요 의미를 갖습니다.
- 이미지에 주변 UI와 다른 이미지 처리(예: 색조 매핑)를 적용할 수 없습니다.
- 앱은 UI를 렌더링할 때 소스 기반 색조 매핑을 담당합니다.
이 문제를 완화하기 위해 다음과 같은 세 가지 스크린샷 구현이 가능합니다.
- 울트라 HDR 이미지의 HDR 세부정보를 보존하여 스크린샷에서 앱 UI가 어두워집니다.
- 앱 UI 세부정보를 보존하여 울트라 HDR 이미지가 잘립니다.
- HDR 하이라이트를 자르면서 앱 UI를 밝게 하여 타협합니다.
Android 14는 앱 UI를 밝게 하고 HDR 하이라이트를 자르는 세 번째 접근 방식을 구현합니다.
Android 15-QPR1
SurfaceFlinger에는 스크린샷을 위한 로컬 톤 매핑 알고리즘이 포함되어 있습니다. 이 프로세스에는 다음이 포함됩니다.
- 입력 이미지를 더 작은 이미지로 분할합니다.
- 각 이미지의 최대 밝기를 계산하고 각 섹션 내에서 낮은 밝기 값을 삭제합니다.
- 흐리게 처리 및 리샘플링을 통해 계산된 밝기를 보간합니다.
- 보간된 밝기 값을 기반으로 매개변수가 지정된 Reinhard 색조 매퍼를 입력 이미지에 적용합니다.
이 알고리즘은 다음 예와 같이 Android 14와 Android 15-QPR1 간에 스크린샷이 크게 개선되었음을 보여줍니다.
예 1은 울트라 HDR이 포함된 Chrome 페이지 위에 겹쳐진 HDR 동영상의 스크린샷입니다. UI 색상은 새 구현에서 대부분 보존되며 이미지가 더 이상 잘리지 않습니다.
Android 14 Android 15-QPR1 그림 1. 예 1의 Android 14와 Android 15-QPR1 비교
예 2는 설정 위에 겹쳐진 HDR 동영상의 스크린샷과 후속 스크린샷입니다. Android 14에서는 스크린샷 색상이 점점 더 어두워집니다. Android 15-QPR1에서는 톤 매퍼가 UI 색상을 올바르게 복제하고 보존합니다.
Android 14 Android 15-QPR1 그림 2. 예 2의 Android 14와 Android 15-QPR1 비교
Android 16
울트라 HDR과 마찬가지로 HDR 스크린샷은 스크린샷 파일에 게인 맵을 저장하여 렌더링 중에 HDR 표현을 복구합니다. 그러나 울트라 HDR과 달리 스크린샷은 PNG 스크린샷을 처리하는 시스템과의 하위 호환성을 위해 PNG 형식으로 유지됩니다.
스크린샷 생성 세부정보는 다음과 같습니다.
- HDR 콘텐츠가 기기에 표시되면 FP16 픽셀을 사용하여 스크린샷이 생성됩니다.
- Android 15-QPR1에 설명된 로컬 색조 매퍼는 8비트 기본 SDR 렌더링을 생성합니다.
- 8비트 게인맵은 SDR 기본 렌더링과 HDR 렌더링을 결합하여 생성됩니다.
- SDR 기본 렌더링과 게인맵은 단일 PNG 파일로 인코딩됩니다.
PNG 인코딩 세부정보는 다음과 같습니다.
- 게인맵은 게인맵의 ISO 21496-1 메타데이터가 포함된 gmAP 청크가 포함된 PNG 이미지로 인코딩됩니다.
- SDR 기본 렌더링은 ISO 21496-1 메타데이터 버전이 포함된 gmAP 청크가 포함된 PNG 이미지로 인코딩됩니다. 이 PNG 이미지에는 인코딩된 gainmap PNG 전체가 포함된 gdAT 청크도 포함되어 있습니다.
다음 그림은 PNG 청크의 레이아웃을 보여줍니다.
그림 3. PNG 청크의 레이아웃
Android 16에서는 PNG 코덱이 이러한 PNG의 인코딩과 디코딩을 모두 지원합니다. 앱은 Ultra HDR과 동일한 방식으로 게인맵이 포함된 PNG를 표시할 수 있습니다.