AVCaptureSession의 Configuration 메소드 세 가지

Horus-iOS·2022년 6월 3일
0

commitConfiguration()

설정 변경들의 집합을 커밋한다고 한다.

Declaration

func commitConfiguration()

Discussion

beginConfiguration() 메소드를 살펴보라고.

beginConfiguration()

동시에 묶여서 수행될 설정 변경사항 집합의 시작을 나타낸다.

Declaration

func beginConfiguration()

Discussion

이 메소드와 commitConfiguration()을 사용해서 아토믹 업데이트로 실행되고 있는 세션에 대한 다중 설정 작동을 배치(batch)할 수 있다고 한다. 이 메소드 호출 후 아웃풋 추가 혹은 제거, sessionPreset의 변경, 인풋 혹은 아웃풋 개별 속성 설정을 할 수 있다고. commitConfiguration() 호출 전까지는 변경사항 적용이 안 된다. 호출 전에 있는 것들이 한 번에 적용된다.

lockForConfiguration()

기기의 하드웨어 속성에 독점 접근을 요청.

Declaration

func lockForConfiguration() throws

Parameters

없음.
이 메소드는 실패 시 에러를 던진다.

Return Value

이 메소드는 실패 시 에러를 던짐.

Discussion

try 표현과 함께 호출해야 하는 메소드. 그리고 catch 구문에서 오류를 처리해야 함.

기기의 속성과 관련이 있는 하드웨어 설정 시도 전에 이 메소드를 호출해야 한다. 반드시. 기기 속성이 바뀌지 않고 남아있도록 요구하려면 잠금으로 유지해야 할 것(릴리징 대신). 그러나 불필요하게 기기를 잠금하면 다른 앱에서 기기를 공유하는 중에 캡처 퀄리티를 디그레이드할 수 있다고.

Note
iOS에서 캡처 기기의 activeFormat 속성을 직접 설정하는 경우 캡처 세션의 preset 속성을 inputPriority로 변경시킨다. 이와 같은 변경이 만들어지면 세션 토폴로지를 변경한 후(즉, 캡처 인풋, 아웃풋에 대한 추가, 제거, 재정렬) startRunning() 메소드 혹은 commitConfiguration() 메소드 호출 시 캡처 세션은 더이상 자동으로 캡처 포맷을 설정하지 않음. macOS에서 캡처 세션은 변경 이후에도 여전히 자동으로 캡처 포맷을 설정할 수 있다. macOS에서 캡처 포맷 자동 변경을 막으려면 아래처럼.

1. lockForConfiguration() 메소드를 사용해서 기기를 lock.
2. 기기의 activeFormat 속성을 변경.
3. 세션의 startRunning() 메소드를 사용해서 캡처 시작.
4. unlockForConfiguration() 메소드를 사용해서 기기 잠금해제.

혹은 macOS에서 세션 토폴로지 수정 후 자동 변경을 막으려면.

1. lockForConfiguration() 메소드를 사용해서 기기 잠금.
2. 세션의 beginConfiguration() 메소드를 호출하고, 토폴로지 바꾸고, commitConfiguration() 메소드 호출
3. unlockForConfiguration() 메소드를 사용해 기기 잠금해제.

0개의 댓글