ISV에 대한 자세한 디자인(카메라 프로필 V2)
ISV용 카메라 프로필 1507의 사용은 프로필이 제시된 방식의 복잡한 특성과 프로필이 단순히 유익한 데이터 세트일 뿐이라는 사실 때문에 중요한 과제를 제시했으며, 기본 파이프라인은 하드웨어 제약 조건을 위반하는 미디어 형식과 스트림의 조합을 여전히 허용합니다.
ISV는 스트림이 활성화될 때 실패하는 방식으로 캡처 파이프라인을 구성하는 위험을 계속 실행했습니다.
카메라 프로필 V2의 경우 미디어 캡처 개체의 초기화 시 선택한 프로필 구성이 프레임 서버에 전달되고 프레임 서버는 해당 프로필 내에서 유효한 스트림/미디어 형식의 조합만 노출합니다.
프레임 서버를 통해 라우팅할 때 여러 미디어 캡처 개체를 만드는 비용이 낮기 때문에 애플리케이션은 동일한 원본을 사용하여 미디어 캡처 개체의 여러 인스턴스를 미리 만들 수 있습니다. 만든 첫 번째 작업만 원본 생성 대기 시간이 발생합니다. 후속 인스턴스는 프레임 서버에서 이미 만든 원본을 가져와서 프로필에 따라 스트림/미디어 형식 집합을 필터링하기만 하면 됩니다.
고품질 사진 모드와 높은 프레임 속도 비디오 또는 4K 비디오를 포함하는 비디오 녹화 모드를 모두 노출하려는 애플리케이션은 각각 동일한 카메라 원본에 대해 다른 프로필로 구성된 미디어 캡처 개체의 여러 인스턴스를 만들 수 있습니다. 미디어 캡처 개체 중 하나만 지정된 시간에 적극적으로 스트리밍되는 한 미디어 캡처 개체 간에 전환하면 대기 시간이 거의 발생하지 않습니다(일반적으로 몇 가지 RPC 호출 비용).
카메라 프로필 1507은 MediaCaptureVideoProfile 개체를 통해 프로필을 노출합니다. 이 개체는 특정 디바이스 ID를 제공하여 MediaCapture 팩터리를 통해 검색됩니다. 이 디바이스 중심 보기는 특정 시나리오를 사용하도록 설정하려는 앱이 먼저 선택한 디바이스를 열거/찾아 사용 가능한 프로필을 반복하는 데 사용해야 했음을 의미합니다.
카메라 프로필 V2는 API 표면을 확장하여 디바이스 중심 API 표면을 계속 제공하지만, 카메라 프로필 V2는 시나리오 기반 프로필 열거형도 제공합니다.
대신 특정 카메라로 시작하는 애플리케이션은 특정 시나리오로 시작합니다. 예를 들어 월드 지향 카메라 시나리오를 사용한 비디오 녹화입니다.
이 진입점은 해당 시나리오에 적합한 사용 가능한 모든 카메라를 적용합니다. 시나리오의 특이성에 따라 결과 MediaFrameSourceGroup 목록에 여러 항목이 포함될 수 있습니다. 경우에 따라 항목이 없을 수 있습니다. 예를 들어 월드 연결 카메라가 없는 올인원 디바이스에 World Facing Camera를 사용하는 비디오 녹화는 빈 세트를 반환합니다.
시나리오를 설명하는 데 사용되는 "언어"는 최소 조건에 따라 대체를 허용합니다. 이 언어는 "세계 지향 카메라를 선호하는 비디오 녹화 및 최소 프레임 속도 30fps로 가능한 최고 해상도"를 허용합니다.
프로필 기반 필터링
프레임 서버 아키텍처를 사용할 때의 주요 이점 중 하나는 클라이언트 앱에서 미디어 캡처 개체의 가상 표현인 Frame Server의 클라이언트 컨텍스트 개체가 실제 원본에서 분리된다는 사실입니다.
이렇게 하면 동일한 원본을 사용하는 클라이언트 컨텍스트 개체의 여러 인스턴스를 특정 작업 모드로 구성할 수 있습니다. 여기에는 기본 사용 사례와 충돌할 수 있는 핀/미디어 형식의 필터링이 포함될 수 있습니다.
디바이스 원본은 클라이언트 컨텍스트의 일부가 아니므로 구성이 다른 클라이언트 컨텍스트 개체의 여러 인스턴스를 만들면 내부 데이터 구조를 추적하는 데 필요한 오버헤드만큼 큰 오버헤드가 발생하지 않습니다.
원본을 만들거나 초기화하기 위한 대기 시간은 첫 번째 클라이언트 컨텍스트에 대해 여전히 존재하지만, 일단 만들어지면 구성이 동일하거나 다른 후속 인스턴스는 내부 데이터 구조를 만드는 추가 오버헤드만 발생합니다.
다음 다이어그램에서는 클라이언트 컨텍스트를 통해 프레임 서버에서 null 프로필로 구성된 미디어 캡처를 노출하는 방법을 보여 줍니다.
위의 다이어그램에서 각 원본은 미리 보기, 캡처 및 사진이라는 세 개의 핀을 노출합니다. Null 프로필이 설정되었기 때문에 결과 미디어 캡처는 9개의 핀을 모두 애플리케이션에 노출합니다. 애플리케이션은 각 핀에서 사용할 수 있는 모든 핀과 각 미디어 유형을 검사할 수 있습니다.
이는 앱에 유연성을 제공하지만, 동시에 활성화할 수 있는 미디어 유형/핀 조합을 결정하는 상태 머신 관리의 복잡성을 복잡하게 만듭니다.
그러나 프로필 기반 필터링을 활용하여 다음을 수행합니다.
애플리케이션은 각각 특정 프로필로 구성된 미디어 캡처의 여러 인스턴스를 만들 수 있습니다. 위의 다이어그램에서 null 프로필 instance 그림으로 남아 있습니다. 애플리케이션은 null 프로필 instance 만들지 않도록 선택할 수 있습니다.
하위 미디어 캡처 개체는 각각 특정 프로필로 구성됩니다. 원본의 IHV/OEM에서 게시한 프로필 정보에 따라 결과 파이프라인은 필요한 원본만 끌어옵니다.
HQ 사진 월드 연결 프로필의 경우 IHV/OEM이 표시한 미디어 유형만 사진 작업에 사용할 수 있는 세계 지향 RGB(원본 3)의 미리 보기 및 사진 핀만 노출됩니다. 이는 IHV/OEM이 HQ 사진의 경우 동시 캡처가 가능하지 않다고 표시했다고 가정합니다. 동시 캡처가 허용되면 캡처 핀과 동시에 사진 및 녹화 작업에 사용할 수 있는 미디어 유형이 노출됩니다.
기록 사용자 연결의 경우 사용자 연결 RGB(원본 1)의 미리 보기 및 캡처 핀만 노출됩니다. 위의 다이어그램에서는 캡처 핀이 활성 상태일 때 사진 작업을 수행할 수 없다고 가정합니다.
Mixed Reality 프로필의 경우 세계 지향 RGB 및 세계 지향 인식 비디오 스트림이 클라이언트 앱에 노출됩니다. 또한 동시에 작동하도록 보장되는 미디어 유형만 사용할 수 있습니다.