Phát video HDR

Video có dải động cao (HDR) là bước đột phá tiếp theo trong quá trình giải mã video chất lượng cao, mang lại chất lượng tái tạo cảnh không gì sánh bằng. Điều này được thực hiện bằng cách tăng đáng kể dải động của thành phần độ chói (từ 100 cd/m2 hiện tại lên hàng nghìn cd/m2) và bằng cách sử dụng không gian màu rộng hơn nhiều (BT 2020). Đây hiện là yếu tố trung tâm của quá trình phát triển 4K UHD trong không gian TV.

Android 10 hỗ trợ các video HDR sau.

  • HDR10
  • VP9
  • HDR10+

Kể từ Android 9 trở lên, MediaCodec sẽ báo cáo siêu dữ liệu HDR bất kể chế độ được tạo đường hầm. Bạn có thể nhận dữ liệu đã giải mã cùng với siêu dữ liệu tĩnh/động ở chế độ không được tạo đường hầm. Đối với HDR10 và VP9Profile2 sử dụng siêu dữ liệu tĩnh, các siêu dữ liệu này sẽ được báo cáo ở định dạng đầu ra bằng khoá KEY_HDR_STATIC_INFO. Đối với HDR10+ sử dụng siêu dữ liệu động, thông tin này được báo cáo bằng khoá KEY_HDR10_PLUS_INFO trên định dạng đầu ra và có thể thay đổi cho từng khung hình đầu ra. Hãy xem phần Chuyển tiếp nội dung đa phương tiện để biết thêm thông tin.

Kể từ Android 7.0, tính năng hỗ trợ HDR ban đầu bao gồm việc tạo các hằng số thích hợp để khám phá và thiết lập quy trình video HDR. Điều đó có nghĩa là xác định các loại bộ mã hoá và giải mã và chế độ hiển thị, đồng thời chỉ định cách dữ liệu HDR phải được truyền đến MediaCodec và được cung cấp cho bộ giải mã HDR.

Mục đích của tài liệu này là giúp nhà phát triển ứng dụng hỗ trợ phát trực tuyến HDR, đồng thời giúp OEM và SOC bật các tính năng HDR.

Các công nghệ HDR được hỗ trợ

Kể từ Android 7.0 trở lên, các công nghệ HDR sau đây được hỗ trợ.

Công nghệ Dolby-Vision HDR10 VP9-HLG VP9-PQ
Bộ mã hoá và giải mã AVC/HEVC HEVC VP9 VP9
Hàm truyền ST-2084 ST-2084 HLG ST-2084
Loại siêu dữ liệu HDR Động Tĩnh Không có Tĩnh

Trong Android 7.0, chỉ xác định chế độ phát HDR qua chế độ đường hầm, nhưng các thiết bị có thể thêm tính năng hỗ trợ phát HDR trên SurfaceViews bằng cách sử dụng vùng đệm video mờ. Hay nói cách khác:

  • Không có API Android tiêu chuẩn nào để kiểm tra xem tính năng phát HDR có được hỗ trợ bằng trình giải mã không được tạo đường hầm hay không.
  • Bộ giải mã video được tạo đường hầm quảng cáo khả năng phát HDR phải hỗ trợ tính năng phát HDR khi kết nối với màn hình có khả năng phát HDR.
  • Bản phát hành AOSP Android 7.0 không hỗ trợ thành phần kết hợp GL của nội dung HDR.

Khám phá

Tính năng Phát lại HDR yêu cầu bộ giải mã hỗ trợ HDR và kết nối với màn hình hỗ trợ HDR. Một số công nghệ có thể yêu cầu một trình trích xuất cụ thể.

Màn hình

Các ứng dụng sẽ sử dụng API Display.getHdrCapabilities mới để truy vấn các công nghệ HDR mà màn hình được chỉ định hỗ trợ. Về cơ bản, đây là thông tin trong Khối dữ liệu siêu dữ liệu tĩnh EDID như được xác định trong CTA-861.3:

  • public Display.HdrCapabilities getHdrCapabilities()
    Trả về các tính năng HDR của màn hình.
  • Display.HdrCapabilities
    Đóng gói các tính năng HDR của một màn hình nhất định. Ví dụ: loại HDR mà ứng dụng hỗ trợ và thông tin chi tiết về dữ liệu độ chói mong muốn.

