컷별 데이터 연계

This commit is contained in:
2026-04-14 17:14:12 +09:00
parent 54c778c75d
commit e0c5f4dbfe
19 changed files with 7826 additions and 33 deletions

View File

@@ -239,11 +239,14 @@ IDLE → READY → SENDING → ON_AIR → NEXT
## 16. Karisma / Tornado3 연동 기준
- CG 연동 라이브러리는 `Interop.KAsyncEngineLib.dll`을 사용한다.
- `Interop.KAsyncEngineLib.dll``AMD64` 기준이므로 앱 실행 대상도 `x64`를 기준으로 운영한다.
- 기본 접속 대상은 `127.0.0.1:30001`이다.
- `TORNADO_KARISMA_HOST`가 있으면 기본 호스트 대신 사용한다.
- `TORNADO_KARISMA_PORT`가 있으면 기본 포트 대신 사용한다.
- 앱은 시작 시 공유 Karisma 어댑터 1개를 만들고 `127.0.0.1:30001` 연결을 즉시 시도한다.
- 노멀, 좌상단, 하단, 비디오월 채널은 같은 TCP 연결을 공유하고, 채널별 `output/layer` 바인딩만 다르게 사용한다.
- 앱 시작 시 `T3_Cut 경로`가 유효하지 않으면 실CG 대신 Mock Adapter로 폴백한다.
- 현재 구현 기준으로는 시작 시 Mock으로 결정된 경우, 설정 변경 실CG 재연결을 위해 앱 재시작이 필요할 수 있다.
- 현재 구현 기준으로는 시작 시 Mock으로 결정된 경우, 설정 변경만으로 실CG 어댑터로 승격되지 않으므로 앱 재시작이 필요할 수 있다.
- 채널 기본 바인딩은 `노멀=0:0`, `좌상단=0:1`, `하단=0:2`, `비디오월=1:0`이다.
- 환경변수 `TORNADO_KARISMA_BIND_NORMAL`, `TORNADO_KARISMA_BIND_TOPLEFT`, `TORNADO_KARISMA_BIND_BOTTOM`, `TORNADO_KARISMA_BIND_VIDEOWALL`로 채널 바인딩을 덮어쓸 수 있다.
@@ -252,6 +255,8 @@ IDLE → READY → SENDING → ON_AIR → NEXT
- 사용자 설정 명칭은 `이미지 루트 경로`가 아니라 `T3_Cut 경로`로 표기한다.
- 송출에 사용하는 컷 파일 확장자는 `.tscn`이다.
- 컷 파일은 `T3_Cut` 루트 아래의 고정된 포맷 구조를 기준으로 사용한다.
- 기본 `T3_Cut` 탐색 순서는 `TORNADO_T3CUT_PATH` 환경변수, `문서\Tornado3 Data\T3_Cut\T3_Cut`, `문서\Tornado3 Data\T3_Cut`, `다운로드\T3_Cut` 순서다.
- 사용자가 상위 폴더를 선택했더라도 그 아래의 `T3_Cut` 하위 폴더에서 `.tscn` 파일이 확인되면 해당 하위 폴더를 실제 송출 루트로 정규화한다.
- 포맷 목록은 폴더 스캔으로 동적 생성하지 않고 하드코딩된 목록으로 관리한다.
- 같은 컷 이름에 `_loop.tscn` 파일이 있으면 반복 송출 컷으로 사용한다.
- 최초 송출 시에는 기본 컷 파일을 사용한다.
@@ -318,10 +323,18 @@ IDLE → READY → SENDING → ON_AIR → NEXT
- 같은 이름의 `_loop.tscn` 파일이 있으면, 이미 송출 중인 상태에서 재호출할 때 loop 컷을 우선 사용한다.
### CG 연결 상태 표시 규칙
- CG 상태는 Karisma 어댑터 존재 여부가 아니라 실제 TCP `30001` 연결 성공 여부를 기준으로 표시한다.
- CG 상태는 Karisma 어댑터 존재 여부가 아니라 공유 TCP `30001` 연결 성공 여부를 기준으로 표시한다.
- `Connected / Disconnected` 표시는 `OnConnect``OnClose` 콜백 기준으로 갱신한다.
- 공유 연결 상태는 해당 연결을 사용하는 모든 채널 패널에 동일하게 반영한다.
- TCP 연결이 끊기면 5초 간격으로 자동 재접속을 시도한다.
## 2026-04-14 TCP / SetValue 디버깅 업데이트
- 앱 실행 직후 `30001`과의 TCP 연결을 바로 시도하고, 이후 각 채널은 그 단일 연결을 공유한다.
- Karisma SDK 콜백 수신을 위해 전용 STA 스레드에서 메시지 펌프를 유지한다.
- `SetValue` 검증을 위해 후보 이름 키를 기존 `Candidate1Name`, `Candidate2Name` 외에 `후보명01`, `후보명02`로도 함께 전달한다.
- 현재 테스트 빌드 기준 `후보명01=김후보`, `후보명02=이후보`를 함께 송신해 실제 장면 변수 반영 여부를 확인한다.
### 인코딩 확인 원칙
- 터미널 출력이 깨져 보이는 것과 파일 자체 인코딩 손상을 구분해서 판단한다.
- 한글 문자열 상태 판단은 편집기 화면 또는 `UTF-8` 파일 직접 읽기 기준으로 확인한다.