이 문서는 OEM이 Android 미디어 리소스 관리자 및 관련 API 지원을 제대로 구현할 수 있도록 돕는 데 목적이 있습니다.
최대 동시 코덱 인스턴스
CodecCapabilities.getMaxSupportedInstances
인터페이스는 지원되는 최대 동시 코덱 인스턴스 수를 반환합니다.
CTS 테스트 testGetMaxSupportedInstances(android.media.cts.MediaCodecCapabilitiesTest)
는 /etc/media_codecs.xml
에 설정된 적절한 최댓값을 적용하는 데 사용됩니다.
예를 들면 다음과 같습니다.
... <MediaCodecs> ... <Encoders> <MediaCodec name="OMX.<vendor>.video.encoder.avc" type="video/avc" > ... <Limit name="concurrent-instances" max="13" /> </MediaCodec> ... </Encoders> ... </MediaCodecs>
OEM은 이 테스트를 사용하여 테스트를 통과하는 동시 한도를 생성할 수 있습니다. 방법은 다음과 같습니다.
- cts-tradefed를 사용하여 테스트를 먼저 실행합니다.
- 결과로 반환되는 실패 메시지를 평가합니다. 예를 들면 다음과 같습니다.
There was 1 failure: 1) testGetMaxSupportedInstances(android.media.cts.MediaCodecCapabilitiesTest) junit.framework.AssertionFailedError: In order to pass the test, please publish following codecs' concurrent instances limit in /etc/media_codecs.xml: <MediaCodec name="OMX.<vendor>.video.encoder.mpeg4" type="video/mp4v-es" > <Limit name="concurrent-instances" max="13" /> </MediaCodec> <MediaCodec name="OMX.<vendor>.video.encoder.h263" type="video/3gpp" > <Limit name="concurrent-instances" max="13" /> </MediaCodec> <MediaCodec name="OMX.<vendor>.video.encoder.avc" type="video/avc" > <Limit name="concurrent-instances" max="13" /> </MediaCodec> <MediaCodec name="OMX.<vendor>.video.encoder.vp8" type="video/x-vnd.on2.vp8" > <Limit name="concurrent-instances" max="13" /> </MediaCodec> <MediaCodec name="OMX.<vendor>.video.decoder.avc" type="video/avc" > <Limit name="concurrent-instances" max="13" /> </MediaCodec> <MediaCodec name="OMX.<vendor>.video.decoder.avc.secure" type="video/avc" > <Limit name="concurrent-instances" max="4" /> </MediaCodec> <MediaCodec name="OMX.<vendor>.video.decoder.mpeg4" type="video/mp4v-es" > <Limit name="concurrent-instances" max="12" /> </MediaCodec> <MediaCodec name="OMX.<vendor>.video.decoder.h263" type="video/3gpp" > <Limit name="concurrent-instances" max="12" /> </MediaCodec> <MediaCodec name="OMX.<vendor>.video.decoder.vp8" type="video/x-vnd.on2.vp8" > <Limit name="concurrent-instances" max="12" /> </MediaCodec>
- 테스트 실패 메시지에서 제안된
concurrent-instances
줄을/etc/media_codecs.xml
파일에 추가합니다. - 다시 테스트를 실행하여 성공 여부를 확인합니다.
동영상 코덱의 달성 가능한 프레임 속도
VideoCapabilities.getAchievableFrameRatesFor
인터페이스는 동영상 크기와 관련하여 달성 가능한 동영상 프레임 속도의 범위를 반환합니다. 이 정보는 /etc/media_codecs_performance.xml
에 배치된 XML 파일을 통해 OEM에서 각 기기에 제공해야 합니다. 이러한 설정은 com.android.cts.videoperf.VideoEncoderDecoderTest
및 android.media.cts.VideoDecoderPerfTest
CTS 테스트에서 테스트됩니다.
OEM은 CTS 테스트를 사용하여 테스트를 통과하는 XML 파일을 생성할 수 있습니다. 방법은 다음과 같습니다.
- cts-tradefed를 사용하여 테스트를 먼저 실행합니다. Android의 가변적인 성능을 고려했을 때, 테스트를 여러 차례 실행하여 좀 더 정확한 최솟값과 최댓값을 얻는 것이 좋습니다.
- 제공된 get_achievable_rates.py 스크립트를 사용하여 XML 파일을 생성합니다.
/etc/media_codecs_performance.xml
에 XML 파일을 배치합니다.
일반적으로 XML 파일을 기기 프로젝트(device/<vendor>/<product>)에 배치하고 다음과 같이PRODUCT_COPY_FILES
줄을device.mk
에 추가하여 이 작업을 완료할 수 있습니다.PRODUCT_COPY_FILES += \ ... device/moto/shamu/media_codecs.xml:system/etc/media_codecs.xml \ + device/moto/shamu/media_codecs_performance.xml:system/etc/media_codecs_performance.xml
- 성능 테스트를 다시 실행하여 성공 여부를 확인합니다.
보안 코덱 및 비보안 코덱의 공존
- supports-secure-with-non-secure-codec — 보안 코덱의 인스턴스와 비보안 코덱의 인스턴스가 동시에 공존할 수 없는 경우 이러한 내용이
media_codecs.xml
파일의 전역 설정으로 표시되어야 합니다.<MediaCodecs> <Settings> <Setting name="supports-secure-with-non-secure-codec" value="false" /> </Settings> <Encoders> …
- supports-multiple-secure-codecs — 여러 보안 코덱 인스턴스의 공존이 지원되지 않는 경우 이러한 내용이
media_codecs.xml
파일의 전역 설정으로 표시되어야 합니다.<MediaCodecs> <Settings> <Setting name="supports-multiple-secure-codecs" value="false" /> </Settings> <Encoders> …
- 두 설정은 모두 기본적으로 true입니다. 즉, 지원되는 경우 설정 줄을
media_codecs.xml
에 추가하지 않아도 됩니다. - 두 설정이 제대로 이루어지지 않았을 경우
ResourceManagerTest
CTS 테스트가 실패할 수 있습니다.