HDR 동영상 재생

HDR(High Dynamic Range) 동영상은 고화질 동영상 디코딩 부문의 차세대 기술로, 탁월한 재현 품질을 선사합니다. 이를 위해 HDR은 휘도 구성요소의 동적 범위를 현재의 100cd/m2에서 수천 cd/m2로 늘리고 훨씬 넓은 색공간(BT 2020)을 사용하는데, 이는 TV 공간 내 4K UHD 진화의 핵심적인 요소가 되었습니다.

Android 10은 다음과 같은 HDR 동영상을 지원합니다.

  • HDR10
  • VP9
  • HDR10+

Android 9 이상부터는 MediaCodec이 터널링 모드와 상관없이 HDR 메타데이터를 보고합니다. 비 터널링 모드에서는 디코딩된 데이터와 정적/동적 메타데이터를 함께 가져올 수 있습니다. 정적 메타데이터를 사용하는 HDR10 및 VP9Profile2의 경우 이는 키 KEY_HDR_STATIC_INFO를 포함하는 출력 형식으로 보고됩니다. 동적 메타데이터를 사용하는 HDR10+의 경우 이는 출력 형식의 키 KEY_HDR10_PLUS_INFO로 보고되며 각 출력 프레임마다 변경될 수 있습니다. 자세한 내용은 멀티미디어 터널링을 참고하세요.

Android 7.0부터는 초기 HDR이 HDR 동영상 파이프라인 탐색 및 설정을 위한 올바른 상수를 생성할 수 있도록 지원합니다. 즉, 코덱 유형과 디스플레이 모드를 정의하고, HDR 데이터를 MediaCodec에 전달하고 HDR 디코더에 공급해야 하는 방식을 지정합니다.

이 문서의 목적은 애플리케이션 개발자가 HDR 스트림 재생을 지원하고 OEM과 SOC가 HDR 기능을 사용 설정할 수 있도록 돕는 데 있습니다.

지원되는 HDR 기술

Android 7.0 이상부터는 다음과 같은 HDR 기술이 지원됩니다.

기술 Dolby-Vision HDR10 VP9-HLG VP9-PQ
코덱 AVC/HEVC HEVC VP9 VP9
전송 함수 ST-2084 ST-2084 HLG ST-2084
HDR 메타데이터 유형 동적 고정 없음 정적

Android 7.0에서는 터널링 모드를 통한 HDR 재생만 정의됩니다. 하지만 기기는 불투명한 동영상 버퍼를 사용하여 SurfaceViews의 HDR 재생을 지원하도록 기능을 추가할 수 있습니다. 즉,

  • HDR 재생이 터널링되지 않은 디코더를 사용하여 지원되는지 확인하기 위한 표준 Android API는 없습니다.
  • HDR 재생 기능을 홍보하는 터널링된 동영상 디코더는 HDR 지원 디스플레이에 연결 시 HDR 재생을 지원해야 합니다.
  • HDR 콘텐츠의 GL 구성요소는 AOSP Android 7.0 버전에서 지원되지 않습니다.

탐색

HDR 재생에는 HDR 지원 디코더 및 HDR 지원 디스플레이 연결이 필요합니다. 일부 기술은 구체적인 추출기를 선택적으로 요구하기도 합니다.

디스플레이

애플리케이션은 새로운 Display.getHdrCapabilities를 사용하여 지정된 디스플레이에서 지원하는 HDR 기술을 쿼리해야 합니다. 이는 기본적으로 CTA-861.3에 정의된 EDID 정적 메타데이터 데이터 블록의 정보입니다.

  • public Display.HdrCapabilities getHdrCapabilities()
    디스플레이의 HDR 기능을 반환합니다.
  • Display.HdrCapabilities
    디스플레이의 HDR 기능을 캡슐화합니다. 지원하는 HDR 유형과 원하는 휘도 데이터에 관한 세부정보를 예로 들 수 있습니다.

