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

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

ออบเจ็กต์ 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 คุณภาพสื่อ

Media Quality 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 ใช้เพื่อแจ้งให้เฟรมเวิร์กทราบเกี่ยวกับการปรับเสียงที่ทำในระดับฮาร์ดแวร์