Описание функций 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());
}
}