상수:

  • int HDR_TYPE_DOLBY_VISION
    Dolby Vision 지원
  • int HDR_TYPE_HDR10
    HDR10/PQ 지원
  • int HDR_TYPE_HDR10_PLUS
    HDR10+ 지원
  • int HDR_TYPE_HLG
    Hybrid Log-Gamma 지원
  • float INVALID_LUMINANCE
    잘못된 휘도 값

공개 메서드:

  • float getDesiredMaxAverageLuminance()
    이 디스플레이에 원하는 콘텐츠 최대 프레임 평균 휘도 데이터(cd/cd/m2)를 반환합니다.
  • float getDesiredMaxLuminance()
    이 디스플레이에 원하는 콘텐츠 최대 휘도 데이터(cd/cd/m2)를 반환합니다.
  • float getDesiredMinLuminance()
    이 디스플레이에 원하는 콘텐츠 최소 휘도 데이터(cd/cd/m2)를 반환합니다.
  • int[] getSupportedHdrTypes()
    이 디스플레이의 지원되는 HDR 유형을 가져옵니다(상수 확인). 디스플레이에서 HDR을 지원하지 않으면 빈 배열을 반환합니다.

디코더

애플리케이션은 기존 CodecCapabilities.profileLevels API를 사용하여 새로운 HDR 지원 프로필의 지원을 확인해야 합니다.

Dolby-Vision

MediaFormat mime 상수:

String MIMETYPE_VIDEO_DOLBY_VISION

MediaCodecInfo.CodecProfileLevel 프로필 상수:

int DolbyVisionProfileDvavPen
int DolbyVisionProfileDvavPer
int DolbyVisionProfileDvheDen
int DolbyVisionProfileDvheDer
int DolbyVisionProfileDvheDtb
int DolbyVisionProfileDvheDth
int DolbyVisionProfileDvheDtr
int DolbyVisionProfileDvheStn

Dolby Vision 동영상 계층 및 메타데이터는 동영상 애플리케이션에 의해 프레임당 단일 버퍼로 결합되어야 합니다. 이는 Dolby-Vision을 지원하는 MediaExtractor에 의해 자동으로 이루어집니다.

HEVC HDR 10

MediaCodecInfo.CodecProfileLevel 프로필 상수:

int HEVCProfileMain10HDR10
int HEVCProfileMain10HDR10Plus

VP9 HLG 및 PQ

MediaCodecInfo.CodecProfileLevel 프로필 상수:

int VP9Profile2HDR
int VP9Profile2HDR10Plus
int VP9Profile3HDR
int VP9Profile3HDR10Plus

플랫폼에서 HDR 지원 디코더를 지원하는 경우 HDR 지원 추출기도 지원해야 합니다.

터널링된 디코더만 HDR 콘텐츠 재생을 보장합니다. 터널링되지 않은 디코더에 의한 재생은 HDR 정보가 사라지고 콘텐츠가 SDR 컬러 볼륨으로 평면화되는 결과로 이어질 수 있습니다.

추출기

다음 컨테이너는 Android 7.0의 다양한 HDR 기술에 사용할 수 있습니다.

기술 Dolby-Vision HDR10 VP9-HLG VP9-PQ
컨테이너 MP4 MP4 WebM WebM

트랙(또는 파일)에 HDR 지원이 필요한지를 알아내는 기능은 플랫폼에서 지원하지 않습니다. 그러나 애플리케이션은 코덱 관련 데이터를 파싱하여 트랙에 구체적인 HDR 프로필이 필요한지 파악할 수 있습니다.

요약

아래 표에는 각 HDR 기술의 구성요소 요구사항이 나와 있습니다.

