สื่อ

ไอคอน HAL ของ Android Media

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 ได้ที่ เปิดเว็บไซต์ MAX
  2. สร้างปลั๊กอิน OpenMAX ที่ลิงก์คอมโพเนนต์ของคุณกับ Stagefright service. สำหรับอินเทอร์เฟซในการสร้างปลั๊กอิน โปรดดู 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 ชั้นเรียน คุณต้องสร้างทั้ง 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> สำหรับตัวแปลงรหัสสื่ออีกต่อไป