
Android bao gồm Stagefright, một công cụ phát nội dung đa phương tiện ở cấp gốc có bộ mã hoá và giải mã dựa trên phần mềm tích hợp cho các định dạng nội dung đa phương tiện phổ biến.
Các tính năng phát âm thanh và video của Stagefright bao gồm tích hợp với các bộ mã hoá và giải mã OpenMAX, quản lý phiên, kết xuất đồng bộ theo thời gian, điều khiển truyền tải và DRM.
Stagefright cũng hỗ trợ tích hợp với bộ mã hoá và giải mã phần cứng tuỳ chỉnh do bạn cung cấp. Để đặt đường dẫn phần cứng để mã hoá và giải mã nội dung nghe nhìn, bạn phải triển khai bộ mã hoá và giải mã dựa trên phần cứng dưới dạng thành phần OpenMax IL (Lớp tích hợp).
Lưu ý: Các bản cập nhật Stagefright có thể diễn ra thông qua quy trình cập nhật bảo mật hằng tháng của Android và trong bản phát hành hệ điều hành Android.
Kiến trúc
Các ứng dụng đa phương tiện tương tác với khung đa phương tiện gốc của Android theo cấu trúc sau.

Hình 1. Cấu trúc nội dung đa phương tiện
- Khung ứng dụng
- Ở cấp khung ứng dụng là mã ứng dụng sử dụng các API android.media để tương tác với phần cứng đa phương tiện.
- Binder IPC
- Proxy IPC của Binder hỗ trợ giao tiếp qua các ranh giới quy trình.
Các lớp này nằm trong thư mục
frameworks/av/media/libmedia
và bắt đầu bằng chữ cái "I". - Khung đa phương tiện gốc
- Ở cấp độ gốc, Android cung cấp một khung đa phương tiện sử dụng công cụ Stagefright để ghi và phát âm thanh cũng như video. Stagefright đi kèm với danh sách mặc định gồm các bộ mã hoá và giải mã phần mềm được hỗ trợ. Bạn có thể triển khai bộ mã hoá và giải mã phần cứng của riêng mình bằng cách sử dụng tiêu chuẩn lớp tích hợp OpenMax. Để biết thêm thông tin chi tiết về cách triển khai, hãy xem các thành phần MediaPlayer và Stagefright nằm trong
frameworks/av/media
. - Lớp tích hợp OpenMAX (IL)
- OpenMAX IL cung cấp một cách thức chuẩn hoá để Stagefright nhận dạng và sử dụng các bộ mã hoá và giải mã nội dung đa phương tiện dựa trên phần cứng tuỳ chỉnh được gọi là thành phần. Bạn phải cung cấp trình bổ trợ OpenMAX ở dạng thư viện dùng chung có tên
libstagefrighthw.so
. Trình bổ trợ này liên kết Stagefright với các thành phần bộ mã hoá và giải mã tuỳ chỉnh. Bạn phải triển khai các thành phần này theo tiêu chuẩn thành phần OpenMAX IL.
Triển khai bộ mã hoá và giải mã tuỳ chỉnh
Stagefright đi kèm với bộ mã hoá và giải mã phần mềm tích hợp cho các định dạng nội dung nghe nhìn phổ biến, nhưng bạn cũng có thể thêm bộ mã hoá và giải mã phần cứng tuỳ chỉnh của riêng mình dưới dạng thành phần OpenMAX. Để làm việc này, bạn phải tạo các thành phần OMX và trình bổ trợ OMX để kết nối các bộ mã hoá và giải mã tuỳ chỉnh với khung Stagefright. Để biết các thành phần ví dụ, hãy xem hardware/ti/omap4xxx/domx/
; để biết trình bổ trợ ví dụ cho Galaxy Nexus, hãy xem hardware/ti/omap4xx/libstagefrighthw
.
Cách thêm bộ mã hoá và giải mã của riêng bạn:
- Tạo các thành phần theo tiêu chuẩn thành phần OpenMAX IL. Giao diện thành phần nằm trong tệp
frameworks/native/include/media/OpenMAX/OMX_Component.h
. Để tìm hiểu thêm về thông số kỹ thuật OpenMAX IL, hãy tham khảo trang web OpenMAX. - Tạo trình bổ trợ OpenMAX liên kết các thành phần của bạn với dịch vụ Stagefright. Để biết các giao diện tạo trình bổ trợ, hãy xem tệp tiêu đề
frameworks/native/include/media/hardware/OMXPluginBase.h
vàHardwareAPI.h
. - Tạo trình bổ trợ dưới dạng thư viện dùng chung có tên
libstagefrighthw.so
trong Makefile của sản phẩm. Ví dụ:
LOCAL_MODULE := libstagefrighthw
Trong Makefile của thiết bị, hãy đảm bảo bạn khai báo mô-đun dưới dạng gói sản phẩm:
PRODUCT_PACKAGES += \ libstagefrighthw \ ...
Hiển thị bộ mã hoá và giải mã cho khung
Dịch vụ Stagefright phân tích cú pháp system/etc/media_codecs.xml
và system/etc/media_profiles.xml
để hiển thị các bộ mã hoá và giải mã được hỗ trợ cũng như hồ sơ trên thiết bị cho nhà phát triển ứng dụng thông qua các lớp android.media.MediaCodecList
và android.media.CamcorderProfile
. Bạn phải tạo cả hai tệp trong thư mục device/<company>/<device>/
và sao chép tệp này vào thư mục system/etc
của hình ảnh hệ thống trong Makefile của thiết bị. Ví dụ:
PRODUCT_COPY_FILES += \ device/samsung/tuna/media_profiles.xml:system/etc/media_profiles.xml \ device/samsung/tuna/media_codecs.xml:system/etc/media_codecs.xml \
Để xem ví dụ đầy đủ, hãy xem device/samsung/tuna/media_codecs.xml
và device/samsung/tuna/media_profiles.xml
.
Lưu ý: Kể từ Android 4.1, phần tử <Quirk>
cho bộ mã hoá và giải mã nội dung nghe nhìn không còn được hỗ trợ nữa.