기술 Dolby-Vision HDR10 VP9-HLG VP9-PQ
지원되는 HDR 유형(디스플레이) HDR_TYPE_DOLBY_VISION HDR_TYPE_HDR10 HDR_TYPE_HLG HDR_TYPE_HDR10
컨테이너(추출기) MP4 MP4 WebM WebM
디코더 MIMETYPE_VIDEO_DOLBY_VISION MIMETYPE_VIDEO_HEVC MIMETYPE_VIDEO_VP9 MIMETYPE_VIDEO_VP9
프로필(디코더) Dolby 프로필 중 하나 HEVCProfileMain10HDR10 VP9Profile2HDR 또는 VP9Profile3HDR VP9Profile2HDR 또는 VP9Profile3HDR

참고:

  • Dolby-Vision 비트스트림은 Dolby에서 정의한 방식으로 MP4 컨테이너에 패키징됩니다. 애플리케이션은 자체 Dolby 지원 추출기를 구현할 수 있습니다. 단, Dolby에서 정의한 것처럼 애플리케이션이 상응하는 계층의 액세스 유닛을 디코더의 단일 액세스 유닛으로 패키징해야 합니다.
  • 플랫폼은 HDR 지원 추출기를 지원할 수 있지만 상응하는 HDR 지원 디코더는 지원할 수 없습니다.

재생

애플리케이션은 HDR 재생 지원을 확인한 후 비 HDR 콘텐츠를 재생하는 것과 거의 흡사한 방식으로 HDR 콘텐츠를 재생할 수 있지만 다음과 같은 주의사항이 요구됩니다.

  • Dolby-Vision의 경우 구체적인 미디어 파일/트랙에 HDR 지원 디코더가 필요한지는 즉각적으로 확인할 수 없습니다. 애플리케이션은 이 정보를 미리 확보하거나 MediaFormat의 코덱 관련 데이터 섹션을 파싱하여 이 정보를 획득할 수 있어야 합니다.
  • CodecCapabilities.isFormatSupported는 터널링된 디코더의 기능이 이러한 프로필을 지원하는 데 필요한지 고려하지 않습니다.

HDR 플랫폼 지원 사용 설정

SoC 공급업체 및 OEM은 추가 작업을 실행하여 기기에 HDR 플랫폼 지원을 사용 설정해야 합니다.

HDR과 관련된 Android 7.0의 플랫폼 변경사항

다음은 OEM 및 SOC가 알고 있어야 하는 몇 가지 중요한 플랫폼(애플리케이션/네이티브 계층) 관련 변경사항입니다.

디스플레이

하드웨어 구성

HDR 지원 플랫폼은 HDR 콘텐츠와 비 HDR 콘텐츠의 블렌딩을 지원해야 합니다. 정확한 블렌딩 특성과 작업은 Android 7.0에서 정의되지 않지만 일반적으로 프로세스는 다음과 같은 단계를 따릅니다.

  1. 계층의 색상, 마스터링 및 잠재적인 동적 메타데이터에 따라 합성되어야 하는 모든 계층을 포함하는 선형 색 공간/볼륨을 파악합니다.
    디스플레이에서 바로 합성하는 경우 이는 디스플레이의 컬러 볼륨과 일치하는 선형 공간일 수 있습니다.
  2. 모든 계층을 일반 색 공간으로 변환합니다.
  3. 블렌딩을 실행합니다.
  4. HDMI를 통해 표시하는 경우:
    1. 블렌딩 장면의 색, 마스터링과 잠재적인 동적 메타데이터를 파악합니다.
    2. 결과로 반환되는 블렌딩된 장면을 파생된 색 공간/볼륨으로 변환합니다.
  5. 디스플레이에 직접 표시하는 경우 결과로 반환되는 블렌딩된 장면을 장면 생성을 위한 필수 표시 신호로 변환합니다.

디스플레이 탐색

HDR 디스플레이 탐색은 HWC2를 통해서만 지원됩니다. 기기 구현자가 Android 7.0으로 출시된 HWC2 어댑터를 선택적으로 사용 설정해야만 이 기능이 작동합니다. 따라서 플랫폼은 HWC2 지원을 추가하거나 AOSP 프레임워크를 확장하여 이러한 정보를 제공할 수 있도록 해야 합니다. HWC2는 새로운 API를 노출시켜 HDR 정적 데이터를 프레임워크와 애플리케이션에 전파합니다.

