동영상 인코딩 통계 내보내기

Android 13부터 앱 클라이언트는 동영상 인코더에 각 인코딩된 동영상 프레임의 인코딩 통계를 내보내도록 요청할 수 있습니다. 동영상 인코더로부터 얻은 통계를 활용하면 앱은 인코딩 전에 멀티패스 인코딩 및 프레임 사전 처리와 같은 동영상 인코딩 작업을 최적화할 수 있습니다.

동영상 인코딩 통계를 내보내려면 SoC 공급업체가 동영상 인코더 드라이버 업데이트에 설명된 대로 동영상 인코더 드라이버를 변경해야 합니다.

동영상 인코딩 통계 데이터

Android 13에서는 동영상 인코더가 다음 표에 표시된 것처럼 통계 데이터를 내보냅니다.

인코더 통계 이름 설명
프레임당 평균 블록 QP 비트스트림으로 인코딩된 동영상 프레임의 모든 블록 QP의 평균입니다.
사진 유형 유형 I, P 또는 B

개발자는 MediaFormat 개발자 클래스를 사용하여 각 프레임의 통계 정보를 검색할 수 있습니다.

동영상 인코더 드라이버 업데이트

동영상 인코딩 통계 내보내기를 지원하려면 SoC 공급업체가 동영상 인코더 드라이버를 변경해야 합니다. 다음 키는 Android 13의 Codec 2.0 기반에 추가됩니다.

  • KEY_VIDEO_QP_AVERAGE는 프레임당 평균 블록 QP를 설명합니다.

    KEY_VIDEO_QP_AVERAGE 키 구현에 다음 규칙이 적용됩니다.

    • SoC 인코더는 Codec 2.0으로 내보내기 전에 블록 QP의 평균을 가장 가까운 정수로 반올림해야 합니다.

    • 평균 값은 루마 평면에서만 계산됩니다.

    • SoC 인코더는 현재 프레임의 모든 블록이 건너뛰기 모드일 경우 INT_MAX를 반환해야 합니다. 이 조건은 계수가 인코딩되지 않고 프레임에서 중요한 QP 정보가 인코딩되지 않은 경우에 발생합니다.

  • KEY_PICTURE_TYPE은 인코딩된 프레임의 사진 유형을 PICTURE_TYPE_I, PICTURE_TYPE_P, PICTURE_TYPE_B 또는 PICTURE_TYPE_UNKNOWN으로 설명합니다.

  • KEY_VIDEO_ENCODING_STATISTICS_LEVEL은 동영상 인코더에서 내보낸 인코딩 통계 정보의 수준을 다음과 같이 설명합니다.

참조 구현은 VideoEncodingStatisticsTest를 참고하세요.

확인

VideoEncodingStatisticsTest CTS 테스트를 실행하여 동영상 인코딩 통계의 평균 QP 부분이 올바르게 작동하는지 확인: CTS는 동일한 입력 동영상의 두 가지 인코딩을 실행합니다. 하나는 비트 전송률이 높고, 다른 하나는 비트 전송률이 더 낮습니다. 그러면 CTS는 두 인코딩에서 내보낸 두 개의 평균 QP 값을 비교합니다. 비트 전송률이 낮은 인코딩의 평균 QP가 비트 전송률이 높은 인코딩의 평균 QP보다 높은 경우 CTS는 통과합니다.

동영상 인코딩 통계 내보내기 기능이 사용 설정된 경우 이를 사용 중지하는 기능을 확인하려면 VIDEO_ENCODING_STATISTICS_LEVEL_NONE 키를 다음과 같이 사용합니다.

format.setInteger(MediaFormat.KEY_VIDEO_ENCODING_STATISTICS_LEVEL, MediaFormat.VIDEO_ENCODING_STATISTICS_LEVEL_NONE);