디스플레이 설정 조정

Android에는 앱이 지원되는 하드웨어에서 디스플레이 설정을 조정할 수 있는 API가 포함되어 있습니다. Android TV OS에서 앱은 이를 활용하여 이상적인 시청 환경을 위해 프레임 속도와 색상 프로필을 일치시켜 콘텐츠가 최상의 형식으로 표시되도록 할 수 있습니다.

콘텐츠 프레임 속도 일치시키기

동영상의 프레임 속도가 디스플레이의 화면 재생 빈도와 일치하지 않으면 사용자는 프레임 속도 변환으로 인해 불쾌감을 주는 모션 흔들림 아티팩트를 경험할 수 있습니다. 이 문제는 특히 느린 화면 이동 시 눈에 띕니다. 따라서 SurfaceControl.Transaction.setFrameRate() API를 사용하여 프레임워크에 콘텐츠의 프레임 속도를 알리고 동영상 콘텐츠에 비선형 프레임 속도 전환이 적용될 수 있는지 신호를 보내는 것이 중요합니다.

자세한 내용은 프레임 속도 가이드를 참고하세요.

선호하는 사진 프로필 일치

Android 16의 MediaQuality API를 사용하면 개발자가 사진 프로필을 제어할 수 있습니다.

다음은 몇 가지 시나리오의 예입니다.

  • 더 넓은 다이나믹 레인지로 마스터링된 영화 및 TV 시리즈의 경우 개발자는 크리에이터가 의도한 대로 콘텐츠를 정확하게 표시하기 위해 Filmmaker 모드를 요청할 수 있습니다. 색상 정확도가 더 높은 시네마 프로필은 밝기를 높이는 대신 어두운 부분의 미묘한 디테일을 살려 줍니다.
  • 종종 협소한 다이나믹 레인지로 마스터링되고 일광에서 시청되는 라이브 스포츠 이벤트의 경우 색상 정확성보다 밝기를 우선하는 프로필을 사용하는 것이 좋습니다.
  • 게임 개발자는 플레이어가 디스플레이에서 최상의 성능을 얻을 수 있도록 최소한의 이미지 처리로 짧은 지연 시간 프로필을 요청할 수 있습니다.

시스템 사진 프로필 선택

그림 프로필을 선택하기 전에 먼저 기기에서 이를 지원하는지 확인하는 것이 중요합니다.

다음 스니펫은 getAvailablePictureProfiles()를 사용하여 지원되는 모든 사진 프로필을 쿼리하고 스포츠 프로필을 적용하는 방법을 보여줍니다.

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.BAKLAVA) {
    val mediaQualityManager: MediaQualityManager =
        context.getSystemService(MediaQualityManager::class.java)
    val profiles = mediaQualityManager.getAvailablePictureProfiles(null)
    for (profile in profiles) {
        // If we have a system sports profile, apply it to our media codec
        if (profile.profileType == PictureProfile.TYPE_SYSTEM
            && profile.name == NAME_SPORTS
        ) {
            val bundle = Bundle().apply { 
                putParcelable(MediaFormat.KEY_PICTURE_PROFILE_INSTANCE, profile)
            }
            mediaCodec.setParameters(bundle)
        }
    }
}

이름으로 특정 프로필을 가져오려면 getPictureProfile()를 사용합니다.

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.BAKLAVA) {
    val profile = mediaQualityManager.getPictureProfile(
        PictureProfile.TYPE_SYSTEM, NAME_SPORTS, null)
}

프로필을 사용할 수 있는지 쿼리할 필요가 없는 경우 MediaFormat.KEY_PICTURE_PROFILE_INSTANCE를 사용하여 프로필 ID를 MediaCodec에 직접 제공할 수 있습니다.

지원되는 프로필은 기기에 따라 다를 수 있지만 다음과 같은 알려진 시스템 프로필 ID와 일치시켜 볼 수 있습니다.

const val NAME_STANDARD: String = "standard"
const val NAME_VIVID: String = "vivid"
const val NAME_SPORTS: String = "sports"
const val NAME_GAME: String = "game"
const val NAME_MOVIE: String = "movie"
const val NAME_ENERGY_SAVING: String = "energy_saving"
const val NAME_USER: String = "user"