เฟรมเวิร์กคุณภาพของสื่อ

เรากำลังจะเปิดตัวเฟรมเวิร์กคุณภาพสื่อใน Android 16 สำหรับ Android TV โดยมีวัตถุประสงค์เพื่อสร้าง API ที่ได้มาตรฐานสำหรับการปรับคุณภาพของภาพ (PQ) และคุณภาพเสียง (AQ) เป้าหมายหลักคือการจัดหา แนวทางที่สอดคล้องกันสำหรับการปรับเหล่านี้ในอุปกรณ์ Android TV ต่างๆ เฟรมเวิร์กที่ได้มาตรฐานนี้มีเป้าหมายเพื่อลดความซับซ้อนในการพัฒนาสำหรับนักพัฒนาแอป ผู้ผลิตอุปกรณ์ดั้งเดิม (OEM) และผู้จำหน่ายระบบบนชิป (SoC) โดย นำเสนอชุด Android API ที่สอดคล้องกัน สำหรับผู้จำหน่าย SoC โดยเฉพาะ การดำเนินการนี้จะช่วยให้เฟรมเวิร์ก Android จัดการการกำหนดค่า PQ และ AQ ได้ ซึ่งจะช่วยลดภาระในการทำงานร่วมกับนักพัฒนาแอปพลิเคชันรายต่างๆ

ท้ายที่สุดแล้ว สำหรับแพลตฟอร์ม Google และ Android การดำเนินการนี้จะช่วยลดการกระจายตัว ปรับปรุงคุณภาพและความสามารถในการปรับขนาด มอบฟีเจอร์ใหม่ๆ และวางรากฐาน สำหรับ UI ของ AQ/PQ แบบรวมและประสบการณ์ของผู้ใช้ที่ดียิ่งขึ้น

เฟรมเวิร์กคุณภาพสื่อรองรับกรณีการใช้งานต่างๆ เพื่อปรับปรุง ประสบการณ์การรับชมทีวี คุณจัดการโปรไฟล์และการตั้งค่าได้ตามชื่อแพ็กเกจ (แอป) หรือตามรหัสอินพุต นอกจากนี้ แอปของระบบหรือ แอปในรายการที่อนุญาตจะสร้างโปรไฟล์ได้ และมีเพียงเจ้าของเท่านั้นที่อัปเดตหรือนำโปรไฟล์ออกได้

โดยเฉพาะอย่างยิ่ง เฟรมเวิร์กจะจัดการโปรไฟล์รูปภาพและเสียง ตัวอย่าง พารามิเตอร์รูปภาพ ได้แก่ ความสว่าง คอนทราสต์ และความคมชัด ส่วนตัวอย่าง พารามิเตอร์เสียง ได้แก่ เสียงเบสและเสียงแหลม

คุณใช้โปรไฟล์เหล่านี้ได้ในบริบทต่างๆ ซึ่งรวมถึงการตั้งค่าโปรไฟล์เริ่มต้นส่วนกลาง การสตรีมโปรไฟล์โดยใช้ MediaCodec การตั้งค่าโปรไฟล์เริ่มต้นของแอป สำหรับแอปสื่อที่เฉพาะเจาะจง และการตั้งค่าโปรไฟล์รูปภาพอินพุตของทีวีสำหรับ อินพุตที่เฉพาะเจาะจง เช่น HDMI นอกจากนี้ เฟรมเวิร์กยังรองรับการเปลี่ยนแปลงสถานะ (อนุญาตให้ใช้ชุดพารามิเตอร์ที่แตกต่างกันสำหรับสถานะต่างๆ เช่น HDR), จัดการโปรไฟล์รูปภาพที่ใช้งานอยู่ สำหรับการประมวลผลที่กำลังดำเนินการ และจัดการฟีเจอร์แบ็กไลต์โดยรอบ

ทีม Android กำลังทำงานร่วมกับพาร์ทเนอร์ในระบบนิเวศเพื่อรองรับเฟรมเวิร์กคุณภาพของสื่อ

คอมโพเนนต์