Hằng số:

  • int HDR_TYPE_DOLBY_VISION
    Hỗ trợ Dolby Vision.
  • int HDR_TYPE_HDR10
    Hỗ trợ HDR10 / PQ.
  • int HDR_TYPE_HDR10_PLUS
    Hỗ trợ HDR10+.
  • int HDR_TYPE_HLG
    Hỗ trợ Log-Gamma kết hợp.
  • float INVALID_LUMINANCE
    Giá trị độ chói không hợp lệ.

Phương thức công khai:

  • float getDesiredMaxAverageLuminance()
    Trả về dữ liệu độ chói trung bình theo khung hình tối đa của nội dung mong muốn tính bằng cd/cd/m2 cho màn hình này.
  • float getDesiredMaxLuminance()
    Trả về dữ liệu độ chói tối đa của nội dung mong muốn theo đơn vị cd/cd/m2 cho màn hình này.
  • float getDesiredMinLuminance()
    Trả về dữ liệu độ chói tối thiểu của nội dung mong muốn theo đơn vị cd/cd/m2 cho màn hình này.
  • int[] getSupportedHdrTypes()
    Lấy các loại HDR được hỗ trợ của màn hình này (xem hằng số). Trả về mảng trống nếu màn hình không hỗ trợ HDR.

Bộ giải mã

Các ứng dụng sẽ sử dụng API CodecCapabilities.profileLevels hiện có để xác minh khả năng hỗ trợ các hồ sơ có khả năng HDR mới:

Dolby-Vision

Hằng số mime MediaFormat:

String MIMETYPE_VIDEO_DOLBY_VISION

Hằng số hồ sơ MediaCodecInfo.CodecProfileLevel:

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

Các lớp video và siêu dữ liệu Dolby Vision phải được nối vào một vùng đệm duy nhất cho mỗi khung hình bằng các ứng dụng video. Việc này được thực hiện tự động bằng MediaExtractor có khả năng hỗ trợ Dolby-Vision.

HEVC HDR 10

Hằng số hồ sơ MediaCodecInfo.CodecProfileLevel:

int HEVCProfileMain10HDR10
int HEVCProfileMain10HDR10Plus

VP9 HLG và PQ

Hằng số hồ sơ MediaCodecInfo.CodecProfileLevel:

int VP9Profile2HDR
int VP9Profile2HDR10Plus
int VP9Profile3HDR
int VP9Profile3HDR10Plus

Nếu một nền tảng hỗ trợ bộ giải mã có hỗ trợ HDR, thì nền tảng đó cũng sẽ hỗ trợ trình trích xuất có hỗ trợ HDR.

Chỉ có bộ giải mã được tạo đường hầm mới đảm bảo phát được nội dung HDR. Việc phát bằng bộ giải mã không được tạo đường hầm có thể khiến thông tin HDR bị mất và nội dung bị làm phẳng thành một khối màu SDR.

Công cụ trích xuất

Các vùng chứa sau đây được hỗ trợ cho nhiều công nghệ HDR trên Android 7.0:

Công nghệ Dolby-Vision HDR10 VP9-HLG VP9-PQ
Vùng chứa MP4 MP4 WebM WebM

Nền tảng không hỗ trợ việc khám phá xem một bản nhạc (của một tệp) có yêu cầu hỗ trợ HDR hay không. Các ứng dụng có thể phân tích cú pháp dữ liệu dành riêng cho bộ mã hoá và giải mã để xác định xem một bản nhạc có yêu cầu hồ sơ HDR cụ thể hay không.

Tóm tắt

Yêu cầu về thành phần cho từng công nghệ HDR được trình bày trong bảng sau:

