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
은 동영상 인코더에서 내보낸 인코딩 통계 정보의 수준을 다음과 같이 설명합니다.인코더가 인코딩 통계에 관한 정보를 생성하지 않으면 이 키는
VIDEO_ENCODING_STATISTICS_LEVEL_NONE
으로 설정됩니다.인코더가 각 프레임에
KEY_VIDEO_QP_AVERAGE
와KEY_PICTURE_TYPE
을 생성할 때 이 키는VIDEO_ENCODING_STATISTICS_LEVEL_1
으로 설정됩니다.
참조 구현은 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);