HDMI

  • 연결된 HDMI 디스플레이는 CTA-861.3 섹션 4.2에 정의된 HDMI EDID를 통해 HDR 기능을 홍보합니다.
  • 다음과 같은 EOTF 매핑을 사용해야 합니다.
    • ET_0 기존 감마 - SDR 휘도 범위: 어떠한 HDR 유형에도 매핑되지 않음
    • ET_1 기존 감마 - HDR 휘도 범위: 어떠한 HDR 유형에도 매핑되지 않음
    • ET_2 SMPTE ST 2084 - HDR 유형 HDR10에 매핑됨
  • Dolby Vision의 신호 또는 HDMI를 통한 HLG 지원은 관련자가 정의한 방식대로 이루어집니다.
  • HWC2 API는 부동에 의해 선호되는 휘도 값을 사용하므로 8비트 EDID 값을 적절한 방식으로 해석해야 합니다.

디코더

플랫폼은 HDR을 지원하는 터널링된 디코더를 추가하고 디코더의 HDR 지원을 홍보해야 합니다. 일반적으로 HDR 지원 디코더는 다음을 지원해야 합니다.

  • 터널링된 디코딩 지원(FEATURE_TunneledPlayback)
  • HDR 정적 메타데이터(OMX.google.android.index.describeHDRColorInfo) 및 디스플레이/하드웨어 구성요소의 전파 지원. HLG의 경우 적절한 메타데이터를 디스플레이에 제출해야 함
  • 색 설명(OMX.google.android.index.describeColorAspects) 및 디스플레이/하드웨어 구성의 전파를 지원해야 함
  • 관련 표준에 의해 정의된 것처럼 HDR에 내장된 메타데이터를 지원해야 합니다.

Dolby Vision 디코더 지원

Dolby Vision을 지원하려면 플랫폼에서 Dolby-Vision을 지원하는 HDR OMX 디코더를 추가해야 합니다. Dolby Vision의 구체적인 특성을 감안하면 이는 보통 1개 이상의 AVC 또는 HEVC 디코더 주변의 래퍼 디코더와 컴포지터입니다. 이러한 디코더는 다음을 준수해야 합니다.

  • mime 유형 '동영상/dolby-vision'을 지원해야 합니다.
  • 지원되는 Dolby Vision 프로필/수준을 홍보해야 합니다.
  • Dolby에서 정의한 것처럼 모든 계층의 하위 액세스 유닛을 포함하는 액세스 유닛을 허용해야 합니다.
  • Dolby에서 정의한 코덱 관련 데이터를 허용해야 합니다. Dolby Vision 프로필/수준을 포함하고 있고 내부 디코더의 코드 관련 데이터를 포함하고 있을 가능성이 있는 데이터를 예로 들 수 있습니다.
  • Dolby의 요구에 따라 Dolby Vision 프로필/계층 간의 적응형 전환을 지원해야 합니다.

디코더를 구성할 때는 실제 Dolby 프로필이 코덱에 전달되지 않습니다. 이는 디코더가 시작된 이후에 코덱 관련 데이터를 통해서만 이루어집니다. 플랫폼은 여러 개의 Dolby Vision 디코더를 지원할 수 있습니다(AVC 프로필에 하나, 구성이 진행되는 동안 기본 코드를 초기화할 수 있도록 HEVC 프로필에 하나). 단일 Dolby Vision 디코더가 두 프로필 유형을 전부 지원하는 경우 디코더는 프로필 간의 동적 전환이 적응형 방식으로 이루어지도록 지원해야 합니다.

플랫폼에서 일반 HDR 디코더 지원 기능에 외에 Dolby-Vision을 지원하는 디코더까지 제공하는 경우 다음이 충족되어야 합니다.

  • HDR 재생을 지원하지 않는 경우에도 Dolby-Vision 인식 추출기를 제공해야 합니다.
  • Dolby에서 정의한 것처럼 비전 프로필을 지원하는 디코더를 제공해야 합니다.