Công nghệ Dolby-Vision HDR10 VP9-HLG VP9-PQ
Loại HDR được hỗ trợ (Màn hình) HDR_TYPE_DOLBY_VISION HDR_TYPE_HDR10 HDR_TYPE_HLG HDR_TYPE_HDR10
Vùng chứa (Trình trích xuất) MP4 MP4 WebM WebM
Bộ giải mã MIMETYPE_VIDEO_DOLBY_VISION MIMETYPE_VIDEO_HEVC MIMETYPE_VIDEO_VP9 MIMETYPE_VIDEO_VP9
Hồ sơ (Bộ giải mã) Một trong các cấu hình Dolby HEVCProfileMain10HDR10 VP9Profile2HDR hoặc VP9Profile3HDR VP9Profile2HDR hoặc VP9Profile3HDR

Lưu ý:

  • Luồng bit Dolby-Vision được đóng gói trong vùng chứa MP4 theo cách do Dolby xác định. Các ứng dụng có thể triển khai trình trích xuất có khả năng hỗ trợ Dolby của riêng mình miễn là các ứng dụng đó đóng gói các đơn vị truy cập từ các lớp tương ứng thành một đơn vị truy cập duy nhất cho bộ giải mã theo định nghĩa của Dolby.
  • Một nền tảng có thể hỗ trợ trình trích xuất có khả năng HDR nhưng không có trình giải mã tương ứng có khả năng HDR.

Phát

Sau khi xác minh khả năng hỗ trợ phát HDR, ứng dụng có thể phát nội dung HDR gần giống như cách phát nội dung không phải HDR, với các lưu ý sau:

  • Đối với Dolby-Vision, việc một tệp/đường dẫn nội dung nghe nhìn cụ thể có yêu cầu bộ giải mã có khả năng HDR hay không không được cung cấp ngay lập tức. Ứng dụng phải có sẵn thông tin này hoặc có thể lấy thông tin này bằng cách phân tích cú pháp phần dữ liệu dành riêng cho bộ mã hoá và giải mã của MediaFormat.
  • CodecCapabilities.isFormatSupported không xem xét liệu tính năng bộ giải mã được tạo đường hầm có bắt buộc phải hỗ trợ hồ sơ như vậy hay không.

Bật tính năng hỗ trợ nền tảng HDR

Nhà cung cấp SoC và OEM phải làm thêm việc để bật tính năng hỗ trợ nền tảng HDR cho một thiết bị.

Các thay đổi về nền tảng trong Android 7.0 đối với HDR

Sau đây là một số thay đổi chính trong nền tảng (lớp ứng dụng/lớp gốc) mà OEM và SOC cần lưu ý.

Màn hình

Cấu trúc phần cứng

Các nền tảng hỗ trợ HDR phải hỗ trợ việc kết hợp nội dung HDR với nội dung không phải HDR. Android chưa xác định các đặc điểm và thao tác kết hợp chính xác kể từ bản phát hành 7.0, nhưng quy trình này thường tuân theo các bước sau:

  1. Xác định không gian màu/khối màu tuyến tính chứa tất cả các lớp cần được kết hợp, dựa trên màu sắc, độ hoàn thiện và siêu dữ liệu động tiềm năng của các lớp.
    Nếu kết hợp trực tiếp với màn hình, thì đây có thể là không gian tuyến tính khớp với dung lượng màu của màn hình.
  2. Chuyển đổi tất cả các lớp thành không gian màu phổ biến.
  3. Thực hiện việc kết hợp.
  4. Nếu hiển thị qua HDMI:
    1. Xác định màu sắc, chế độ xử lý và siêu dữ liệu động tiềm năng cho cảnh kết hợp.
    2. Chuyển đổi cảnh kết hợp thu được thành không gian/khối màu phái sinh.
  5. Nếu hiển thị trực tiếp trên màn hình, hãy chuyển đổi cảnh kết hợp thu được thành các tín hiệu hiển thị bắt buộc để tạo cảnh đó.

Khám phá màn hình

Tính năng khám phá màn hình HDR chỉ được hỗ trợ thông qua HWC2. Người triển khai thiết bị phải chọn bật bộ chuyển đổi HWC2 được phát hành cùng với Android 7.0 để tính năng này hoạt động. Do đó, các nền tảng phải thêm tính năng hỗ trợ cho HWC2 hoặc mở rộng khung AOSP để cho phép cung cấp thông tin này. HWC2 hiển thị một API mới để truyền Dữ liệu tĩnh HDR đến khung và ứng dụng.

