Описание функций BASS.NET.dll - C#

Узнай цену своей работы

Формулировка задачи:

киньте функции BASS.NET.dll кто что знает с кратким описанием. буду очень благодарен, ибо в интернете не нашел.

Решение задачи: «Описание функций BASS.NET.dll»

textual
Листинг программы
    public class BassPlayer
    {
        SYNCPROC syncProcEndStream;
        int handleSynchronizationEndStream; 
 
        public BassPlayer()
        {
            syncProcEndStream = new SYNCPROC(SyncMethodEndStream);
        }
 
        /// <summary>Происходит, когда кончается воспроизведение потока (музыкального файла). При воспроизведении радио, не срабатывает</summary>
        public event EventHandler EndStream;
 
        public void Play()
        {
                if (PlayState != PlayState.Paused)
                {
                    Bass.BASS_StreamFree(numberStream); //освобождаем поток.
 
                    if (TagInfo != null)
                        TagInfo.Clear();
 
                    IMediaSource mediaSource = playList[CurrentSourceIndex];
 
                    if (!mediaSource.Source.IsFile)
                    {
                        numberStream = Bass.BASS_StreamCreateURL(mediaSource.Source.OriginalString, 0, BASSFlag.BASS_STREAM_STATUS, null /*_downloadProc*/, IntPtr.Zero);
                        if (numberStream != 0)
                        {
                            GetTagsFromURLStream();
                            handleSynchronization = Bass.BASS_ChannelSetSync(numberStream, BASSSync.BASS_SYNC_META, 0, syncProcChangeTags, IntPtr.Zero);
                            Bass.BASS_ChannelSetAttribute(numberStream, BASSAttribute.BASS_ATTRIB_VOL, _volume);
                            Bass.BASS_ChannelPlay(numberStream, true); //играем полученный поток начав сначала
                            OnPlayStateChange(PlayState.Playing);
                            OnTagsReceived();
                        }
                        else
                        {
                            throw new Exception(Bass.BASS_ErrorGetCode().ToString());
                        }
                    }
                    else if (mediaSource.Source.IsFile)
                    {
                        numberStream = Bass.BASS_StreamCreateFile(mediaSource.Source.OriginalString, 0, 0, BASSFlag.BASS_DEFAULT);
                        if (numberStream != 0)
                        {
                            GetTagsFromFileStream();
                            handleSynchronizationEndStream = Bass.BASS_ChannelSetSync(numberStream, BASSSync.BASS_SYNC_END, 0, syncProcEndStream, IntPtr.Zero);
                            handleSynchronization = Bass.BASS_ChannelSetSync(numberStream, BASSSync.BASS_SYNC_META, 0, syncProcChangeTags, IntPtr.Zero);
                            handleSyncPlaybackPosition = Bass.BASS_ChannelSetSync(numberStream, BASSSync.BASS_SYNC_POS, 0, syncPlaybackPosition, IntPtr.Zero);
                            Bass.BASS_ChannelSetAttribute(numberStream, BASSAttribute.BASS_ATTRIB_VOL, _volume);
                            Bass.BASS_ChannelPlay(numberStream, true); //играем полученный поток начав сначала
                            OnPlayStateChange(PlayState.Playing);
                            OnTagsReceived();
                        }
                        else
                            throw new Exception(Bass.BASS_ErrorGetCode().ToString());
                    }
                }
                else if (PlayState == PlayState.Paused)
                {
                    Bass.BASS_ChannelPlay(numberStream, false); //Продолжение воспроизведения
                    OnPlayStateChange(PlayState.Playing);
                }
        }
 
        public void Stop()
        {
            Bass.BASS_ChannelStop(numberStream);
            Bass.BASS_ChannelRemoveSync(numberStream, handleSynchronization);
            Bass.BASS_ChannelRemoveSync(numberStream, handleSynchronizationEndStream);
            Bass.BASS_ChannelRemoveSync(numberStream, handleSyncPlaybackPosition);
            OnPlayStateChange(PlayState.Stopped);
        }
 
        protected void SyncMethodEndStream(int handle, int channel, int data, IntPtr user)
        {
            OnEndStream(handle, channel, data, user);
        }
 
        protected void OnEndStream(int handle, int channel, int data, IntPtr user)
        {
            var handler = EndStream;
            if (handler != null)
                handler(this, new EventArgs());
        }
    }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4 из 5
Похожие ответы