설정 변경들의 집합을 커밋한다고 한다.
func commitConfiguration()
beginConfiguration()
메소드를 살펴보라고.
동시에 묶여서 수행될 설정 변경사항 집합의 시작을 나타낸다.
func beginConfiguration()
이 메소드와 commitConfiguration()
을 사용해서 아토믹 업데이트로 실행되고 있는 세션에 대한 다중 설정 작동을 배치(batch)할 수 있다고 한다. 이 메소드 호출 후 아웃풋 추가 혹은 제거, sessionPreset
의 변경, 인풋 혹은 아웃풋 개별 속성 설정을 할 수 있다고. commitConfiguration()
호출 전까지는 변경사항 적용이 안 된다. 호출 전에 있는 것들이 한 번에 적용된다.
기기의 하드웨어 속성에 독점 접근을 요청.
func lockForConfiguration() throws
없음.
이 메소드는 실패 시 에러를 던진다.
이 메소드는 실패 시 에러를 던짐.
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()
메소드를 사용해 기기 잠금해제.