HDMI

  • Màn hình HDMI đã kết nối sẽ quảng cáo khả năng HDR thông qua HDMI EDID như được xác định trong mục 4.2 của CTA-861.3.
  • Bạn phải sử dụng ánh xạ EOTF sau:
    • ET_0 Gamma truyền thống – Dải độ sáng SDR: không được liên kết với bất kỳ loại HDR nào
    • ET_1 Gamma truyền thống – Dải độ sáng HDR: không được liên kết với bất kỳ loại HDR nào
    • ET_2 SMPTE ST 2084 – được liên kết với loại HDR HDR10
  • Việc báo hiệu hỗ trợ Dolby Vision hoặc HLG qua HDMI được thực hiện theo định nghĩa của các cơ quan liên quan.
  • Xin lưu ý rằng API HWC2 sử dụng các giá trị độ chói mong muốn dạng float, vì vậy, các giá trị EDID 8 bit phải được dịch theo cách phù hợp.

Bộ giải mã

Các nền tảng phải thêm bộ giải mã được tạo đường hầm có khả năng HDR và quảng cáo tính năng hỗ trợ HDR. Nhìn chung, bộ giải mã có khả năng hỗ trợ HDR phải:

  • Hỗ trợ giải mã qua đường hầm (FEATURE_TunneledPlayback).
  • Hỗ trợ siêu dữ liệu tĩnh HDR (OMX.google.android.index.describeHDRColorInfo) và việc truyền siêu dữ liệu đó đến thành phần hiển thị/phần cứng. Đối với HLG, bạn phải gửi siêu dữ liệu thích hợp đến màn hình.
  • Hỗ trợ nội dung mô tả màu (OMX.google.android.index.describeColorAspects) và việc truyền tải nội dung mô tả đó đến thành phần hiển thị/phần cứng.
  • Hỗ trợ siêu dữ liệu nhúng HDR theo định nghĩa của tiêu chuẩn có liên quan.

Hỗ trợ bộ giải mã Dolby Vision

Để hỗ trợ Dolby Vision, các nền tảng phải thêm bộ giải mã OMX HDR có khả năng hỗ trợ Dolby-Vision. Do đặc điểm của Dolby Vision, đây thường là một trình giải mã trình bao bọc xung quanh một hoặc nhiều trình giải mã AVC và/hoặc HEVC cũng như một trình tổng hợp. Các bộ giải mã như vậy phải:

  • Hỗ trợ loại MIME "video/dolby-vision".
  • Quảng cáo các cấu hình/cấp độ Dolby Vision được hỗ trợ.
  • Chấp nhận các đơn vị truy cập chứa các đơn vị truy cập phụ của tất cả các lớp do Dolby xác định.
  • Chấp nhận dữ liệu dành riêng cho bộ mã hoá và giải mã do Dolby xác định. Ví dụ: dữ liệu chứa hồ sơ/cấp Dolby Vision và có thể là dữ liệu dành riêng cho bộ mã hoá và giải mã cho bộ giải mã nội bộ.
  • Hỗ trợ chuyển đổi thích ứng giữa các cấu hình/cấp độ Dolby Vision theo yêu cầu của Dolby.

Khi định cấu hình bộ giải mã, hồ sơ Dolby thực tế sẽ không được thông báo cho bộ mã hoá và giải mã. Việc này chỉ được thực hiện thông qua dữ liệu dành riêng cho bộ mã hoá và giải mã sau khi bộ giải mã đã khởi động. Một nền tảng có thể chọn hỗ trợ nhiều bộ giải mã Dolby Vision: một bộ giải mã cho hồ sơ AVC và một bộ giải mã khác cho hồ sơ HEVC để có thể khởi chạy các bộ mã hoá và giải mã cơ bản trong thời gian định cấu hình. Nếu một bộ giải mã Dolby Vision hỗ trợ cả hai loại hồ sơ, thì bộ giải mã đó cũng phải hỗ trợ việc chuyển đổi linh động giữa các hồ sơ đó theo cách thích ứng.