HDR10 디코더 지원

HDR10을 지원하려면 플랫폼에 HDR10을 지원하는 OMX 디코더를 추가해야 합니다. 이는 HDMI 관련 메타데이터를 파싱하고 처리할 수 있는 터널링된 HEVC 디코더인 경우가 일반적입니다. 이러한 디코더는 일반 HDR 디코더를 지원해야 할 뿐만 아니라 아래와 같은 내용도 충족해야 합니다.

  • mime 유형 '동영상/hevc'를 지원해야 합니다.
  • 지원되는 HEVCMain10HDR10을 홍보해야 합니다. HEVCMain10HRD10 프로필을 지원하려면 HEVCMain10 프로필도 지원해야 하며, 이를 위해서는 같은 수준에서 HEVCMain 프로필을 지원해야 합니다.
  • 마스터링 메타데이터 SEI 블록, 그리고 SPS에 포함된 다른 HDR 관련 정보를 파싱할 수 있도록 지원해야 합니다.

VP9 디코더 지원

VP9 HDR을 지원하려면 플랫폼에 VP9 Profile2를 지원하는 HDR OMX 디코더를 추가해야 합니다. 이는 HDMI 관련 메타데이터도 처리할 수 있도록 지원하는 터널링된 VP9 디코더인 경우가 일반적입니다. 이러한 디코더는 일반 HDR 디코더를 지원해야 할 뿐만 아니라 다음과 같은 내용도 충족해야 합니다.

  • mime 유형 'video/x-vnd.on2.vp9'를 지원해야 합니다.
  • 지원되는 VP9Profile2HDR을 홍보해야 합니다. VP9Profile2HDR 프로필을 지원하려면 같은 수준에서 VP9Profile2 프로필도 지원해야 합니다.

추출기

Dolby Vision 추출기 지원

Dolby Vision 디코더를 지원하는 플랫폼에는 Dolby 동영상 콘텐츠와 관련된 Dolby 추출기(Dolby Extractor)를 추가해야 합니다.

  • 일반적인 MP4 추출기는 파일에서 기본 계층만 추출할 수 있으며 향상 계층이나 메타데이터 계층은 추출할 수 없습니다. 따라서 파일에서 데이터를 추출하려면 특수한 Dolby 추출기가 필요합니다.
  • Dolby 추출기는 Dolby 동영상 트랙(그룹)마다 1~2개의 트랙을 노출시켜야 합니다.
    • 결합된 2/3 계층 Dolby 스트림을 위한 '동영상/dolby-vision' 유형을 포함하는 Dolby Vision HDR 트랙, 기본/메타데이터/향상 계층의 액세스 유닛을 단일 버퍼로 패키징하여 단일 HDR 프레임으로 디코딩하는 방법을 정의하는 HDR 트랙의 액세스 유닛 형식은 Dolby에서 정의해야 합니다.
    • Dolby Vision 동영상 트랙에 역호환되는 별개의 기본 계층(BL)이 포함된 경우, 추출기는 이를 별개의 '동영상/avc' 또는 '동영상/hevc' 트랙으로 노출시켜야 합니다. 추출기는 이 트랙의 일반 AVC/HEVC 액세스 유닛을 제공해야 합니다.
    • BL 트랙은 동일한 track-unique-ID('추적 ID')를 HDR 트랙으로 보유해야 합니다. 그래야 앱이 두 트랙이 동일한 동영상의 인코딩임을 이해할 수 있습니다.
    • 애플리케이션은 플랫폼의 기능에 따라 어떤 트랙을 선택할지 결정할 수 있습니다.
  • Dolby Vision 프로필/수준은 HDR 트랙의 추적 형식으로 노출되어야 합니다.
  • Dolby-Vision을 지원하는 디코더를 제공하는 플랫폼은 HDR 재생을 지원하지 않는 경우에도 Dolby-Vision 인식 추출기를 제공해야 합니다.

