Video có dải động cao (HDR) là bước đột phá tiếp theo trong việc 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 được. Đ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 đây.
- 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ế độ 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 theo lớp. Đố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, khả 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 đó nghĩa là xác định các loại bộ mã hoá và giải mã cũng như chế độ hiển thị, đồng thời chỉ định cách dữ liệu HDR phải được truyền đến MediaCodec và 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 | Văn bản 9 | 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 tính năng phát HDR qua chế độ đường hầm, nhưng các thiết bị có thể hỗ trợ thêm tính năng phát HDR trên SurfaceViews bằ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 ở chế độ HDR khi được kết nối với các màn hình có hỗ trợ 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ệ yêu cầu một trình trích xuất cụ thể (không bắt buộc).
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
Bao gồm các tính năng HDR của một màn hình cụ thể. Ví dụ: những 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ệ.
Các phương thức công khai:
float getDesiredMaxAverageLuminance()
Trả về dữ liệu độ chói trung bình khung hình 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 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 theo ý muốn, tính bằng 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ợ cho các hồ sơ mới có tính năng HDR:
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 của Dolby Vision phải được nối thành một bộ đệm duy nhất trên 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ó hỗ trợ Dolby-Vision.
HDR chuẩn HEVC 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 phải 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 |
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 không được nền tảng hỗ trợ. 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
Bảng sau đây trình bày các yêu cầu về thành phần đối với từng công nghệ HDR:
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/bản nhạc nội dung nghe nhìn cụ thể có cần bộ giải mã có hỗ trợ HDR hay không sẽ không có sẵn ngay. Ứ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ó cần thiết để hỗ trợ cấu hình như vậy hay không.
Bật tính năng hỗ trợ nền tảng HDR
Các nhà cung cấp hệ thống SoC và OEM (Nhà sản xuất thiết bị gốc) phải làm thêm một số việc để hỗ trợ nền tảng HDR cho thiết bị.
Những thay đổi về nền tảng trong Android 7.0 đối với HDR
Dưới đây là một số thay đổi quan trọng 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
Thành phần 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. Kể từ bản phát hành 7.0, Android chưa xác định các đặc điểm và hoạt động kết hợp chính xác, nhưng quy trình này thường tuân theo các bước sau:
- Xác định hệ màu/khối màu tuyến tính chứa tất cả các lớp cần tổng hợp, dựa trên màu, màu sắc và siêu dữ liệu động tiềm năng của 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. - Chuyển đổi tất cả các lớp sang hệ màu chung.
- Thực hiện việc kết hợp.
- Nếu hiển thị qua HDMI:
- 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.
- Chuyển đổi cảnh kết hợp thu được sang không gian/âm lượng màu dẫn xuất.
- 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á trên Mạng Hiển thị
Tính năng khám phá hiển thị HDR chỉ được hỗ trợ qua HWC2. Trình triển khai thiết bị phải bật bộ chuyển đổi HWC2 được phát hành cùng với Android 7.0 một cách có chọn lọc để 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 (Dự án nguồn mở Android) để 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 cho 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 bản đồ 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.
- Lưu ý rằng API HWC2 sử dụng các giá trị độ chói mong muốn có độ chính xác đơn, 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ó hỗ trợ 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à truyền siêu dữ liệu này đến cấu trúc màn hình/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 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ã HDR OMX có khả năng 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. Những bộ giải mã đó 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ã, cấu hình Dolby thực tế sẽ không được truyền đến 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ộ giải mã sau khi bộ giải mã đã được 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ợ cấu hình thị giác 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 HDR10. Đây thường là bộ giải mã HEVC theo đường hầm, cũng 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 việc 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, yêu cầu phải hỗ trợ hồ sơ HEVCMain ở các cấp độ tương tự.
- Hỗ trợ phân tích cú pháp các khối SEI siêu dữ liệu kiểm soát, 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ể dùng được 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 tính năng 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ợ cấu hình VP9Profile2HDR cũng yêu cầu hỗ trợ cấu hình 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 trình trích xuất Dolby (gọi là Bộ trích xuất Dolby) cho nội dung Video Dolby.
- 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ừ các lớp cơ sở/nâng cao/siêu dữ liệu vào một bộ đệm duy nhất để giải mã thành một khung 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 một nền tảng cung cấp bộ giải mã có hỗ trợ Dolby-Vision, thì nền tảng đó cũng phải cung cấp trình trích xuất có khả năng nhận biết Dolby-Vision, ngay cả khi không hỗ trợ tính năng 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
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 đó. - Bộ giải mã HEVC
Thông tin HDR nằm trong SEI hoặc SPS. Bộ giải mã HEVC trước tiên sẽ nhận được các khung hình có 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 bộ giải mã đang giải mã video HDR. Thông tin HDR được đi kèm vào định dạng đầu ra của bộ giải mã và sẽ được truyền đến nền tảng này sau đó.
Hành động của nhà cung cấp
- 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
) - Triển khai tính năng hỗ trợ cho chỉ mục:
'
OMX.google.android.index.describeHDRColorInfo
' - Triển khai tính năng hỗ trợ cho chỉ mục:
'
OMX.google.android.index.describeColorAspects
' - 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
Các luồng Dolby-bit được đóng gói trong vùng chứa MP4 do Doolby xác định. 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:
- Dolby-bitstreams được DolbyExtractor nhận dạng. Công cụ này hiển thị nhiều lớp dưới dạng 1 đến 2 kênh cho mỗi kênh video dolby (nhóm):
- Một bản nhạc HDR thuộc loại "video/dolby-vision" cho luồng dolby 2/3 lớp kết hợ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ừ các lớp cơ sở/nâng cao/siêu dữ liệu vào một bộ đệm duy nhất để được giải mã thành một khung HDR duy nhất, sẽ được Dolby xác định.
- (Không bắt buộc, chỉ khi BL có khả năng tương thích ngược) Bản BL chỉ chứa lớp cơ sở (base lớp) phải có thể giải mã bằng bộ giải mã MediaCodec thông thường, ví dụ: bộ giải mã AVC/HEVC. Trình trích xuất sẽ 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 này sẽ chọn một bộ giải mã video Dolby để giải mã kênh đó. Bản nhạc BL sẽ được giải mã bằng bộ giải mã video AVC/HEVC thông thường.
- Dolby-bitstreams được DolbyExtractor nhận dạng. Công cụ này hiển thị nhiều lớp dưới dạng 1 đến 2 kênh cho mỗi kênh video dolby (nhóm):
- Bộ giải mã Dolby:
- Bộ giải mã Dolby 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)
- CSD (dữ liệu cụ thể dành cho bộ mã hoá và giải mã, chẳng hạn như SPS+PPS+VPS) cho các lớp riêng lẻ có thể được đóng gói vào 1 khung CSD doDolby xác định. Bắt buộc phải có một khung CSD.
Hành động Dolby
- 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).
- 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
- Triển khai trình trích xuất Dolby. Dolby cũng có thể thực hiện việc này.
- Tích hợp DolbyExtractor vào khung. Điểm truy cập là
frameworks/av/media/libstagefright/MediaExtractor.cpp
. - Khai báo cấu hình bộ giải mã HDR và loại OMX cấp. Ví dụ:
OMX_VIDEO_DOLBYPROFILETYPE
vàOMX_VIDEO_DOLBYLEVELTYP
. - Triển khai tính năng hỗ trợ cho chỉ mục:
'OMX.google.android.index.describeColorAspects
' - 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ã như Dolby xác định, 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
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:
- Trình trích xuất WebM trích xuất siêu dữ liệu và khung hình HDR từ thành phần chứa.
- Bộ giải mã VP9:
- Bộ giải mã nhận luồng bit của Hồ sơ 2 và giải mã các luồng đó như các 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 tĩnh/động HDR đến màn hình.
Hành động của nhà cung cấp
- Triển khai tính năng hỗ trợ cho chỉ mục:
OMX.google.android.index.describeHDRColorInfo
- Triển khai tính năng hỗ trợ cho chỉ mục:
OMX.google.android.index.describeColorAspects
- Truyền siêu dữ liệu tĩnh HDR