Nếu cung cấp bộ giải mã có khả năng hỗ trợ Dolby Vision ngoài việc hỗ trợ bộ giải mã HDR chung, thì nền tảng đó phải:

  • Cung cấp trình trích xuất nhận biết Dolby-Vision, ngay cả khi trình trích xuất đó không hỗ trợ phát HDR.
  • Cung cấp bộ giải mã hỗ trợ hồ sơ hình ảnh do Dolby xác định.

Hỗ trợ bộ giải mã HDR10

Để hỗ trợ HDR10, các nền tảng phải thêm bộ giải mã OMX có khả năng hỗ trợ HDR10. Đây thường là bộ giải mã HEVC được tạo đường hầm, đồng thời hỗ trợ phân tích cú pháp và xử lý siêu dữ liệu liên quan đến HDMI. Bộ giải mã như vậy (ngoài tính năng hỗ trợ bộ giải mã HDR chung) phải:

  • Hỗ trợ loại mime "video/hevc".
  • Quảng cáo HEVCMain10HDR10 được hỗ trợ. Tính năng hỗ trợ hồ sơ HEVCMain10HRD10 cũng yêu cầu hỗ trợ hồ sơ HEVCMain10, đồng thời yêu cầu hỗ trợ hồ sơ HEVCMain ở cùng cấp.
  • Hỗ trợ phân tích cú pháp các khối SEI siêu dữ liệu chuẩn hoá, cũng như các thông tin khác liên quan đến HDR có trong SPS.

Hỗ trợ bộ giải mã VP9

Để hỗ trợ VP9 HDR, các nền tảng phải thêm bộ giải mã OMX HDR có thể hỗ trợ VP9 Profile2. Đây thường là bộ giải mã VP9 được tạo đường hầm, đồng thời hỗ trợ xử lý siêu dữ liệu liên quan đến HDMI. Các bộ giải mã như vậy (ngoài việc hỗ trợ bộ giải mã HDR chung) phải:

  • Hỗ trợ loại mime "video/x-vnd.on2.vp9".
  • Quảng cáo VP9Profile2HDR được hỗ trợ. Tính năng hỗ trợ hồ sơ VP9Profile2HDR cũng yêu cầu hỗ trợ hồ sơ VP9Profile2 ở cùng cấp.

Trình trích xuất

Hỗ trợ trình trích xuất Dolby Vision

Các nền tảng hỗ trợ bộ giải mã Dolby Vision phải thêm tính năng hỗ trợ trình trích xuất Dolby (gọi là Dolby Extractor) cho nội dung Dolby Video.

  • Trình trích xuất MP4 thông thường chỉ có thể trích xuất lớp cơ sở từ một tệp, nhưng không thể trích xuất lớp tăng cường hoặc lớp siêu dữ liệu. Vì vậy, bạn cần có một trình trích xuất Dolby đặc biệt để trích xuất dữ liệu từ tệp.
  • Trình trích xuất Dolby phải hiển thị 1 đến 2 kênh cho mỗi kênh video Dolby (nhóm):
    • Một kênh Dolby Vision HDR có loại "video/dolby-vision" cho luồng Dolby kết hợp 2/3 lớp. Định dạng đơn vị truy cập của kênh HDR (xác định cách đóng gói các đơn vị truy cập từ lớp cơ sở/cải tiến/siêu dữ liệu vào một vùng đệm duy nhất để giải mã thành một khung hình HDR duy nhất) sẽ do Dolby xác định.
    • Nếu một kênh video Dolby Vision chứa một lớp cơ sở (BL) riêng biệt (tương thích ngược), thì trình trích xuất cũng phải hiển thị lớp này dưới dạng một kênh "video/avc" hoặc "video/hevc" riêng biệt. Trình trích xuất phải cung cấp các đơn vị truy cập AVC/HEVC thông thường cho kênh này.
    • Phiên bản BL phải có cùng mã nhận dạng riêng biệt của bản nhạc ("track-ID") với phiên bản HDR để ứng dụng hiểu rằng đây là hai bản mã hoá của cùng một video.
    • Ứng dụng có thể quyết định chọn kênh nào dựa trên khả năng của nền tảng.
  • Cấu hình/cấp độ Dolby Vision phải được hiển thị ở định dạng kênh của kênh HDR.
  • Nếu cung cấp bộ giải mã có khả năng hỗ trợ Dolby Vision, thì nền tảng cũng phải cung cấp trình trích xuất nhận biết được Dolby Vision, ngay cả khi không hỗ trợ chế độ phát HDR.

