
Android ประกอบด้วย Stagefright ซึ่งเป็นเอ็นจิ้นการเล่นสื่อในระดับเนทีฟที่มีตัวแปลงสัญญาณซอฟต์แวร์ในตัวสำหรับรูปแบบสื่อยอดนิยม
คุณลักษณะการเล่นเสียงและวิดีโอ Stagefright รวมถึงการผสานรวมกับตัวแปลงสัญญาณ OpenMAX, การจัดการเซสชัน, การเรนเดอร์ที่ซิงโครไนซ์เวลา, การควบคุมการขนส่ง และ DRM
Stagefright ยังรองรับการรวมเข้ากับตัวแปลงสัญญาณฮาร์ดแวร์แบบกำหนดเองที่คุณให้มา ในการตั้งค่าเส้นทางฮาร์ดแวร์เพื่อเข้ารหัสและถอดรหัสสื่อ คุณต้องใช้ตัวแปลงสัญญาณที่ใช้ฮาร์ดแวร์เป็นส่วนประกอบ OpenMax IL (Integration Layer)
หมายเหตุ: การอัปเดต Stagefright สามารถเกิดขึ้นได้ผ่านกระบวนการ อัปเดตความปลอดภัยรายเดือน ของ Android และเป็นส่วนหนึ่งของการเปิดตัวระบบปฏิบัติการ Android
สถาปัตยกรรม
แอปพลิเคชันสื่อโต้ตอบกับเฟรมเวิร์กมัลติมีเดียเนทีฟของ Android ตามสถาปัตยกรรมต่อไปนี้

รูปที่ 1. สถาปัตยกรรมสื่อ
- กรอบงานการสมัคร
- ที่ระดับเฟรมเวิร์กของแอปพลิเคชันคือโค้ดแอปพลิเคชันที่ใช้ android.media API เพื่อโต้ตอบกับฮาร์ดแวร์มัลติมีเดีย
- สารยึดเกาะ IPC
- พร็อกซี Binder IPC ช่วยอำนวยความสะดวกในการสื่อสารเหนือขอบเขตของกระบวนการ ซึ่งจะอยู่ในไดเร็กทอรี
frameworks/av/media/libmedia
และขึ้นต้นด้วยตัวอักษร "I" - กรอบงานมัลติมีเดียดั้งเดิม
- ในระดับเนทีฟ Android มีเฟรมเวิร์กมัลติมีเดียที่ใช้เอ็นจิ้น Stagefright สำหรับการบันทึกและเล่นเสียงและวิดีโอ Stagefright มาพร้อมกับรายการเริ่มต้นของตัวแปลงสัญญาณซอฟต์แวร์ที่รองรับ และคุณสามารถใช้ตัวแปลงสัญญาณฮาร์ดแวร์ของคุณเองได้โดยใช้มาตรฐานเลเยอร์การรวม OpenMax สำหรับรายละเอียดการใช้งานเพิ่มเติม โปรดดูที่ส่วนประกอบ MediaPlayer และ Stagefright ที่อยู่ใน
frameworks/av/media
- เลเยอร์การรวม OpenMAX (IL)
- OpenMAX IL ให้วิธีการที่เป็นมาตรฐานสำหรับ Stagefright ในการจดจำและใช้ตัวแปลงสัญญาณมัลติมีเดียบนฮาร์ดแวร์แบบกำหนดเองที่เรียกว่าส่วนประกอบ คุณต้องจัดเตรียมปลั๊กอิน OpenMAX ในรูปแบบของไลบรารีที่ใช้ร่วมกันที่ชื่อ
libstagefrighthw.so
ปลั๊กอินนี้เชื่อมโยง Stagefright กับส่วนประกอบตัวแปลงสัญญาณแบบกำหนดเองของคุณ ซึ่งต้องใช้งานตามมาตรฐานส่วนประกอบ OpenMAX IL
การใช้ตัวแปลงสัญญาณแบบกำหนดเอง
Stagefright มาพร้อมกับตัวแปลงสัญญาณซอฟต์แวร์ในตัวสำหรับรูปแบบสื่อทั่วไป แต่คุณยังสามารถเพิ่มตัวแปลงสัญญาณฮาร์ดแวร์แบบกำหนดเองของคุณเป็นส่วนประกอบ OpenMAX ในการทำเช่นนี้ คุณต้องสร้างส่วนประกอบ OMX และปลั๊กอิน OMX ที่เชื่อมต่อตัวแปลงสัญญาณแบบกำหนดเองของคุณเข้ากับเฟรมเวิร์ก Stagefright ตัวอย่างเช่น ส่วนประกอบ โปรดดู hardware/ti/omap4xxx/domx/
; สำหรับปลั๊กอินตัวอย่างสำหรับ Galaxy Nexus โปรดดู hardware/ti/omap4xx/libstagefrighthw
ในการเพิ่มตัวแปลงสัญญาณของคุณเอง:
- สร้างส่วนประกอบของคุณตามมาตรฐานส่วนประกอบ OpenMAX IL อินเทอร์เฟซคอมโพเนนต์อยู่ในไฟล์
frameworks/native/include/media/OpenMAX/OMX_Component.h
หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับข้อกำหนด OpenMAX IL โปรดดูที่ เว็บไซต์ OpenMAX - สร้างปลั๊กอิน OpenMAX ที่เชื่อมโยงส่วนประกอบของคุณกับบริการ Stagefright สำหรับอินเทอร์เฟซสำหรับสร้างปลั๊กอิน โปรดดูไฟล์ส่วนหัว
frameworks/native/include/media/hardware/OMXPluginBase.h
และHardwareAPI.h
- สร้างปลั๊กอินของคุณเป็นไลบรารีที่ใช้ร่วมกันโดยใช้ชื่อ
libstagefrighthw.so
ใน Makefile ผลิตภัณฑ์ของคุณ ตัวอย่างเช่น:LOCAL_MODULE := libstagefrighthw
ใน Makefile ของอุปกรณ์ คุณต้องประกาศโมดูลเป็นแพ็คเกจผลิตภัณฑ์:
PRODUCT_PACKAGES += \ libstagefrighthw \ ...
การเปิดเผยตัวแปลงสัญญาณไปยังเฟรมเวิร์ก
บริการ Stagefright แยกวิเคราะห์ system/etc/media_codecs.xml
และ system/etc/media_profiles.xml
เพื่อแสดงตัวแปลงสัญญาณและโปรไฟล์ที่รองรับบนอุปกรณ์แก่นักพัฒนาแอปผ่านคลาส android.media.MediaCodecList
และ android.media.CamcorderProfile
คุณต้องสร้างไฟล์ทั้งสองไฟล์ในไดเร็กทอรี device/<company>/<device>/
และคัดลอกไปยังไดเร็กทอรี system/etc
ของอิมเมจระบบใน Makefile ของอุปกรณ์ ตัวอย่างเช่น:
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 \
สำหรับตัวอย่างทั้งหมด โปรดดู device/samsung/tuna/media_codecs.xml
และ device/samsung/tuna/media_profiles.xml
หมายเหตุ: สำหรับ Android 4.1 อิลิเมนต์ <Quirk>
สำหรับตัวแปลงสัญญาณสื่อจะไม่ได้รับการสนับสนุนอีกต่อไป