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

รูปที่ 1 สถาปัตยกรรมสื่อ
- กรอบการใช้งาน
- ที่ระดับเฟรมเวิร์กแอปพลิเคชันคือโค้ดแอปพลิเคชันที่ใช้ android.media API เพื่อโต้ตอบกับฮาร์ดแวร์มัลติมีเดีย
- เครื่องผูกไอพีซี
- พร็อกซี 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>
สำหรับตัวแปลงสัญญาณสื่อไม่ได้รับการสนับสนุนอีกต่อไป