กรอบคุณภาพสื่อประกอบด้วยองค์ประกอบสำคัญหลายอย่างที่ทำงานร่วมกันในเลเยอร์แอปพลิเคชัน เฟรมเวิร์ก และฮาร์ดแวร์

แผนภาพการกำหนดมาตรฐาน PQ AQ
รูปที่ 1 การโต้ตอบระหว่างคอมโพเนนต์ของกรอบคุณภาพของสื่อ
  • Media Quality Manager (SDK API): SDK API ที่หันหน้าไปทางแอปพลิเคชันซึ่ง ช่วยให้แอปจัดการโปรไฟล์ภาพและเสียงได้
  • บริการคุณภาพสื่อ: บริการของระบบที่มีตรรกะทางธุรกิจหลัก การจัดการโปรไฟล์ สิทธิ์ และการสื่อสารกับ HAL
  • ฐานข้อมูลคุณภาพสื่อ: ฐานข้อมูล SQLite ที่จัดเก็บโปรไฟล์รูปภาพและเสียงทั้งหมด
  • สัญญาคุณภาพของสื่อ: กำหนดพารามิเตอร์และโครงสร้างข้อมูลมาตรฐานที่ใช้สำหรับการสื่อสารระหว่างแอปกับเฟรมเวิร์ก
  • HAL คุณภาพสื่อ: ระดับชั้นการจัดการฮาร์ดแวร์โดยตรง ที่ผู้ให้บริการ SoC ใช้เพื่อสื่อสารการเปลี่ยนแปลงโปรไฟล์รูปภาพและเสียงกับฮาร์ดแวร์พื้นฐาน

ฟีเจอร์

กรอบการทำงานด้านคุณภาพของสื่อรองรับฟีเจอร์ที่หลากหลายเพื่อมอบระบบที่ยืดหยุ่นและมีประสิทธิภาพสำหรับการจัดการคุณภาพของสื่อ

การจัดการโปรไฟล์

  • โปรไฟล์ที่แอปจัดการ: แอปสามารถสร้าง อัปเดต และลบโปรไฟล์ของตัวเอง เพื่อมอบประสบการณ์การใช้งานที่ปรับแต่งแล้ว
  • โปรไฟล์เริ่มต้น: แอปของระบบสามารถตั้งค่าโปรไฟล์เริ่มต้นสำหรับแอปบางแอป หรืออินพุตทีวี (เช่น HDMI 1)
  • โปรไฟล์เริ่มต้นส่วนกลาง: โปรไฟล์สำรองทั่วทั้งระบบที่ใช้ เมื่อไม่ได้ตั้งค่าโปรไฟล์ที่เฉพาะเจาะจง

เวิร์กโฟลว์โดยรวม

แผนภาพต่อไปนี้แสดงลำดับการเรียกสำหรับการดำเนินการด้านคุณภาพสื่อทั่วไป

สร้างและใช้โปรไฟล์รูปภาพ

การสร้างโปรไฟล์รูปภาพ
รูปที่ 2 แผนภาพลำดับสำหรับการสร้างโปรไฟล์รูปภาพ
  1. แอปของระบบจะเรียกใช้ setPictureProfileAllowList() เพื่อให้สิทธิ์แอปสื่อ ในการสร้างโปรไฟล์
  2. แอปสื่อจะลงทะเบียน PictureProfileCallback เพื่อรับการแจ้งเตือน เกี่ยวกับการเปลี่ยนแปลงโปรไฟล์
  3. แอปสื่อจะเรียกใช้ createPictureProfile() ด้วยออบเจ็กต์ PictureProfile
  4. MediaQualityService จะประมวลผลคำขอ บันทึกโปรไฟล์ลงใน ฐานข้อมูล และแจ้งให้แอปทราบว่าสำเร็จหรือไม่โดยใช้ การเรียกกลับที่ลงทะเบียนไว้ (onPictureProfileAdded() หรือ onError())

ตั้งค่าโปรไฟล์รูปภาพต่อสตรีม