Hỗ trợ trình trích xuất HDR10 và VP9 HDR

Không có yêu cầu nào khác đối với trình trích xuất để hỗ trợ HDR10 hoặc VP9 HLG. Các nền tảng phải mở rộng trình trích xuất MP4 để hỗ trợ VP9 PQ trong MP4. Siêu dữ liệu tĩnh HDR phải được truyền trong luồng bit VP9 PQ, sao cho siêu dữ liệu này được truyền đến bộ giải mã VP9 PQ và đến màn hình thông qua quy trình MediaExtractor => MediaCodec thông thường.

Tiện ích Stagefright để hỗ trợ Dolby Vision

Các nền tảng phải thêm tính năng hỗ trợ định dạng Dolby Vision vào Stagefright:

  • Hỗ trợ truy vấn định nghĩa cổng cho cổng nén.
  • Hỗ trợ liệt kê hồ sơ/cấp độ cho bộ giải mã DV.
  • Hỗ trợ hiển thị hồ sơ/cấp độ DV cho các kênh DV HDR.

Thông tin chi tiết về việc triển khai theo công nghệ

Quy trình giải mã HDR10

Hình 1. Quy trình HDR10

Luồng bit HDR10 được đóng gói trong vùng chứa MP4. Các ứng dụng sử dụng trình trích xuất MP4 thông thường để trích xuất dữ liệu khung và gửi dữ liệu đó đến bộ giải mã.

  • Trình trích xuất MPEG4
    Luồng bit HDR10 được MPEG4Extractor chỉ nhận dạng là luồng HEVC thông thường và bản nhạc HDR có loại "video/HEVC" sẽ được trích xuất. Khung này chọn một bộ giải mã video HEVC hỗ trợ hồ sơ Main10HDR10 để giải mã kênh đó.
  • Trình giải mã HEVC
    Thông tin HDR nằm trong SEI hoặc SPS. Trước tiên, bộ giải mã HEVC sẽ nhận được các khung hình chứa thông tin HDR. Sau đó, bộ giải mã sẽ trích xuất thông tin HDR và thông báo cho ứng dụng rằng nó đang giải mã video HDR. Thông tin HDR được đóng gói vào định dạng đầu ra của bộ giải mã, sau đó được truyền đến bề mặt.

Hành động của nhà cung cấp

  1. Quảng cáo cấu hình bộ giải mã HDR được hỗ trợ và loại OMX cấp. Ví dụ:
    OMX_VIDEO_HEVCProfileMain10HDR10 (và Main10)
  2. Triển khai tính năng hỗ trợ cho chỉ mục: 'OMX.google.android.index.describeHDRColorInfo'
  3. Triển khai tính năng hỗ trợ cho chỉ mục: 'OMX.google.android.index.describeColorAspects'
  4. Triển khai tính năng hỗ trợ phân tích cú pháp SEI của siêu dữ liệu mastering.

Quy trình giải mã Dolby Vision

Hình 2. Quy trình Dolby Vision