HDR10 및 VP9 HDR 추출기 지원

HDR10 또는 VP9 HLG 지원을 위한 추가적인 추출기 요구사항은 없습니다. 플랫폼은 MP4에서 VP9 PQ를 지원하도록 MP4 추출기를 확장해야 합니다. HDR 정적 메타데이터는 VP9 PQ 비트스트림으로 전파되어야 하며, 이때 이 메타데이터가 일반적인 MediaExtractor => MediaCodec 파이프라인을 통해 VP9 PQ 디코더와 디스플레이로 파싱되어야 합니다.

Dolby Vision 지원을 위한 Stagefright 확장자

플랫폼에 Stagefright에 대한 Dolby Vision 형식 지원을 추가해야 합니다.

  • 압축된 포트를 위한 포트 정의 쿼리 지원
  • DV 디코더를 위한 프로필/수준 열거 지원
  • DV HDR 트랙을 위한 DV 프로필/수준 노출 지원

기술별 구현 세부정보

HDR10 디코더 파이프라인

그림 1. HDR10 파이프라인

HDR10 비트스트림은 MP4 컨테이너에 패키징됩니다. 애플리케이션은 일반 MP4 추출기를 사용하여 프레임 데이터를 추출한 후 디코더로 전송합니다.

  • MPEG4 추출기
    HDR10 비트스트림은 MPEG4Extractor에 의해 그저 일반적인 HEVC 스트림으로 인식되며, '동영상/HEVC' 유형을 포함하는 HDR 트랙이 추출됩니다. 프레임워크는 Main10HDR10 프로필이 그 트랙을 디코딩할 수 있도록 지원하는 HEVC 동영상 디코더를 선택합니다.
  • HEVC 디코더
    HDR 정보는 SEI 또는 SPS 형식입니다. HEVC 디코더는 HDR 정보가 포함된 프레임부터 수신합니다. 이어서 디코더는 HDR 정보를 추출하고 HDR 동영상을 디코딩하고 있음을 애플리케이션에 알립니다. HDR 정보는 디코더 출력 형식으로 번들화되고 나중에 노출 영역으로 전파됩니다.

공급업체 작업

  1. 지원되는 HDR 디코더 프로필과 수준 OMX 유형을 홍보합니다. 예:
    OMX_VIDEO_HEVCProfileMain10HDR10(및 Main10)
  2. 색인 'OMX.google.android.index.describeHDRColorInfo'의 지원을 구현합니다.
  3. 색인 'OMX.google.android.index.describeColorAspects'의 지원을 구현합니다.
  4. 마스터링 메타데이터의 SEI 파싱 지원을 구현합니다.

Dolby Vision 디코더 파이프라인

그림 2. Dolby Vision 파이프라인

