さまざまな libspotify API 関数がイメージ ID を処理します。
これらはすべて、イメージ ID を次のように返しますconst byte*
。
sp_album_cover
sp_artist_portrait
sp_artistbrowse_portrait
sp_image_image_id
sp_image_create
はイメージ ID パラメータを として受け取り、イメージ ID パラメータは としてconst byte[20]
取りsp_playlist_get_image
、byte[20]
それにイメージ ID 値を入力します。
この質問で、Spotify の従業員は、イメージ ID の内容は不透明であり、サイズ 20 はイメージ ID の正確な長さであるとは限らないと言っています: libspotify API: image ID format?
sp_image_create は、20 バイト長の image_id パラメータを使用します。image id の最大長は 20 バイトということですか?
いいえ。sp_subscribers は、コンパイラに偽の番号を挿入した別の例です。イメージ ID ポインタの内容は不透明で、リリース間で変更される可能性があります。それらについて仮定するコードを書かないでください。壊れるからです。
ただし、 を使用するsp_playlist_get_image
には、呼び出し元が配列を割り当ててイメージ ID を格納する必要があります。これは一貫性のないアドバイスのように思われるか、少なくとも驚くべきことです。次の中でどれが正しいですか?
- 解釈 A:イメージ ID は常に正確に 20 バイトになります。
- 解釈 B:イメージ ID の長さは、最大 20 バイトです。
- 解釈 C:イメージ ID の長さは任意ですが、返されるイメージ ID は
sp_playlist_get_image
20 バイト以下であることが保証されています。 - 解釈 D:イメージ ID の長さに制限
sp_playlist_get_image
はなく、安全に使用することはまったくできません。
リンクされた質問への答えはAとおそらくBを除外すると思うので、答えはおそらくCだと思います。完全な悲観主義者は D を選ぶかもしれません。
既存のlibspotify.netよりも安全で高レベルの .NET ラッパーを作成しようとしており、マネージ コードでイメージ ID を表示する方法がわからないため、興味があります。唯一の方法は、2 つの代替実装を用意することだと思いsp_playlist_get_image
ます。ライブラリがイメージ ID のサイズと性質について十分な保証をしていれば、いつでも自分のバッファを使用して、必要に応じてそこにコピーすることができますが、libspotify がこれを許可するほど強力な保証をどこでも行う可能性は低いと思われます。