Skip to content

Fileパケット(204)のclusterSizeが0でArtworkデータの抽出に失敗する #57

@9c5s

Description

@9c5s

概要

TCNetDataPacketArtwork.read()MultiPacketAssembler が offset 38 の clusterSize を使用してデータクラスタを抽出するが、File (MessageType=204) パケットではこの値が常に0である。結果として空の JPEG データが返される。

再現手順

  1. TCNASDP認証を有効にして接続
  2. CDJで曲をロード
  3. requestData(ArtworkData, layer) でアートワークを取得
  4. packet.data.jpeg が空 Buffer (length=0) になる

原因

TCNetDataPacketArtwork.read() (network.ts):
```typescript
const clusterSize = this.buffer.readUInt32LE(38); // File パケットでは常に 0
const end = Math.min(dataStart + clusterSize, this.buffer.length); // → 42
this.data = { jpeg: Buffer.from(this.buffer.slice(dataStart, end)) }; // → 空
```

実際のデータは offset 42 からバッファ末尾まで格納されている。

期待動作

clusterSize が 0 の場合、buffer.length をフォールバックとして使用し、offset 42 からバッファ末尾までをデータとして抽出する。

ワークアラウンド

tcnet-viewer 側で clusterSize === 0 時に buffer.length をフォールバックとして使用。

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions