Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }