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

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

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

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

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

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

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

คอมโพเนนต์

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

แผนภาพการกำหนดมาตรฐาน PQ AQ
รูปที่ 1 การโต้ตอบระหว่างคอมโพเนนต์ของเฟรมเวิร์กคุณภาพของสื่อ
  • ตัวจัดการคุณภาพของสื่อ (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. สุดท้าย HAL MQ จะส่งพารามิเตอร์เหล่านี้ไปยัง Composer HAL ซึ่งจะแสดงสตรีมวิดีโอด้วยโปรไฟล์รูปภาพที่ระบุ

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

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

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

Media Quality SDK API

Media Quality SDK API มีเครื่องมือที่จำเป็นสำหรับแอปในการโต้ตอบกับเฟรมเวิร์ก จุดเริ่มต้นหลักคือแพ็กเกจ 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 ต้องใช้อินเทอร์เฟซนี้เพื่อเปิดใช้เฟรมเวิร์กคุณภาพของสื่อในอุปกรณ์ของตน HAL ทำหน้าที่เป็นสะพานเชื่อมการสื่อสารระหว่าง MediaQualityService ในเฟรมเวิร์ก Android กับฮาร์ดแวร์พื้นฐาน ซึ่งมีหน้าที่ใช้การปรับรูปภาพและเสียง

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

โมดูล

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

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