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

รูปที่ 1. สถาปัตยกรรมสื่อ
- กรอบการใช้งาน
- ในระดับแอปพลิเคชันเฟรมเวิร์กคือโค้ดแอปพลิเคชันที่ใช้ android.media API เพื่อโต้ตอบกับฮาร์ดแวร์มัลติมีเดีย
- Binder IPC
- พร็อกซี Binder IPC อำนวยความสะดวกในการสื่อสารข้ามขอบเขตของกระบวนการ ซึ่งจะอยู่ในไดเร็กทอรี
frameworks/av/media/libmedia
และขึ้นต้นด้วยตัวอักษร "I" - กรอบมัลติมีเดียเนทีฟ
- ในระดับดั้งเดิม Android มีเฟรมเวิร์กมัลติมีเดียที่ใช้เอ็นจิ้น Stagefright สำหรับการบันทึกและเล่นเสียงและวิดีโอ Stagefright มาพร้อมกับรายการเริ่มต้นของตัวแปลงสัญญาณซอฟต์แวร์ที่รองรับและคุณสามารถใช้ตัวแปลงรหัสฮาร์ดแวร์ของคุณเองได้โดยใช้มาตรฐานเลเยอร์การรวม OpenMax สำหรับรายละเอียดการใช้งานเพิ่มเติมโปรดดูส่วนประกอบ MediaPlayer และ Stagefright ที่อยู่ใน
frameworks/av/media
- OpenMAX Integration Layer (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 \ ...
แสดงตัวแปลงสัญญาณไปยังเฟรมเวิร์ก
บริการ system/etc/media_codecs.xml
จะแยกวิเคราะห์ system/etc/media_codecs.xml
และ system/etc/media_profiles.xml
เพื่อแสดงตัวแปลงสัญญาณและโปรไฟล์ที่รองรับบนอุปกรณ์ให้กับนักพัฒนาแอปผ่านทาง android.media.MediaCodecList
และ android.media.CamcorderProfile
คลาส คุณต้องสร้างทั้งสองไฟล์ในไดเร็กทอรี device/<company>/<device>/
และคัดลอกไปยังไดเร็กทอรี system/etc
ของอิมเมจ 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>
สำหรับตัวแปลงสัญญาณสื่ออีกต่อไป