ROI 구현을 위한 OEM 안내

Android 15에서는 관심 지역 (RoI) 사용자 구성을 Android 동영상에 통합 인코딩 프레임워크입니다. 이 기능은 다음을 통해 RoI의 압축 품질을 개선합니다. 동영상에 사용자 구성을 통합하고 분석하는 공개 API 제공 인코더-디코더

구현

SoC 공급업체 및 OEM은 FEATURE_Roi 드림 플래그. FEATURE_Roi를 사용 설정하지 않으면 동영상 인코더 동작이 변경되지 않습니다.

동영상 프레임워크 변경사항

이 섹션에서는 이를 구현하는 데 필요한 동영상 프레임워크의 변경사항을 자세히 설명합니다. 기능을 사용할 수 있습니다.

Codec2의 키

Android 15에서는 양자화 매개변수 맵이 (QP_map) 및 직사각형 구성 (rect)이 RoI로 정의됨 구성 유형을 사용합니다 또한 두 개의 키가 Codec2 (C2)에 도입되어 이러한 새로운 유형을 지원합니다. 두 키 사용은 공개 API와 동일합니다. 인코더의 프레임 루프 내에서 구성은 동적으로 조정됨 입력 버퍼가 큐에 추가되기 전에, 다음과 같습니다.

  • 고정 시나리오에서 현재 인코더는 이전 프레임과 동일한 구성을 사용합니다.

  • 동적 시나리오에서는 RoI 구성 유형이 동적으로 변경될 수 있습니다.

C2의 새로운 키는 다음 섹션에서 설명합니다.

kParamIndexQpOffsetMapBuffer

kParamIndexQpOffsetMapBuffer 키는 프레임의 qp-offset 맵에 신호를 보냅니다. 그 값은 매개변수 PARAMETER_KEY_QP_OFFSET_MAP 최저가 setParameters.

kParamIndexQpOffsetMapBuffer는 다음에서 바이트 배열입니다. C2InfoBuffer, 다음 속성을 사용합니다.

  • 길이: 한 프레임의 16x16 블록 수

  • 값: 배열의 각 값은 지역 내 16x16 블록의 QP 오프셋입니다. -51~51. 타겟 최대 코딩 단위 (LCU)의 QP는 인코더 속도 제어와 오프셋의 조합입니다. 계산된 결과가 0~51을 초과하는 경우 0~51로 잘립니다.

    • 0: QP 오프셋이 없는 경우 QP는 원래 속도 컨트롤에 의해 결정됩니다.
    • 0이 아닌 경우: QP는 원래 속도 컨트롤과 오프셋입니다.
    • 음수인 경우: 대상 LCU에서 동영상 화질이 향상됩니다.
    • 양성인 경우: 타겟 LCU에서 동영상 품질이 저하됩니다.
  • 사용법: 사용자는 이 키를 16x16 블록으로 구성해야 합니다. 인코더는 입력 시퀀스를 16x16 크기의 값을 평균화하여 구성을 실제 LCU 크기로 LCU의 모든 블록이 포함되어 있습니다

C2_PARAMKEY_QP_OFFSET_RECTS

C2_PARAMKEY_QP_OFFSET_RECTS 키 (coding.qp-offset-rects로 설정됨 ROI가 QpOffset-Rects로 설정됩니다. 값은 setParameters의 입력 매개변수 PARAMETER_KEY_QP_OFFSET_RECTS를 사용하여 설정됩니다.

이 키를 지원하려면 C2QpOffsetRectStruct 구조를 사용합니다. 도입됩니다.

struct C2QpOffsetRectStruct : C2Rect {
  int32_t qpOffset;

  DEFINE_AND_DESCRIBE_C2STRUCT(QpOffsetRect)
  C2FIELD(width, "width")
  C2FIELD(height, "height")
  C2FIELD(left, "left")
  C2FIELD(top, "top")
  C2FIELD(qpOffset, "qp-offset")
}

각각의 의미는 다음과 같습니다.

  • topleft: 직사각형 형태의 RoI 좌표입니다. ROI는 LCU 경계에 맞게 확장됩니다. 이 값은 각 픽셀의 왼쪽 상단 모서리에서 ((0,0), (16, 16))이 완전한 16x16 블록이 필요합니다.

  • qpOffset: 배열의 각 값은 타겟의 QP 오프셋을 나타냅니다. rect 지역. 그 정의와 사용법은 kParamIndexQpOffsetMapBuffer 값입니다.

를 통해 개인정보처리방침을 정의할 수 있습니다.

매핑 알고리즘

다음 표에서는 공개 키에서 동영상으로의 매핑을 보여줍니다. 프레임워크:

공개 키 또는 API 동영상 프레임워크에서의 매핑
PARAMETER_KEY_QP_OFFSET_MAP 값은 kParamIndexQpOffsetMapBufferC2InfoBuffer 인스턴스.
PARAMETER_KEY_QP_OFFSET_RECTS 값이 String에서 다음으로 변환됩니다. Struct C2QpOffsetRectStruct 및 다음으로 전달됨 C2_PARAMKEY_QP_OFFSET_RECTS입니다.

오류 처리

OEM 구현은 다음과 같은 오류 사례를 처리해야 합니다.

오류 사례 취급
공급업체 키와 표준 키 모두 RoI를 사용 설정하는 데 사용됩니다. 사용자가 setFeatureEnabled(FEATURE_ROI) 그리고 공급업체 키를 사용하여 ROI를 사용 설정합니다. ROI가 사용 설정되어 있어야 합니다.
QP 오프셋이 범위 내에 있지만 SoC 공급업체에서 지원하지 않습니다. 사용자가 QP 오프셋을 12로 설정하지만 SoC는 최대 10의 QP 오프셋만 지원합니다. 지원되는 QP 오프셋 범위는 최선을 다해 유지합니다. 값은 고정된 SoC의 지원 범위로 변경합니다.
여러 RoI 구성 (표준화된 키 또는 공급업체별 키)가 단일 프레임으로 설정됩니다. 사용자가 프레임 1에 표준화된 키와 공급업체 키를 모두 사용합니다. 가능한 경우 프레임워크는 첫 번째 표준화된 rect를 유지합니다. 첫 번째 표준화된 QP_map 구성 또는 둘 다일 수 있습니다. 각 카테고리에서 프레임워크는 하나의 표준화된 표준화된 구성을 사용할 수 있는 경우 SoC 구현은 공급업체 구성을 무시해야 합니다. 만약 여러 구성이 SoC로 전송되기 때문에 SoC 공급업체는 하나의 RoI 구성만 사용하고 나머지 구성은 무시합니다.

구성은 다음 우선순위에 따라 유지됩니다.

  1. 표준화된 rect
  2. 표준화된 QP_map
  3. 공급업체 rect
  4. 공급업체 QP_map