Skip to main content

OffscreenSharedTexture 객체

  • textureInfo 객체 - 공유 텍스처 정보
    • widgetType 문자열 - 텍스처의 위젯 타입. popup 또는 frame이 가능하다.
    • pixelFormat 문자열 - 텍스처의 픽셀 포맷. rgba 또는 bgra가 가능하다.
    • codedSize Size - 비디오 프레임의 전체 크기.
    • visibleRect Rectangle - [0, 0, codedSize.width(), codedSize.height()]의 부분 영역. OSR(Off-Screen Rendering) 경우에는 전체 영역을 가진다.
    • contentRect Rectangle - 캡처러가 채우고자 하는 비디오 프레임의 영역. OSR 경우에는 페인팅이 필요한 dirtyRect와 동일하다.
    • timestamp 숫자 - 캡처 시작 이후의 시간(마이크로초 단위).
    • metadata 객체 - 추가 메타데이터. 자세한 내용은 src\media\base\video_frame_metadata.h의 주석을 참고한다.
      • captureUpdateRect Rectangle (선택 사항) - 프레임의 업데이트된 영역. dirty 영역으로 간주할 수 있다.
      • regionCaptureRect Rectangle (선택 사항) - 내부적으로 영역 캡처를 사용하는 경우 프레임 콘텐츠의 오리진을 반영할 수 있다.
      • sourceSize Rectangle (선택 사항) - 소스 프레임의 전체 크기.
      • frameCount 숫자 (선택 사항) - 캡처된 프레임의 증가하는 카운트. 두 연속적으로 수신된 프레임 사이에 프레임이 드롭된 경우 간격이 있을 수 있다.
    • sharedTextureHandle Buffer Windows macOS - 공유 텍스처의 핸들.
    • planes 객체[] Linux - 공유 텍스처의 각 플레인 정보.
      • stride 숫자 - 메모리 매핑을 통해 버퍼에 접근할 때 사용할 스트라이드와 오프셋(바이트 단위). 각 플레인별로 하나씩 존재한다.
      • offset 숫자 - 메모리 매핑을 통해 버퍼에 접근할 때 사용할 스트라이드와 오프셋(바이트 단위). 각 플레인별로 하나씩 존재한다.
      • size 숫자 - 플레인의 크기(바이트 단위). 버퍼를 매핑하기 위해 필요하다.
      • fd 숫자 - 기본 메모리 객체(보통 dmabuf)에 대한 파일 디스크립터.
    • modifier 문자열 Linux - GBM 라이브러리에서 검색되고 EGL 드라이버로 전달되는 수정자.
  • release 함수 - 리소스를 해제한다. texture는 다른 프로세스로 직접 전달할 수 없으며, 사용자는 메인 프로세스에서 텍스처 라이프사이클을 관리해야 한다. 하지만 textureInfo는 다른 프로세스로 전달해도 안전하다. 동시에 존재할 수 있는 텍스처의 수는 제한적이므로, 텍스처 사용이 끝나면 texture.release()를 즉시 호출하는 것이 중요하다.