미디어 품질 프레임워크는 Android TV용 Android 16에서 화질 (PQ) 및 오디오 품질 (AQ) 조정을 위한 표준화된 API를 설정하기 위해 도입되었습니다. 주요 목표는 다양한 Android TV 기기에서 이러한 조정에 대한 통합된 접근 방식을 제공하는 것입니다. 이 표준화된 프레임워크는 일관된 Android API 세트를 제공하여 앱 개발자, OEM (Original Equipment Manufacturer), SoC (System-on-Chip) 공급업체의 개발을 간소화하는 것을 목표로 합니다. 특히 SoC 공급업체의 경우 Android 프레임워크에서 PQ 및 AQ 구성을 처리할 수 있으므로 다양한 애플리케이션 개발자와 협업하는 오버헤드가 줄어듭니다.
궁극적으로 Google 및 Android 플랫폼의 경우 단편화를 줄이고 품질과 확장성을 개선하며 새로운 기능을 제공하고 통합된 AQ/PQ UI와 개선된 사용자 환경을 위한 토대를 마련하는 데 도움이 됩니다.
미디어 품질 프레임워크는 TV 시청 환경을 개선하기 위해 다양한 사용 사례를 지원합니다. 프로필 및 설정은 패키지 이름(앱) 또는 입력 ID별로 관리할 수 있습니다. 또한 허용 목록에 있는 시스템 앱 또는 앱에서 프로필을 만들 수 있으며 소유자만 프로필을 업데이트하거나 삭제할 수 있습니다.
특히 프레임워크는 사진 및 사운드 프로필을 관리합니다. 사진 매개변수의 예로는 밝기, 대비, 선명도가 있으며 사운드 매개변수의 예로는 베이스와 트레블이 있습니다.
이러한 프로필은 전역 기본 프로필 설정, MediaCodec을 사용하는 스트리밍 프로필, 특정 미디어 앱의 앱 기본 프로필 설정, HDMI와 같은 특정 입력의 TV 입력 사진 프로필 설정 등 다양한 컨텍스트에서 적용할 수 있습니다. 프레임워크는 상태 변경 (HDR과 같은 상태에 다른 매개변수 세트 허용)도 지원하고, 진행 중인 처리를 위한 활성 사진 프로필을 관리하며, 주변 백라이트 기능을 처리합니다.
Android팀은 미디어 품질 프레임워크를 지원하기 위해 Google의 에코시스템 파트너와 협력하고 있습니다.
구성요소
미디어 품질 프레임워크는 애플리케이션, 프레임워크, 하드웨어 레이어에서 함께 작동하는 여러 주요 구성요소로 구성됩니다.
- 미디어 품질 관리자 (SDK API): 앱이 사진 및 사운드 프로필을 관리할 수 있는 애플리케이션 대상 SDK API입니다.
- 미디어 품질 서비스: 프로필, 권한, HAL과의 통신을 관리하는 핵심 비즈니스 로직이 포함된 시스템 서비스입니다.
- 미디어 품질 데이터베이스: 모든 사진 및 사운드 프로필을 저장하는 SQLite 데이터베이스입니다.
- 미디어 품질 계약: 앱과 프레임워크 간의 통신에 사용되는 표준화된 매개변수 및 데이터 구조를 정의합니다.
- 미디어 품질 HAL: SoC 공급업체가 기본 하드웨어에 사진 및 사운드 프로필 변경사항을 전달하기 위해 구현하는 하드웨어 추상화 계층입니다.
기능
미디어 품질 프레임워크는 미디어 품질을 관리하기 위한 유연하고 강력한 시스템을 제공하기 위해 다양한 기능을 지원합니다.
프로필 관리
- 앱 관리 프로필: 앱은 맞춤설정된 환경을 위해 자체 프로필을 만들고, 업데이트하고, 삭제할 수 있습니다.
- 기본 프로필: 시스템 앱은 특정 앱 또는 TV 입력 (예: HDMI 1)의 기본 프로필을 설정할 수 있습니다.
- 전역 기본 프로필: 특정 프로필이 설정되지 않은 경우 적용되는 시스템 전체 대체 프로필입니다.
전체 워크플로
다음 다이어그램은 일반적인 미디어 품질 작업의 호출 시퀀스를 보여줍니다.
사진 프로필 만들기 및 적용
- 시스템 앱은
setPictureProfileAllowList()를 호출하여 미디어 앱에 프로필을 만들 수 있는 권한을 부여합니다. - 미디어 앱은
PictureProfileCallback을 등록하여 프로필 변경에 관한 알림을 수신합니다. - 미디어 앱은
createPictureProfile()객체로PictureProfile을 호출합니다. MediaQualityService는 요청을 처리하고 프로필을 데이터베이스에 저장하며 등록된 콜백 (onPictureProfileAdded()또는onError())을 사용하여 앱에 성공 또는 실패를 알립니다.
스트림별 사진 프로필 설정
이 워크플로는 애플리케이션이 재생 중에 동영상 콘텐츠에 특정 프로필을 적용하는 방법을 보여줍니다.
- 미디어 앱은
MediaQualityManager를 쿼리하여 사용 가능한 사진 프로필 목록을 가져옵니다. - 그런 다음 앱은
MediaCodec.setParameters를 사용하여 스트림의 선택된 프로필을 선택하고 설정합니다. - 프레임워크는 이 선택사항을 미디어 품질 (MQ) HAL에 전달하여 프로필 ID와 매개변수를 전달합니다.
- 마지막으로 MQ HAL은 이러한 매개변수를 지정된 사진 프로필로 동영상 스트림을 렌더링하는 컴포저 HAL에 보냅니다.
전역 기본 프로필 설정
시스템 앱만 전역 기본 프로필을 설정할 수 있으며, 이 프로필은 특정 프로필이 할당되지 않은 모든 콘텐츠의 대체 역할을 합니다.
- 시스템 앱은 프레임워크에서 사용 가능한 사진 프로필 목록을 가져옵니다.
- 그런 다음 앱은
setDefaultPictureProfile(id)를 호출하여 이러한 프로필 중 하나를 새 전역 기본값으로 선택합니다. - 프레임워크는 해당 프로필의 매개변수를 미디어 품질 HAL에 보내고, 그러면 변경사항이 적용됩니다.
미디어 품질 SDK API
미디어 품질 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은 hardware/interfaces/tv/mediaquality/aidl/에 정의된 AIDL 기반 인터페이스입니다. SoC 공급업체는 기기에서 미디어 품질 프레임워크를 사용 설정하기 위해 이 인터페이스를 구현해야 합니다. HAL은 Android 프레임워크의 MediaQualityService와 사진 및 사운드 조정을 적용하는 기본 하드웨어 간의 통신 브리지 역할을 합니다.
HAL은 AIDL parcelable을 사용하여 사진 및 사운드 프로필을 관리합니다. 여기에는 프레임워크에서 프로필 변경사항을 수신하고 하드웨어 수준에서 이루어진 조정을 프레임워크에 알리는 작업이 포함됩니다.
모듈
HAL 인터페이스는 다음과 같은 여러 주요 AIDL 파일로 구성됩니다.
| HAL 파일 | 설명 |
|---|---|
IMediaQuality.aidl |
리스너를 설정하고 하드웨어 기능을 검색하는 데 사용되는 미디어 품질 서비스의 기본 인터페이스입니다. |
IPictureProfileChangedListener.aidl |
프레임워크에서 사진 프로필 변경사항을 HAL (특히 컴포저 HAL과 같은 구성요소)에 알리는 데 사용하는 리스너 인터페이스입니다. |
IPictureProfileAdjustmentListener.aidl |
HAL에서 하드웨어 수준에서 이루어진 조정사항을 프레임워크에 알리는 데 사용하는 리스너 인터페이스입니다(예: 사용자가 하드웨어 리모컨을 사용하여 설정을 직접 변경하는 경우). |
PictureParameter.aidl |
조정할 수 있는 대비 및 선명도와 같은 모든 표준 사진 매개변수를 정의하는 AIDL union입니다. |
PictureProfile.aidl |
프로필 ID와 연결된 매개변수가 포함된 HAL 레이어에서 PictureProfile 객체를 나타내는 AIDL parcelable입니다. |
ISoundProfileChangedListener.aidl |
프레임워크에서 사운드 프로필 변경사항을 HAL에 알리는 데 사용하는 리스너 인터페이스입니다. |
ISoundProfileAdjustmentListener.aidl |
HAL에서 하드웨어 수준에서 이루어진 사운드 조정을 프레임워크에 알리는 데 사용하는 리스너 인터페이스입니다. |