各種libspotify API函數處理圖像ID:libspotify:我能做什麼,不能用圖像ID做什麼?
這些都返回一個圖像ID作爲const byte*
:
sp_album_cover
sp_artist_portrait
sp_artistbrowse_portrait
sp_image_image_id
sp_image_create
拍攝圖像ID參數作爲const byte[20]
,而sp_playlist_get_image
拍攝圖像ID參數作爲byte[20]
並用圖像ID值填充它。
在這個問題中,一個Spotify的僱員說二者的圖像ID的內容是不透明的,並且20的尺寸不一定是圖像ID的準確長度:libspotify API: image ID format?
sp_image_create取20個字節長的image_id參數。這是否意味着圖像ID的最大長度是20個字節?
編號sp_subscribers是我們爲編譯器添加一個虛假編號的另一個示例。圖像ID指針的內容是不透明的,並且可能在版本之間改變。不要編寫對其進行假設的代碼,因爲它會中斷。
然而,爲了使用sp_playlist_get_image
,呼叫者需要分配陣列來存儲圖像ID。這似乎是不一致的建議,或者至少令人驚訝。以下內容哪些是對的?
- 解釋A:圖像ID總是正好20個字節。
- 解釋B:圖像ID的長度可能最多爲20個字節。
- 解釋C:圖像ID可能是任意長度,但
sp_playlist_get_image
返回的圖像ID保證不超過20個字節。 - 解釋D:圖像ID可能是任意長度,並且
sp_playlist_get_image
根本無法安全使用。
我想對鏈接的問題的答案排除A和可能B,所以我認爲答案可能是C,因爲這是令人沮喪的。一個完全的悲觀主義者可能會與D.
我感興趣,因爲我想寫一個比現有libspotify.net更安全和更高級別的.NET包裝,我不確定如何在託管代碼中呈現圖像ID 。我認爲唯一的辦法是有兩個可選的實現 - 一個具有20字節緩衝區,表示從sp_playlist_get_image
返回的圖像ID,另一個具有表示從其他任何返回的圖像ID的IntPtr。如果圖書館對圖像ID的大小和性質做了充分的保證,我可以隨時使用我自己的緩衝區並在必要時複製到其中,但是我擔心看起來libspotify不太可能在任何地方靠近足夠強的地方提供保證。
意圖是開源它。我希望在下個月左右將它放在github上。當我這樣做的時候會在https://github.com/organizations/openhome的某處。 – Weeble
前面提到的C#包裝庫現在在這裏:https://github.com/openhome/ohLibSpotify – Weeble
您是否爲播放列表工作獲得了imageID?我正在使用類型Byte []進行互操作調用,並且我傳入的緩衝區似乎永遠不會被libspotfiy填充或更改。 –