สื่อ

ไอคอน Android มีเดีย HAL

Android มี Stagefright ซึ่งเป็นกลไกการเล่นสื่อในระดับเนทิฟซึ่งมีตัวแปลงสัญญาณที่ใช้ซอฟต์แวร์ในตัวสำหรับรูปแบบสื่อยอดนิยม

คุณสมบัติการเล่นเสียงและวิดีโอ Stagefright ประกอบด้วยการผสานรวมกับตัวแปลงสัญญาณ OpenMAX การจัดการเซสชัน การเรนเดอร์แบบซิงโครไนซ์เวลา การควบคุมการขนส่ง และ DRM

Stagefright ยังรองรับการทำงานร่วมกับตัวแปลงสัญญาณฮาร์ดแวร์ที่คุณกำหนดเอง หากต้องการตั้งค่าเส้นทางฮาร์ดแวร์เพื่อเข้ารหัสและถอดรหัสสื่อ คุณต้องใช้ตัวแปลงสัญญาณแบบฮาร์ดแวร์เป็นส่วนประกอบ OpenMax IL (Integration Layer)

หมายเหตุ: การอัปเดต Stagefright สามารถเกิดขึ้นได้ผ่านกระบวนการ อัปเดตความปลอดภัยรายเดือน ของ Android และเป็นส่วนหนึ่งของการเปิดตัวระบบปฏิบัติการ 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

หากต้องการเพิ่มตัวแปลงสัญญาณของคุณเอง:

  1. สร้างส่วนประกอบของคุณตามมาตรฐานส่วนประกอบ OpenMAX IL อินเตอร์เฟสคอมโพเนนต์อยู่ในไฟล์ frameworks/native/include/media/OpenMAX/OMX_Component.h หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับข้อกำหนด OpenMAX IL โปรดดูที่ เว็บไซต์ OpenMAX
  2. สร้างปลั๊กอิน OpenMAX ที่เชื่อมโยงส่วนประกอบของคุณกับบริการ Stagefright สำหรับอินเทอร์เฟซในการสร้างปลั๊กอิน โปรดดูที่ไฟล์ส่วนหัว frameworks/native/include/media/hardware/OMXPluginBase.h และ HardwareAPI.h
  3. สร้างปลั๊กอินของคุณเป็นไลบรารีที่ใช้ร่วมกันด้วยชื่อ 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> สำหรับตัวแปลงสัญญาณสื่อไม่ได้รับการสนับสนุนอีกต่อไป