Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

v0.6.0 #59

Open
wants to merge 34 commits into
base: main
Choose a base branch
from
Open

v0.6.0 #59

wants to merge 34 commits into from

Conversation

FlowingSPDG
Copy link
Owner

@FlowingSPDG FlowingSPDG commented May 20, 2024

  • バックエンド
    • vMixへの接続をキャッシュするように変更
    • TCP接続へ変更
  • フロントエンド
    • バニラJSからReactへ変更
  • 機能面
    • パフォーマンスの改善
    • Activators専用アクションの追加

@FlowingSPDG
Copy link
Owner Author

TODO: 汚く書いてしまった部分をキレイにする
主にフロントエンド周り

@FlowingSPDG
Copy link
Owner Author

あとログが散らばっているので1ファイルに固定したい

@FlowingSPDG
Copy link
Owner Author

React用に作った部分、割ときれいに作れたので型を整備してnpmに公開したい

@FlowingSPDG
Copy link
Owner Author

inputなど共通のコンポーネントを分割する

@FlowingSPDG
Copy link
Owner Author

いったん各種InputはNumberで指定する形に変更する
後日Keyで指定できるように改修

@FlowingSPDG
Copy link
Owner Author

FlowingSPDG commented May 21, 2024

TODO: マルチホストを追加した際にどこかでクラッシュが発生している。要調査。

恐らく func (s *StdVmix) ActivatorDidReceiveSettingsHandler 付近。それか、vmixtcp側でClose()を呼び出した後にconnをnilにしているのでその部分

@FlowingSPDG
Copy link
Owner Author

vMixの再起動などで接続が変わったり、プロファイルが変わった際に設定が吹き飛ぶように見える
内部的には保持されているので、PIをロックするなどして解決したい

@FlowingSPDG
Copy link
Owner Author

FlowingSPDG commented May 22, 2024

InputNumber問題
内部的にGUIDを保持して、vMixからXMLコマンドのレスポンスを受け取った際にGUIDからInputNumberを特定しPIに反映、という手法はありかもしれない
StreamDeck側のKeyDownイベントはKeyを使用

ACTSコマンドが飛んできた際は、ほぼ何もせず(ActivatorNameのみ取得)
XMLコマンドをリクエストし、そのレスポンスで対応を決定する
若干遅延が出そう

最悪の最悪、OnXMLにチャンネルを張って、OnActsの後XMLを送信/受信できるまではブロックしてもいいかもしれないが、何かのきっかけで即死しそうだし、複雑さがかなり上がる

@FlowingSPDG
Copy link
Owner Author

現時点でのビルド
dev.flowingspdg.vmix.zip

@FlowingSPDG
Copy link
Owner Author

謎のpanicとTallyに反映されない問題(panic起因?)が起きている、要調査

@FlowingSPDG FlowingSPDG linked an issue May 22, 2024 that may be closed by this pull request
@FlowingSPDG
Copy link
Owner Author

#63 も手法としてある
panic解決が先決

@FlowingSPDG
Copy link
Owner Author

93146ca 時点でのビルド
dev.flowingspdg.vmix.zip

@FlowingSPDG
Copy link
Owner Author

メモリ使用率・ディスク使用率の爆増がある
メモリリークが発生している?

@FlowingSPDG
Copy link
Owner Author

FlowingSPDG commented Oct 11, 2024

TODO:

  • PIにInputsを送る部分の再実装
    • vMixのプリセットが切り替わった際でも安全に接続を維持できる仕組みの実装? (input=numberだからあまり関係ないか?)
  • health check
    • use VERSION API
  • DI

@FlowingSPDG
Copy link
Owner Author

pool packageはcontroller, action 共に依存しているので、中に持たずにコールバックを外部登録にするか、interfaceを別packageに分ける

@FlowingSPDG
Copy link
Owner Author

FlowingSPDG commented Oct 29, 2024

  1. ControllerとPoolを明確に分離する(Poolを内蔵したcontrollerを作成し、処理の一部を委譲する)
  2. Poolをcontrollerとして使いつつ、Actionの依存にも入れる(🍝)

1の方がコード綺麗になりそう

Edit: 1にする

@FlowingSPDG
Copy link
Owner Author

FlowingSPDG commented Oct 29, 2024

TODO:

  • inputsをPIの送信する部分の実装
  • vMixAdapterの責務の調整
    • adapter/controller/pool の責務を果たしてしまっている
    • それぞれ分割したいが、いい管理方法が思いつかない
    • ConnectionPoolingを実施するインターフェースと、それを内部に持つAdapter/Controllerを作るのが最良か?

@FlowingSPDG
Copy link
Owner Author

Inputsの受け渡しについて

  • Go側でXMLリクエストを発行して、フルのInputを取得する
  • Inputsを保持する
  • 保持しているInputを適時PIに渡す

@FlowingSPDG
Copy link
Owner Author

双方向からのデータ受け渡し、vMixのシングルトン管理や責務分けを考えるときりがないので、多少汚くてもOKとする
きれいにするのはできるときに

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment