public static MediaItem PopulateMetaData(MediaResource R, FileInfo F)
        {
            MediaItem RetVal;

            MediaBuilder.item Item   = null;
            DText             parser = new DText();

            parser.ATTRMARK = "-";
            parser.MULTMARK = ".";

            switch (F.Extension.ToUpper())
            {
            case ".MP3":
                Item = ParseMP3_V1(F);
                if (Item == null)
                {
                    parser[0] = F.Name;
                    if (parser.DCOUNT() == 2)
                    {
                        Item         = new MediaBuilder.musicTrack(parser[2, 1].Trim());
                        Item.creator = parser[1].Trim();
                        ((MediaBuilder.musicTrack)Item).artist = new PersonWithRole[1] {
                            new PersonWithRole()
                        };
                        ((MediaBuilder.musicTrack)Item).artist[0].Name = Item.creator;
                        ((MediaBuilder.musicTrack)Item).artist[0].Role = null;
                    }
                }
                break;
            }

            if (Item != null)
            {
                RetVal = MediaBuilder.CreateItem(Item);
                RetVal.AddResource(R);
                return(RetVal);
            }
            else
            {
                // Create a Generic Item
                string fname    = F.Name;
                int    fnameidx = fname.IndexOf(".");
                if (fnameidx != -1)
                {
                    fname = fname.Substring(0, fnameidx);
                }
                MediaBuilder.item genericItem = new MediaBuilder.item(fname);
                RetVal = MediaBuilder.CreateItem(genericItem);
                RetVal.AddResource(R);
                return(RetVal);
            }
        }
        private static MediaBuilder.item ParseMP3_V1(FileInfo f)
        {
            if (f.Exists == false)
            {
                return(null);
            }

            Stream fileData;

            byte[] buffer     = new byte[128];
            char[] CharBuffer = new char[128];
            string StrBuffer  = "";

            fileData = f.OpenRead();
            if (fileData.Length <= 128)
            {
                fileData.Close();
                return(null);
            }

            fileData.Seek(-128, SeekOrigin.End);
            fileData.Read(buffer, 0, 128);
            fileData.Close();

            for (int id = 0; id < 128; ++id)
            {
                CharBuffer[id] = Convert.ToChar(buffer[id]);
                if (CharBuffer[id] == 0)
                {
                    CharBuffer[id] = ' ';
                }
            }
            StrBuffer = new String(CharBuffer, 0, 128);

            if (StrBuffer.Substring(0, 3) != "TAG")
            {
                return(null);
            }

            // This has a valid ID3 Tag
            string SongTitle  = StrBuffer.Substring(3, 30).Trim();
            string AlbumName  = StrBuffer.Substring(63, 30).Trim();
            string ArtistName = StrBuffer.Substring(33, 30).Trim();

            if (SongTitle == "")
            {
                return(null);
            }

            MediaBuilder.musicTrack RetVal = new MediaBuilder.musicTrack(SongTitle);
            RetVal.album = new string[1] {
                AlbumName
            };
            RetVal.artist = new PersonWithRole[1] {
                new PersonWithRole()
            };
            RetVal.artist[0].Name = ArtistName;
            RetVal.artist[0].Role = null;
            RetVal.creator        = ArtistName;
            return((MediaBuilder.item)RetVal);
        }