미디어 리소스 관리자의 OEM 종속 항목

이 문서는 OEM이 Android 미디어 리소스 관리자 및 관련 API 지원을 제대로 구현할 수 있도록 돕는 데 목적이 있습니다.

1. 최대 동시 코덱 인스턴스

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은 이 테스트를 사용하여 테스트에 합격하는 동시 한도를 생성할 수 있습니다. 방법은 다음과 같습니다.

  1. cts-tradefed를 사용하여 테스트를 먼저 실행합니다.
  2. 결과로 반환되는 불합격 메시지를 평가합니다. 예를 들면 다음과 같습니다.
    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>
    
  3. 테스트 실패 메시지에서 제안된 concurrent-instances 줄을 /etc/media_codecs.xml 파일에 추가합니다.
  4. 다시 테스트를 실행하여 성공 여부를 확인합니다.

2 동영상 코덱의 달성 가능한 프레임 속도

VideoCapabilities.getAchievableFrameRatesFor 인터페이스는 동영상 크기와 관련하여 달성 가능한 동영상 프레임 속도의 범위를 반환합니다. 이 정보는 /etc/media_codecs_performance.xml에 배치된 XML 파일을 통해 OEM에서 각 기기에 제공해야 합니다. 이러한 설정은 com.android.cts.videoperf.VideoEncoderDecoderTestandroid.media.cts.VideoDecoderPerfTest CTS 테스트에서 테스트됩니다.

OEM은 CTS 테스트를 사용하여 테스트에 합격하는 XML 파일을 생성할 수 있습니다. 방법은 다음과 같습니다.

  1. cts-tradefed를 사용하여 테스트를 먼저 실행합니다. Android의 가변적인 성능을 고려했을 때, 테스트를 여러 차례 실행하여 좀 더 정확한 최솟값과 최댓값을 얻는 것이 좋습니다.
  2. 제공된 get_achievable_rates.py 스크립트를 사용하여 XML 파일을 생성합니다.
  3. /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
    
  4. 성능 테스트를 다시 실행하여 성공 여부를 확인합니다.

3. 보안 코덱 및 비보안 코덱의 공존

  • 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 테스트가 실패할 수 있습니다.