เวิร์กโฟลว์นี้แสดงวิธีที่แอปพลิเคชันสามารถใช้โปรไฟล์ที่เฉพาะเจาะจงกับ เนื้อหาวิดีโอระหว่างการเล่น

ตั้งค่าโปรไฟล์รูปภาพสตรีม
รูปที่ 3 แผนภาพลำดับสำหรับการตั้งค่าโปรไฟล์รูปภาพต่อสตรีม
  1. แอปสื่อจะค้นหา MediaQualityManager เพื่อรับรายการโปรไฟล์รูปภาพที่พร้อมใช้งาน
  2. จากนั้นแอปจะใช้ MediaCodec.setParameters เพื่อเลือกและตั้งค่าโปรไฟล์ที่เลือก สำหรับสตรีม
  3. เฟรมเวิร์กจะสื่อสารตัวเลือกนี้ไปยัง HAL คุณภาพสื่อ (MQ) โดยส่งต่อรหัสโปรไฟล์และพารามิเตอร์ของรหัส
  4. สุดท้าย MQ HAL จะส่งพารามิเตอร์เหล่านี้ไปยัง Composer HAL ซึ่ง จะแสดงสตรีมวิดีโอด้วยโปรไฟล์รูปภาพที่ระบุ

ตั้งค่าโปรไฟล์เริ่มต้นส่วนกลาง

มีเพียงแอปของระบบเท่านั้นที่ตั้งค่าโปรไฟล์เริ่มต้นส่วนกลางได้ ซึ่งจะใช้เป็นโปรไฟล์สำรอง สำหรับเนื้อหาที่ไม่ได้กำหนดโปรไฟล์เฉพาะ

  1. แอปของระบบจะดึงรายการโปรไฟล์รูปภาพที่ใช้ได้จากเฟรมเวิร์ก
  2. จากนั้นแอปจะเลือกโปรไฟล์ใดโปรไฟล์หนึ่งเหล่านี้ให้เป็นค่าเริ่มต้นใหม่ทั่วโลกโดย การเรียกใช้ setDefaultPictureProfile(id)
  3. เฟรมเวิร์กจะส่งพารามิเตอร์ของโปรไฟล์นั้นไปยัง HAL คุณภาพสื่อ ซึ่งจะใช้การเปลี่ยนแปลง

API ของ SDK คุณภาพสื่อ

API ของ Media Quality SDK มีเครื่องมือที่จำเป็นสำหรับแอปในการโต้ตอบกับ เฟรมเวิร์ก จุดแรกเข้าหลักคือแพ็กเกจ android.media.quality

android.media.quality

แพ็กเกจนี้มีคลาสหลักสำหรับการจัดการคุณภาพสื่อ

ชั้น คำอธิบาย
MediaQualityManager คลาสส่วนกลางสำหรับการโต้ตอบกับ MQF
PictureProfile คลาสข้อมูลที่แสดงชุดพารามิเตอร์รูปภาพที่สมบูรณ์สำหรับโหมดที่เฉพาะเจาะจง
SoundProfile คลาสข้อมูลสำหรับพารามิเตอร์เสียง
MediaQualityContract คลาสที่มีค่าคงที่สำหรับคีย์พารามิเตอร์ที่กำหนดไว้ล่วงหน้าทั้งหมด

MediaQualityManager

วิธีหลักๆ มีดังนี้

วิธีการ คำอธิบาย
createPictureProfile(PictureProfile profile) สร้างโปรไฟล์รูปภาพใหม่ ต้องได้รับสิทธิ์พิเศษหรือแอปต้องอยู่ในรายการที่อนุญาต
updatePictureProfile(PictureProfile profile) อัปเดตโปรไฟล์รูปภาพที่มีอยู่ เรียกใช้ได้โดยผู้สร้างโปรไฟล์เท่านั้น
removePictureProfile(String profileId) ลบโปรไฟล์ เรียกใช้ได้โดยผู้สร้างโปรไฟล์เท่านั้น
getAvailablePictureProfiles() แสดงผลรายการโปรไฟล์รูปภาพทั้งหมดที่มี
setDefaultPictureProfile(String profileId) ตั้งค่าโปรไฟล์รูปภาพเริ่มต้นส่วนกลาง ต้องได้รับสิทธิ์จาก MANAGE_GLOBAL_PICTURE_QUALITY_SERVICE
registerPictureProfileCallback(PictureProfileCallback cb) ลงทะเบียนการเรียกกลับเพื่อรอรับการเปลี่ยนแปลงโปรไฟล์

