미디어 품질 프레임워크

미디어 품질 프레임워크는 Android 16에서 Android TV용으로 도입되었으며, 목표는 화질 (PQ) 및 오디오 품질 (AQ) 조정을 위한 표준화된 API를 설정하는 것입니다. 기본 목표는 다양한 Android TV 기기에서 이러한 조정에 대한 통합된 접근 방식을 제공하는 것입니다. 이 표준화된 프레임워크는 일관된 Android API 세트를 제공하여 앱 개발자, OEM, SoC 공급업체의 개발을 간소화하는 것을 목표로 합니다. 특히 SoC 공급업체의 경우 Android 프레임워크가 PQ 및 AQ 구성을 처리할 수 있으므로 다양한 애플리케이션 개발자와 협업하는 오버헤드가 줄어듭니다.

궁극적으로 Google과 Android 플랫폼의 경우 프래그먼트화를 줄이고, 품질과 확장성을 개선하고, 새로운 기능을 제공하며, 통합 AQ/PQ UI와 개선된 사용자 환경을 위한 기반을 마련하는 데 도움이 됩니다.

미디어 품질 프레임워크는 TV 시청 환경을 개선하기 위한 다양한 사용 사례를 지원합니다. 프로필과 설정은 패키지 이름 (앱)별, 입력 ID별로 관리할 수 있습니다. 또한 프로필은 시스템 앱이나 허용 목록에 있는 다른 앱에서 만들 수 있습니다. 프로필은 프로필 소유자만 업데이트하거나 삭제할 수 있습니다. 구체적으로 프레임워크는 사진 및 소리 프로필을 관리합니다. 사진 매개변수의 예로는 밝기, 대비, 선명도가 있습니다. 사운드 매개변수의 예로는 베이스와 트레블이 있습니다. 이러한 프로필은 전역 기본 프로필 설정, MediaCodec을 통한 스트리밍 프로필, 특정 미디어 앱의 앱 기본 프로필 설정, HDMI와 같은 특정 입력의 TV 입력 사진 프로필 설정 등 다양한 컨텍스트에서 적용할 수 있습니다. 프레임워크는 상태 변경도 지원하므로 HDR과 같은 상태에 대해 다양한 매개변수 집합을 허용하고, 진행 중인 처리를 위해 활성 사진 프로필을 관리하고, 주변 조명 백라이트 기능을 처리할 수 있습니다.

Android팀은 생태계 파트너와 협력하여 미디어 품질 프레임워크를 지원하고 있습니다.

구성요소

미디어 품질 프레임워크는 애플리케이션, 프레임워크, 하드웨어 레이어 전반에서 함께 작동하는 여러 주요 구성요소로 구성됩니다.

PQ AQ 표준화 다이어그램

그림 1. 미디어 품질 프레임워크 구성요소 간 상호작용

  • 미디어 품질 관리자 (SDK API): 앱이 사진 및 소리 프로필을 관리할 수 있도록 하는 애플리케이션 지향 SDK API입니다.
  • 미디어 품질 서비스: 핵심 비즈니스 로직을 포함하고 프로필, 권한, HAL과의 통신을 관리하는 시스템 서비스입니다.
  • 미디어 품질 데이터베이스: 모든 사진 및 소리 프로필을 저장하는 SQLite 데이터베이스입니다.
  • 미디어 품질 계약: 앱과 프레임워크 간 통신에 사용되는 표준화된 매개변수와 데이터 구조를 정의합니다.
  • 미디어 품질 HAL: SoC 공급업체가 기본 하드웨어에 사진 및 소리 프로필 변경사항을 전달하기 위해 구현하는 하드웨어 추상화 계층입니다.

기능

미디어 품질 프레임워크는 미디어 품질을 관리하는 유연하고 강력한 시스템을 제공하기 위해 다양한 기능을 지원합니다.

프로필 관리

  • 앱 관리 프로필: 앱은 맞춤 환경을 위해 자체 프로필을 만들고, 업데이트하고, 삭제할 수 있습니다.
  • 기본 프로필: 시스템 앱은 특정 앱 또는 TV 입력의 기본 프로필을 설정할 수 있습니다 (예: HDMI 1).
  • 전역 기본 프로필: 특정 프로필이 설정되지 않은 경우 적용되는 시스템 전체 대체 프로필입니다.

전체 워크플로

다음 다이어그램은 일반적인 미디어 품질 작업의 호출 시퀀스를 보여줍니다.

사진 프로필 만들기 및 적용

사진 프로필 만들기

그림 2. 사진 프로필 생성 시퀀스 다이어그램

  1. 시스템 앱은 setPictureProfileAllowList()를 호출하여 미디어 앱에 프로필 생성 권한을 부여합니다.
  2. 미디어 앱은 프로필 변경사항에 관한 알림을 수신하기 위해 PictureProfileCallback를 등록합니다.
  3. 미디어 앱은 PictureProfile 객체와 함께 createPictureProfile()를 호출합니다.
  4. MediaQualityService는 요청을 처리하고, 프로필을 데이터베이스에 저장하고, 등록된 콜백 (onPictureProfileAdded() 또는 onError())을 통해 앱에 성공 또는 실패를 알립니다.

스트림별 사진 프로필 설정

이 워크플로는 애플리케이션이 재생 중에 동영상 콘텐츠에 특정 프로필을 적용하는 방법을 보여줍니다.

스트림 사진 프로필 설정

그림 3. 스트림별 사진 프로필 설정 시퀀스 다이어그램

  1. 미디어 앱은 MediaQualityManager에 쿼리하여 사용 가능한 사진 프로필 목록을 가져옵니다.
  2. 그런 다음 앱은 MediaCodec.setParameters를 사용하여 스트림에 원하는 프로필을 선택하고 설정합니다.
  3. 프레임워크는 프로필 ID와 매개변수를 전달하여 이 선택을 미디어 품질 (MQ) HAL에 전달합니다.
  4. 마지막으로 MQ HAL은 이러한 매개변수를 컴포저 HAL에 전송하고 컴포저 HAL은 지정된 사진 프로필로 동영상 스트림을 렌더링합니다.

전역 기본 프로필 설정

시스템 앱만 특정 프로필이 할당되지 않은 콘텐츠의 대체 역할을 하는 전역 기본 프로필을 설정할 수 있습니다.

  1. 시스템 앱은 프레임워크에서 사용 가능한 사진 프로필 목록을 가져옵니다.
  2. 그런 다음 앱은 setDefaultPictureProfile(id)를 호출하여 이러한 프로필 중 하나를 새로운 전역 기본값으로 선택합니다.
  3. 프레임워크는 해당 프로필의 매개변수를 미디어 품질 HAL에 전송하고 HAL은 변경사항을 적용합니다.

Media Quality 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 결합입니다.
PictureProfile.aidl 프로필 ID와 연결된 매개변수를 포함하는 HAL 레이어의 PictureProfile 객체를 나타내는 AIDL parcelable입니다.
ISoundProfileChangedListener.aidl 프레임워크가 HAL에 소리 프로필 변경사항을 알리는 데 사용하는 리스너 인터페이스입니다.
ISoundProfileAdjustmentListener.aidl HAL이 하드웨어 수준에서 이루어진 소리 조정을 프레임워크에 알리는 데 사용하는 리스너 인터페이스입니다.