Luồng bit Dolby được đóng gói trong vùng chứa MP4 theo định nghĩa của Dolby. Về lý thuyết, các ứng dụng có thể sử dụng trình trích xuất MP4 thông thường để trích xuất lớp cơ sở, lớp tăng cường và lớp siêu dữ liệu một cách độc lập; tuy nhiên, điều này không phù hợp với mô hình MediaExtractor/MediaCodec hiện tại của Android.

  • DolbyExtractor:
    • DolbyExtractor nhận dạng luồng bit Dolby, cho thấy các lớp khác nhau dưới dạng 1 đến 2 kênh cho mỗi kênh video dolby (nhóm):
      • Một kênh HDR có loại "video/dolby-vision" cho luồng dolby kết hợp 2/3 lớp. Dolby sẽ xác định định dạng đơn vị truy cập của kênh HDR. Định dạng này xác định cách đóng gói các đơn vị truy cập từ các lớp cơ sở/cải tiến/siêu dữ liệu vào một vùng đệm duy nhất để giải mã thành một khung hình HDR duy nhất.
      • (Không bắt buộc, chỉ khi BL tương thích ngược) Một kênh BL chỉ chứa lớp cơ sở, lớp này phải được bộ giải mã MediaCodec thông thường giải mã được, ví dụ: bộ giải mã AVC/HEVC. Trình trích xuất phải cung cấp các đơn vị truy cập AVC/HEVC thông thường cho kênh này. Bản âm thanh BL này phải có cùng mã nhận dạng riêng biệt của bản âm thanh ("track-ID") với bản âm thanh Dolby để ứng dụng hiểu rằng đây là hai bản mã hoá của cùng một video.
    • Ứng dụng có thể quyết định chọn kênh nào dựa trên khả năng của nền tảng.
    • Vì một kênh HDR có một loại HDR cụ thể, nên khung sẽ chọn một bộ giải mã video Dolby để giải mã kênh đó. Luồng BL sẽ được giải mã bằng một bộ giải mã video AVC/HEVC thông thường.
  • DolbyDecoder:
    • DolbyDecoder nhận các đơn vị truy cập chứa các đơn vị truy cập bắt buộc cho tất cả các lớp (EL+BL+MD hoặc BL+MD)
    • Thông tin CSD (dữ liệu cụ thể về bộ mã hoá và giải mã, chẳng hạn như SPS+PPS+VPS) cho từng lớp có thể được đóng gói thành 1 khung CSD do Dolby xác định. Bắt buộc phải có một khung CSD.

Hành động Dolby

  1. Xác định việc đóng gói các đơn vị truy cập cho nhiều giao thức vùng chứa Dolby (ví dụ: BL+EL+MD) cho bộ giải mã Dolby trừu tượng (tức là định dạng vùng đệm mà bộ giải mã HDR dự kiến).
  2. Xác định cách đóng gói CSD cho bộ giải mã Dolby trừu tượng.

Hành động của nhà cung cấp

  1. Triển khai trình trích xuất Dolby. Dolby cũng có thể thực hiện việc này.
  2. Tích hợp DolbyExtractor vào khung. Điểm truy cập là frameworks/av/media/libstagefright/MediaExtractor.cpp.
  3. Khai báo cấu hình bộ giải mã HDR và loại OMX cấp. Ví dụ: OMX_VIDEO_DOLBYPROFILETYPEOMX_VIDEO_DOLBYLEVELTYP.
  4. Triển khai tính năng hỗ trợ cho chỉ mục: 'OMX.google.android.index.describeColorAspects'
  5. Truyền siêu dữ liệu HDR động đến ứng dụng và giao diện trong mỗi khung hình. Thông thường, thông tin này phải được đóng gói vào khung đã giải mã theo định nghĩa của Dolby, vì tiêu chuẩn HDMI không cung cấp cách truyền thông tin này đến màn hình.

Quy trình giải mã VP9

Hình 3. Quy trình VP9-PQ

Luồng bit VP9 được đóng gói trong vùng chứa WebM theo cách do nhóm WebM xác định. Các ứng dụng cần sử dụng trình trích xuất WebM để trích xuất siêu dữ liệu HDR từ luồng bit trước khi gửi khung đến bộ giải mã.

  • Trình trích xuất WebM:
  • Bộ giải mã VP9:
    • Bộ giải mã nhận luồng bit Profile2 và giải mã các luồng đó dưới dạng luồng VP9 thông thường.
    • Bộ giải mã nhận mọi siêu dữ liệu tĩnh HDR từ khung.
    • Bộ giải mã nhận siêu dữ liệu tĩnh thông qua các đơn vị truy cập luồng bit cho luồng VP9 PQ.
    • Bộ giải mã VP9 phải có khả năng truyền siêu dữ liệu HDR tĩnh/động đến màn hình.

Hành động của nhà cung cấp

  1. Triển khai tính năng hỗ trợ cho chỉ mục: OMX.google.android.index.describeHDRColorInfo
  2. Triển khai tính năng hỗ trợ cho chỉ mục: OMX.google.android.index.describeColorAspects
  3. Truyền siêu dữ liệu tĩnh HDR