コーデックの検証
カスタム コーデックを世界で使用する前に検証してください。コーデックはコンパイルしても、カメラ キャプチャ、スケーリング、リードバック、またはパッケージのインポート後に失敗する可能性があります。
基本的なチェック
| チェック | 期待される結果 |
|---|---|
| セットアップにコーデックが表示される | カタログとプレハブの検出作業。 |
| 著者と説明が表示されます | パッケージのメタデータを読み取ることができます。 |
| 1フレームをエンコードする | 出力テクスチャは変更され、ヘッダーは読み取り可能なままになります。 |
| 1フレームをデコードする | ヘッダー CRC がパスし、ペイロード バイトが回復します。 |
| コーデックを切り替えて元に戻す | 古いピクセル ブロックは残りません。 |
バイト往復テスト
決定論的なペイロードを使用します。
- バイト数を増やします
0, 1, 2, ...。 - 交互バイト
0x00, 0xFF。 - 固定シードを持つランダムなバイト。
- 1 列より小さい短いペイロード。
- 行またはブロックの境界で正確に終わるペイロード。
デコード後、PayloadSize までのすべてのバイトを比較します。
ヘッダーとレイアウトのテスト
コーデックが次の点を考慮していることを確認します。
- ヘッダーのサイズとヘッダーの位置。
PayloadSize。- ペイロードの開始行またはブロック。
- ブロックサイズ。
- デコードサンプルサイズ。
- コーデック オプション バイト。
デコーダは、目に見えるピクセルからペイロード サイズを推測する必要はありません。
キャプチャ パスのテスト
ユーザーが使用する実際のパスを通じてテストします。
- エディタ内ループバック。
- VRChat ランタイム キャプチャ。
- OBS/Spout または世界中で使用されている場合は同等のもの。
- 意図したフレーム サイズ。
- 意図したフレームレート。
TSMPDebugCanvas でビットレート、損失、フレーム インデックス、コーデック ID、およびデコーダのエラーを確認してください。
UdonSharp テスト
コーデックに UdonSharp ランタイム コードがある場合:
- すべての UdonSharp プログラムをコンパイルします。
- プレイモードでテストします。
- 機能がクライアント ランタイム API に依存する場合、アップロードされた VRChat ワールドでテストします。
- UdonSharp バインダーのエラーを引き起こす可能性のある汎用メソッド、サポートされていない API、複雑な式は避けてください。
失敗パターン
| 症状 | 考えられる原因 |
|---|---|
| ヘッダーは有効ですが、ペイロードが間違っています | ペイロードの開始/ブロックのレイアウトが一致しません。 |
| CRC警告 | ヘッダーのピクセルが破損しているか、正しくサンプリングされていません。 |
| コーデック切り替え後の古いブロック | 出力テクスチャが完全に上書きまたはクリアされていません。 |
| エディターでは動作しますが、ランタイムでは動作しません | UdonSharp API または VRChat ランタイム API の違い。 |
| ワンサイズのみで動作します | シェーダーは固定テクスチャ サイズを想定しています。 |