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