예제 #1
0
        public override Channel PlayChannel(string url, out TAG_INFO tags)
        {
            if (url.ExisFile()) _files.Enqueue(url);
            else if (url.ExisDirectory())
            {
                foreach (
                    var file in
                        url.EnumerateAllFiles().Where(file => _supportetExtensions.Contains(file.GetExtension())))
                {
                    _files.Enqueue(file);
                }
            }
            else throw new BassException(BASSError.BASS_ERROR_FILEOPEN);

#if(DEBUG)
            _files = RandomStringArrayTool.RandomizeStrings(_files.ToArray());
#endif

            string first = _files.Dequeue();

            _currentChannel = _bassEngine.CreateFile(first, flags: DefaultFileFlags);
            _currentChannel.SetEntSync(FileEnd);

            tags = _currentChannel.Tag;
            return _currentChannel;
        }
예제 #2
0
        private void FileEnd()
        {
            if (_files == null) return;
            if (_files.Count == 0)
            {
                OnEnd();
                return;
            }
            string first = _files.Dequeue();

            _currentChannel = _bassEngine.CreateFile(first, flags: DefaultFileFlags);
            _currentChannel.SetEntSync(FileEnd);

            var tags = _currentChannel.Tag;
            OnChannelSwitched(_currentChannel, tags, true);
        }