ออบเจ็กต์ PictureProfile

ออบเจ็กต์ PictureProfile จะห่อหุ้มข้อมูลทั้งหมดสำหรับโหมดรูปภาพที่ระบุ

public final class PictureProfile {
  private String id;
  private int type; // System or Application
  private String name; // e.g., "Movie", "Game"
  private String inputId; // e.g., "HDMI1"
  private String packageName; // e.g., "com.google.android.youtube"
  private PersistableBundle parameters; // Bundle containing all PQ parameters
}

HAL คุณภาพสื่อ

HAL คุณภาพสื่อคืออินเทอร์เฟซที่อิงตาม AIDL ซึ่งกำหนดไว้ใน hardware/interfaces/tv/mediaquality/aidl/ ผู้ให้บริการ SoC ต้องใช้ อินเทอร์เฟซนี้เพื่อเปิดใช้ Media Quality Framework ในอุปกรณ์ HAL ทำหน้าที่ เป็นสะพานเชื่อมการสื่อสารระหว่าง MediaQualityService ในเฟรมเวิร์ก Android กับฮาร์ดแวร์พื้นฐาน ซึ่งมีหน้าที่ปรับรูปภาพและ เสียง

HAL จะจัดการโปรไฟล์รูปภาพและเสียงโดยใช้ AIDL Parcelable ซึ่งรวมถึง การรับการเปลี่ยนแปลงโปรไฟล์จากเฟรมเวิร์กและการแจ้งเตือนเฟรมเวิร์กเกี่ยวกับการ ปรับที่ระดับฮาร์ดแวร์

โมดูล

อินเทอร์เฟซ HAL ประกอบด้วยไฟล์ AIDL หลักหลายไฟล์ดังนี้

ไฟล์ HAL คำอธิบาย
IMediaQuality.aidl อินเทอร์เฟซหลักสำหรับบริการคุณภาพสื่อ ซึ่งใช้ในการตั้งค่า Listener และค้นหาความสามารถของฮาร์ดแวร์
IPictureProfileChangedListener.aidl อินเทอร์เฟซ Listener ที่เฟรมเวิร์กใช้เพื่อแจ้ง HAL (โดยเฉพาะคอมโพเนนต์อย่าง HAL ของ Composer) เกี่ยวกับการเปลี่ยนแปลงโปรไฟล์รูปภาพ
IPictureProfileAdjustmentListener.aidl อินเทอร์เฟซ Listener ที่ HAL ใช้เพื่อแจ้งให้เฟรมเวิร์กทราบถึงการปรับที่ทำในระดับฮาร์ดแวร์ เช่น เมื่อผู้ใช้เปลี่ยนการตั้งค่าโดยตรงโดยใช้รีโมตฮาร์ดแวร์
PictureParameter.aidl สหภาพ AIDL ที่กำหนดพารามิเตอร์รูปภาพมาตรฐานทั้งหมด เช่น คอนทราสต์และความคมชัด ซึ่งปรับได้
PictureProfile.aidl Parcelable AIDL ที่แสดงออบเจ็กต์ PictureProfile ที่เลเยอร์ HAL ซึ่งมีรหัสโปรไฟล์และพารามิเตอร์ที่เชื่อมโยง
ISoundProfileChangedListener.aidl อินเทอร์เฟซ Listener ที่เฟรมเวิร์กใช้เพื่อแจ้ง HAL เกี่ยวกับการเปลี่ยนแปลงโปรไฟล์เสียง
ISoundProfileAdjustmentListener.aidl อินเทอร์เฟซ Listener ที่ HAL ใช้เพื่อแจ้งให้เฟรมเวิร์กทราบถึงการปรับเสียงที่ทำในระดับฮาร์ดแวร์