เรากำลังจะเปิดตัวเฟรมเวิร์กคุณภาพสื่อใน 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 กำลังทำงานร่วมกับพาร์ทเนอร์ในระบบนิเวศเพื่อรองรับเฟรมเวิร์กคุณภาพของสื่อ
คอมโพเนนต์
กรอบงานคุณภาพสื่อประกอบด้วยองค์ประกอบสำคัญหลายอย่างที่ทำงานร่วมกันในเลเยอร์แอปพลิเคชัน กรอบงาน และฮาร์ดแวร์

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

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

รูปที่ 3 แผนภาพลำดับสำหรับการตั้งค่าโปรไฟล์รูปภาพต่อสตรีม
- แอปสื่อจะค้นหา
MediaQualityManagerเพื่อรับรายการโปรไฟล์รูปภาพที่พร้อมใช้งาน - จากนั้นแอปจะใช้
MediaCodec.setParametersเพื่อเลือกและตั้งค่าโปรไฟล์ที่ต้องการสำหรับการสตรีม - เฟรมเวิร์กจะสื่อสารตัวเลือกนี้ไปยัง HAL คุณภาพสื่อ (MQ) โดยส่งต่อรหัสโปรไฟล์และพารามิเตอร์ของโปรไฟล์
- สุดท้าย MQ HAL จะส่งพารามิเตอร์เหล่านี้ไปยัง Composer HAL ซึ่งจะแสดงสตรีมวิดีโอด้วยโปรไฟล์รูปภาพที่ระบุ
ตั้งค่าโปรไฟล์เริ่มต้นส่วนกลาง
มีเพียงแอปของระบบเท่านั้นที่ตั้งค่าโปรไฟล์เริ่มต้นส่วนกลางได้ ซึ่งจะใช้เป็นโปรไฟล์สำรองสำหรับเนื้อหาที่ไม่ได้กำหนดโปรไฟล์ใดๆ ไว้
- แอประบบจะดึงรายการโปรไฟล์รูปภาพที่มีจากเฟรมเวิร์ก
- จากนั้นแอปจะเลือกโปรไฟล์ใดโปรไฟล์หนึ่งเหล่านี้ให้เป็นค่าเริ่มต้นใหม่ทั่วโลกโดยการเรียกใช้
setDefaultPictureProfile(id) - เฟรมเวิร์กจะส่งพารามิเตอร์ของโปรไฟล์นั้นไปยัง HAL คุณภาพสื่อ ซึ่งจะใช้การเปลี่ยนแปลง
API ของ Media Quality 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 คุณภาพสื่อ
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 |
อินเทอร์เฟซตัวฟังที่ HAL ใช้เพื่อแจ้งให้เฟรมเวิร์กทราบเกี่ยวกับการปรับเสียงที่ทำในระดับฮาร์ดแวร์ |