Video có dải động cao (HDR) là bước tiến tiếp theo trong quá trình giải mã video chất lượng cao, mang đến chất lượng tái tạo cảnh chưa từng 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à một yếu tố trung tâm trong quá trình phát triển nội dung 4K UHD trong lĩnh vực truyền hình.
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ế độ truyền dữ liệu qua đườ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 truyền qua đường hầm. Đối với HDR10 và VP9Profile2 sử dụng siêu dữ liệu tĩnh, những siêu dữ liệu này đượ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 mỗi khung hình đầu ra.
Hãy xem phần Đường hầm đa phương tiện để biết thêm thông tin.
Kể từ Android 7.0, chế độ 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. Tức là bạn phải xác định các loại codec và chế độ hiển thị, đồng thời chỉ định cách truyền dữ liệu HDR đế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ợ việc phát luồng HDR, đồng thời giúp các nhà sản xuất thiết bị gốc (OEM) và hệ thống trên vi mạch (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ỉ có chế độ phát HDR thông qua chế độ đường hầm được xác định, nhưng các thiết bị có thể hỗ trợ phát HDR trên SurfaceView bằng cách sử dụng các 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ợ hay không bằng cách sử dụng bộ giải mã không được truyền qua đường hầm.
- Các bộ giải mã video được chuyển hướng 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 hiển thị HDR.
- Bản phát hành Android 7.0 của AOSP không hỗ trợ thành phần GL của nội dung HDR.
Khám phá
Để phát nội dung HDR, bạn cần có một bộ giải mã hỗ trợ HDR và kết nối với một màn hình hỗ trợ HDR. Ngoài ra, một số công nghệ 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 chức năng HDR của một màn hình nhất định. Ví dụ: loại HDR mà thiết bị 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ợ Hybrid Log-Gamma.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 tối đa của nội dung mong muốn tính bằng 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 tính bằng 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 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ợ các hồ sơ mới có khả năng HDR:
Dolby Vision
Hằng số MediaFormat
mime:
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. Điều này được thực hiện tự động bằng MediaExtractor có khả năng 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ó khả năng HDR, thì nền tảng đó cũng phải hỗ trợ bộ trích xuất có khả năng HDR.
Chỉ những bộ giải mã được chuyển hướng mới đảm bảo phát nội dung HDR. Việc phát bằng bộ giải mã không được truyền qua đường hầm có thể khiến thông tin HDR bị mất và nội dung bị giảm xuống thành một khối lượng 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 phát hiện xem một bản nhạc (của một tệp) có cần 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 một hồ sơ HDR cụ thể hay không.
Tóm tắt
Các yêu cầu về thành phần đối với 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 mà Dolby xác định. Các ứng dụng có thể triển khai trình trích xuất có khả năng Dolby của riêng mình miễn là chú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ó bộ 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 những lưu ý sau:
- Đối với Dolby Vision, bạn không thể biết ngay liệu một tệp/bản nhạc đa phương tiện cụ thể có yêu cầu bộ giải mã có khả năng HDR hay không. Ứng dụng phải có thông tin này trước 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 việc có cần thiết phải có tính năng bộ giải mã được chuyển hướng để hỗ trợ một hồ sơ như vậy hay không.
Bật chế độ hỗ trợ nền tảng HDR
Các 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 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à các 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. Android không xác định chính xác các đặc điểm và thao tác kết hợp kể từ phiên bản 7.0, nhưng quy trình này thường tuân theo các bước sau:
- Xác định không gian/thể tích màu tuyến tính chứa tất cả các lớp cần kết hợp, dựa trên màu sắc, quá trình tinh chỉnh 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 phù hợp với âm lượng màu của màn hình. - Chuyển đổi tất cả các lớp sang không gian màu chung.
- Thực hiện việc trộn.
- Nếu hiển thị qua HDMI:
- Xác định màu sắc, quá trình tạo bản chính 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 thành không gian/thể tích 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 cần thiết trên màn hình để tạo ra cảnh đó.
Khám phá trên Mạng Hiển thị
Tính năng phát hiện màn hình HDR chỉ được hỗ trợ thông qua HWC2. Các đơn vị 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 chế độ hỗ trợ cho HWC2 hoặc mở rộng khung AOSP để cho phép cung cấp thông tin này. HWC2 cung cấp 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 được kết nối sẽ thông báo khả năng HDR của màn hình thông qua HDMI EDID như được xác định trong phần 4.2 của CTA-861.3.
- Bạn phải sử dụng bảng ánh xạ EOTF sau đây:
- ET_0 Gamma truyền thống – Dải độ chói 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 độ chói HDR: không được ánh xạ đến 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 chế độ hỗ trợ Dolby Vision hoặc HLG qua HDMI được thực hiện theo quy định của các tổ chức liên quan.
- Xin lưu ý rằng API HWC2 sử dụng các giá trị độ chói mong muốn dạng số thực, 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 truyền qua đường hầm hỗ trợ HDR và quảng cáo khả năng hỗ trợ HDR của mình. Nhìn chung, bộ giải mã hỗ trợ HDR phải:
- Hỗ trợ giải mã theo đườ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 phù hợp đến màn hình. - Hỗ trợ nội dung mô tả màu sắc (
OMX.google.android.index.describeColorAspects
) và việc truyền nội dung mô tả đó đến thành phần hiển thị/phần cứng. - Hỗ trợ siêu dữ liệu được 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 thù của Dolby Vision, đây thường là một trình giải mã 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 kết 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ấp/cấu hình 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 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ộ mã hoá và 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 cho hồ sơ AVC và một cho hồ sơ HEVC để có thể khởi tạo các codec cơ bản trong thời gian định cấu hình. Nếu một bộ giải mã Dolby Vision duy nhất hỗ trợ cả hai loại hồ sơ, thì bộ giải mã đó cũng phải hỗ trợ việc chuyển đổi giữa các loại hồ sơ đó một cách linh hoạt theo kiểu thích ứng.
Nếu một nền tảng cung cấp bộ giải mã có khả năng Dolby Vision ngoài việc hỗ trợ bộ giải mã HDR chung, thì nền tảng đó phải:
- Cung cấp một trình trích xuất có nhận biết Dolby Vision, ngay cả khi trình trích xuất đó không hỗ trợ chế độ phát HDR.
- Cung cấp một bộ giải mã hỗ trợ cấu hình 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 một bộ giải mã OMX hỗ trợ HDR10. Đây thường là một bộ giải mã HEVC được chuyển hướng, 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 hỗ trợ HEVCMain10HDR10. Để hỗ trợ hồ sơ HEVCMain10HRD10, bạn cũng cần hỗ trợ hồ sơ HEVCMain10. Hồ sơ này yêu cầu hỗ trợ hồ sơ HEVCMain ở cùng cấp độ.
- Hỗ trợ phân tích các khối SEI siêu dữ liệu màn hình chuẩn màu, 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ợ HDR VP9, các nền tảng phải thêm một bộ giải mã HDR OMX có khả năng VP9 Profile2. Đây thường là một bộ giải mã VP9 được truyền qua đường hầm, đồng thời hỗ trợ xử lý siêu dữ liệu liên quan đến HDMI. Ngoài khả năng hỗ trợ bộ giải mã HDR chung, các bộ giải mã như vậy phải:
- Hỗ trợ loại MIME "video/x-vnd.on2.vp9".
- Quảng cáo hỗ trợ VP9Profile2HDR. Để hỗ trợ cấu hình VP9Profile2HDR, bạn cũng cần hỗ trợ cấu hình VP9Profile2 ở cùng cấp độ.
Dụng cụ nặn mụn
Hỗ trợ trình trích xuất Dolby Vision
Những nền tảng hỗ trợ bộ giải mã Dolby Vision phải thêm chế độ hỗ trợ bộ 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, chứ không thể trích xuất lớp nâng cao hoặc 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ị từ 1 đến 2 bản cho mỗi bản video Dolby (nhóm):
- Một bản 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 bản 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 vùng đệm duy nhất để được 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ở 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 bản nhạc này.
- Bản phụ đề phải có cùng mã nhận dạng duy nhất của bản phụ đề ("track-ID") với bản HDR để ứng dụng hiểu rằng đây là 2 bản mã hoá của cùng một video.
- Ứng dụng có thể quyết định chọn bản phát hành nào dựa trên khả năng của nền tảng.
- Hồ sơ/cấp độ Dolby Vision phải được hiển thị ở định dạng bản ghi của bản ghi HDR.
- Nếu cung cấp một bộ giải mã có khả năng Dolby Vision, thì nền tảng cũng phải cung cấp một trình trích xuất nhận biết Dolby Vision, ngay cả khi nền tảng đó 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 về 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 chế độ 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 bản âm thanh HDR DV.
Thông tin chi tiết về việc triển khai theo từng 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 một trình trích xuất MP4 thông thường để trích xuất dữ liệu khung hình và gửi đến bộ giải mã.
- MPEG4 Extractor
MPEG4Extractor nhận dạng luồng bit HDR10 chỉ là một luồng HEVC thông thường và sẽ trích xuất bản nhạc HDR có loại "video/HEVC". Khung này chọn một bộ giải mã video HEVC hỗ trợ hồ sơ Main10HDR10 để giải mã bản phụ đề đó. - Bộ 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 ứng dụng đang giải mã một video HDR. Thông tin HDR được 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
- Quảng cáo hỗ trợ loại và cấp độ bộ giải mã HDR OMX. Ví dụ:
OMX_VIDEO_HEVCProfileMain10HDR10
(vàMain10
) - Triển khai tính năng hỗ trợ chỉ mục: "
OMX.google.android.index.describeHDRColorInfo
" - Triển khai tính năng hỗ trợ chỉ mục: "
OMX.google.android.index.describeColorAspects
" - Triển khai tính năng hỗ trợ việc phân tích cú pháp SEI của siêu dữ liệu chính.
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 một 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 các luồng bit Dolby, hiển thị nhiều lớp dưới dạng 1 đến 2 bản nhạc cho mỗi bản nhạc video Dolby (nhóm):
- Một bản HDR có loại "video/dolby-vision" cho luồng kết hợp 2/3 lớp dolby. Định dạng đơn vị truy cập của bản 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 thành 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.
- (Không bắt buộc, chỉ khi BL tương thích ngược) Một bản 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ã, 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 bản nhạc này. Bản phụ đề này phải có cùng mã nhận dạng duy nhất của bản phụ đề ("track-ID") với bản phụ đề Dolby để ứng dụng hiểu rằng đây là 2 kiểu mã hoá của cùng một video.
- Ứng dụng có thể quyết định chọn bản phát hành nào dựa trên khả năng của nền tảng.
- Vì một bản nhạc 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ã bản nhạc đó. Bản theo dõi BL sẽ được giải mã bằng bộ giải mã video AVC/HEVC thông thường.
- DolbyExtractor nhận dạng các luồng bit Dolby, hiển thị nhiều lớp dưới dạng 1 đến 2 bản nhạc cho mỗi bản nhạc video Dolby (nhóm):
- 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 dành riêng cho 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ạn phải có một khung hình CSD.
Hành động của Dolby
- Xác định cách đóng gói các đơn vị truy cập cho nhiều lượ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ể làm 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 loại và cấp độ OMX của cấu hình bộ giải mã HDR. 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à bề mặt trong mỗi khung hình. Thông thường, thông tin này phải được đóng gói vào khung hình đã 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 một 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 các khung hình đến bộ giải mã.
- WebM Extractor:
- WebM Extractor trích xuất siêu dữ liệu và khung hình HDR từ vùng chứa.
- Bộ giải mã VP9:
- Bộ giải mã nhận các luồng bit Profile2 và giải mã chúng dưới dạng 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 HDR tĩnh