Dolby 비트스트림은 Dolby에서 정의한 것처럼 MP4 컨테이너에 패키징됩니다. 이론적으로는 애플리케이션이 일반 MP4 추출기를 사용하여 기본 계층, 향상 계층과 메타데이터 계층을 독립적으로 추출할 수 있습니다. 하지만 이는 현재의 Android MediaExtractor/MediaCodec 모델과 맞지 않습니다.

  • DolbyExtractor:
    • Dolby 비트스트림은 다양한 계층을 각 dolby 동영상 트랙(그룹)의 트랙 1~2개로 노출시키는 DolbyExtractor에 의해 인식됩니다.
      • 결합된 2/3계층 dolby 스트림을 위한 '동영상/dolby-vision' 유형을 포함하는 HDR 트랙, 기본/메타데이터/향상 계층의 액세스 유닛을 단일 버퍼로 패키징하여 단일 HDR 프레임으로 디코딩하는 방법을 정의하는 HDR 트랙의 액세스 유닛 형식은 Dolby에서 정의해야 합니다.
      • (BL만 역호환되는 경우의 선택사항) BL 트랙에는 AVC/HEVC 디코더와 같은 일반 MediaCodec 디코더로 디코딩되어야 하는 기본 계층만 포함됩니다. 추출기는 이 트랙의 일반 AVC/HEVC 액세스 유닛을 제공해야 합니다. 이 BL 트랙은 동일한 track-unique-ID('추적 ID')를 Dolby 트랙으로 보유해야 합니다. 그래야 애플리케이션이 두 트랙이 동일한 동영상의 인코딩임을 이해할 수 있습니다.
    • 애플리케이션은 플랫폼의 기능에 따라 어떤 트랙을 선택할지 결정할 수 있습니다.
    • HDR 트랙에는 구체적인 HDR 유형이 포함되기 때문에 프레임워크에서 그 트랙을 디코딩하기 위한 Dolby 동영상 디코더를 선택합니다. BL 트랙은 일반 AVC/HEVC 동영상 디코더에 의해 디코딩됩니다.
  • DolbyDecoder:
    • DolbyDecoder는 모든 계층(EL+BL+MD 또는 BL+MD)의 필수 액세스 유닛을 포함하는 액세스 유닛을 수신합니다.
    • 개별 계층의 CSD(SPS+PPS+VPS 등의 코덱 관련 데이터) 정보는 dolby에서 정의할 수 있도록 1개의 CSD 프레임으로 패키징할 수 있습니다. 단일 CSD 프레임을 보유해야 합니다.

Dolby 작업

  1. 추상 Dolby 디코더(HDR 디코더에서 예상하는 버퍼 형식)의 다양한 Dolby 컨테이너 체계(예: BL+EL+MD)와 관련된 액세스 유닛 패키징을 정의합니다.
  2. 추상 Dolby 디코더의 CSD 패키징을 정의합니다.

공급업체 작업

  1. Dolby 추출기를 구현합니다. 이는 Dolby가 구현할 수도 있습니다.
  2. DolbyExtractor를 프레임워크에 통합합니다. 진입점은 frameworks/av/media/libstagefright/MediaExtractor.cpp입니다.
  3. HDR 디코더 프로필 및 수준 OMX 유형을 선언합니다 예:OMX_VIDEO_DOLBYPROFILETYPE(및 OMX_VIDEO_DOLBYLEVELTYP)
  4. 색인 'OMX.google.android.index.describeColorAspects'의 지원을 구현합니다.
  5. 동적 HDR 메타데이터를 각 프레임의 앱과 노출 영역에 전파합니다. 일반적으로 이 정보는 Dolby에서 정의한 것처럼 디코딩된 프레임으로 패키징해야 합니다. 이는 HDMI 표준에서 이를 디스플레이에 전달할 수 있는 방법을 제공하지 않기 때문입니다.

VP9 디코더 파이프라인

그림 3. VP9-PQ 파이프라인

VP9 비트스트림은 WebM 팀에서 정의한 방식에 따라 WebM 컨테이너에 패키징됩니다. 애플리케이션은 WebM 추출기를 사용하여 프레임을 디코더로 전송하기 전에 비트스트림에서 HDR 메타데이터를 추출해야 합니다.

  • WebM 추출기:
  • VP9 디코더:
    • 디코더는 Profile2 비트스트림을 수신한 후 일반 VP9 스트림으로 디코딩합니다.
    • 디코더는 프레임워크에서 모든 HDR 정적 메타데이터를 수신합니다.
    • 디코더는 VP9 PQ 스트림의 비트스트림 액세스 유닛을 통해 정적 메타데이터를 수신합니다.
    • VP9 디코더는 HDR 정적/동적 메타데이터를 디스플레이에 전파할 수 있어야 합니다.

공급업체 작업

  1. 색인 OMX.google.android.index.describeHDRColorInfo의 지원을 구현합니다.
  2. 색인 OMX.google.android.index.describeColorAspects의 지원을 구현합니다.
  3. HDR 정적 메타데이터를 전파합니다.