สื่อ

ไอคอน Android Media HAL

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

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

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

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

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

  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> สำหรับตัวแปลงสัญญาณสื่อจะไม่ได้รับการสนับสนุนอีกต่อไป