public static bool BASS_TAG_GetFromURL(int stream, TAG_INFO tags) { if ((stream == 0) || (tags == null)) { return(false); } bool flag = false; IntPtr ptr = BASS_ChannelGetTags(stream, BASSTag.BASS_TAG_ICY); if (ptr == IntPtr.Zero) { ptr = BASS_ChannelGetTags(stream, BASSTag.BASS_TAG_HTTP); } if (ptr != IntPtr.Zero) { flag = tags.UpdateFromMETA(ptr.ToInt32(), false); } ptr = BASS_ChannelGetTags(stream, BASSTag.BASS_TAG_META); if (ptr == IntPtr.Zero) { ptr = BASS_ChannelGetTags(stream, BASSTag.BASS_TAG_OGG); } if (ptr == IntPtr.Zero) { ptr = BASS_ChannelGetTags(stream, BASSTag.BASS_TAG_APE); } if (ptr == IntPtr.Zero) { ptr = BASS_ChannelGetTags(stream, BASSTag.BASS_TAG_WMA); } if (ptr != IntPtr.Zero) { flag = tags.UpdateFromMETA(ptr.ToInt32(), false); } return(flag); }
public static bool BASS_TAG_GetFromFile(int stream, TAG_INFO tags) { if ((stream == 0) || (tags == null)) { return(false); } bool flag = false; tags.channelInfo = new BASS_CHANNELINFO(); if (BASS_ChannelGetInfo(stream, tags.channelInfo)) { BASSTag tagType = BASSTag.BASS_TAG_UNKNOWN; IntPtr p = BASS_TAG_GetIntPtr(stream, tags.channelInfo, out tagType); if (p != IntPtr.Zero) { switch (tagType) { case BASSTag.BASS_TAG_ID3: return(ReadID3v1(p, tags)); case BASSTag.BASS_TAG_ID3V2: return(ReadID3v2(p, tags)); case BASSTag.BASS_TAG_OGG: return(tags.UpdateFromMETA(p.ToInt32(), true)); case BASSTag.BASS_TAG_HTTP: case BASSTag.BASS_TAG_ICY: case BASSTag.BASS_TAG_META: return(flag); case BASSTag.BASS_TAG_APE: return(tags.UpdateFromMETA(p.ToInt32(), false)); case BASSTag.BASS_TAG_MP4: return(tags.UpdateFromMETA(p.ToInt32(), false)); case BASSTag.BASS_TAG_WMA: flag = tags.UpdateFromMETA(p.ToInt32(), true); try { IntPtr pUnk = BASS_WMA_GetWMObject(stream); if (!(pUnk != IntPtr.Zero)) { return(flag); } IWMHeaderInfo3 objectForIUnknown = (IWMHeaderInfo3)Marshal.GetObjectForIUnknown(pUnk); ArrayList allPictures = new WMFMetadataEditor(objectForIUnknown).GetAllPictures(); if (allPictures != null) { foreach (TagPicture picture in allPictures) { tags.AddPicture(picture); } } objectForIUnknown = null; GC.Collect(); } catch { } return(flag); case BASSTag.BASS_TAG_RIFF_INFO: return(tags.UpdateFromMETA(p.ToInt32(), false)); case BASSTag.BASS_TAG_MUSIC_NAME: tags.title = BASS_ChannelGetMusicName(stream); tags.artist = BASS_ChannelGetMusicMessage(stream); return(true); } } } return(flag); }