private static extern bool BASS_ChannelGetInfo(int handle, [In, Out] BASS_CHANNELINFO info);
public static IntPtr BASS_TAG_GetIntPtr(int stream, BASS_CHANNELINFO info, out BASSTag tagType) { IntPtr zero = IntPtr.Zero; tagType = BASSTag.BASS_TAG_UNKNOWN; if ((stream == 0) || (info == null)) { return(zero); } int ctype = info.ctype; if ((ctype & (int)BASSChannelType.BASS_CTYPE_STREAM_WAV) > 0) { ctype = (int)BASSChannelType.BASS_CTYPE_STREAM_WAV; } BASSChannelType type = (BASSChannelType)ctype; switch (type) { case BASSChannelType.BASS_CTYPE_STREAM_WMA: case BASSChannelType.BASS_CTYPE_STREAM_WMA_MP3: zero = BASS_ChannelGetTags(stream, BASSTag.BASS_TAG_WMA); tagType = BASSTag.BASS_TAG_WMA; return(zero); case BASSChannelType.BASS_CTYPE_STREAM_WINAMP: zero = BASS_ChannelGetTags(stream, BASSTag.BASS_TAG_ID3V2); if (!(zero == IntPtr.Zero)) { tagType = BASSTag.BASS_TAG_ID3V2; return(zero); } zero = BASS_ChannelGetTags(stream, BASSTag.BASS_TAG_APE); if (!(zero == IntPtr.Zero)) { tagType = BASSTag.BASS_TAG_APE; return(zero); } zero = BASS_ChannelGetTags(stream, BASSTag.BASS_TAG_OGG); if (zero == IntPtr.Zero) { zero = BASS_ChannelGetTags(stream, BASSTag.BASS_TAG_ID3); if (zero != IntPtr.Zero) { tagType = BASSTag.BASS_TAG_ID3; } return(zero); } tagType = BASSTag.BASS_TAG_OGG; return(zero); case BASSChannelType.BASS_CTYPE_STREAM_OGG: zero = BASS_ChannelGetTags(stream, BASSTag.BASS_TAG_OGG); if (!(zero == IntPtr.Zero)) { tagType = BASSTag.BASS_TAG_OGG; return(zero); } zero = BASS_ChannelGetTags(stream, BASSTag.BASS_TAG_APE); tagType = BASSTag.BASS_TAG_APE; return(zero); case BASSChannelType.BASS_CTYPE_STREAM_MP1: case BASSChannelType.BASS_CTYPE_STREAM_MP2: case BASSChannelType.BASS_CTYPE_STREAM_MP3: zero = BASS_ChannelGetTags(stream, BASSTag.BASS_TAG_ID3V2); if (!(zero == IntPtr.Zero)) { tagType = BASSTag.BASS_TAG_ID3V2; return(zero); } zero = BASS_ChannelGetTags(stream, BASSTag.BASS_TAG_ID3); tagType = BASSTag.BASS_TAG_ID3; return(zero); case BASSChannelType.BASS_CTYPE_STREAM_AIFF: case BASSChannelType.BASS_CTYPE_STREAM_WAV_PCM: case BASSChannelType.BASS_CTYPE_STREAM_WAV_FLOAT: case BASSChannelType.BASS_CTYPE_STREAM_WAV: zero = BASS_ChannelGetTags(stream, BASSTag.BASS_TAG_RIFF_INFO); if (zero != IntPtr.Zero) { tagType = BASSTag.BASS_TAG_RIFF_INFO; } return(zero); case BASSChannelType.BASS_CTYPE_MUSIC_MO3: case BASSChannelType.BASS_CTYPE_MUSIC_MOD: case BASSChannelType.BASS_CTYPE_MUSIC_MTM: case BASSChannelType.BASS_CTYPE_MUSIC_S3M: case BASSChannelType.BASS_CTYPE_MUSIC_XM: case BASSChannelType.BASS_CTYPE_MUSIC_IT: zero = BASS_ChannelGetTags(stream, BASSTag.BASS_TAG_MUSIC_NAME); if (zero != IntPtr.Zero) { tagType = BASSTag.BASS_TAG_MUSIC_NAME; } return(zero); case BASSChannelType.BASS_CTYPE_STREAM_WV: case BASSChannelType.BASS_CTYPE_STREAM_WV_H: case BASSChannelType.BASS_CTYPE_STREAM_WV_L: case BASSChannelType.BASS_CTYPE_STREAM_WV_LH: case BASSChannelType.BASS_CTYPE_STREAM_OFR: case BASSChannelType.BASS_CTYPE_STREAM_APE: case BASSChannelType.BASS_CTYPE_STREAM_FLAC: case BASSChannelType.BASS_CTYPE_STREAM_SPX: case BASSChannelType.BASS_CTYPE_STREAM_MPC: case BASSChannelType.BASS_CTYPE_STREAM_TTA: zero = BASS_ChannelGetTags(stream, BASSTag.BASS_TAG_APE); if (zero == IntPtr.Zero) { zero = BASS_ChannelGetTags(stream, BASSTag.BASS_TAG_OGG); if (zero == IntPtr.Zero) { zero = BASS_ChannelGetTags(stream, BASSTag.BASS_TAG_ID3V2); if (zero == IntPtr.Zero) { zero = BASS_ChannelGetTags(stream, BASSTag.BASS_TAG_ID3); if (zero != IntPtr.Zero) { tagType = BASSTag.BASS_TAG_ID3; } return(zero); } tagType = BASSTag.BASS_TAG_ID3V2; return(zero); } tagType = BASSTag.BASS_TAG_OGG; return(zero); } tagType = BASSTag.BASS_TAG_APE; return(zero); case BASSChannelType.BASS_CTYPE_STREAM_ALAC: case BASSChannelType.BASS_CTYPE_STREAM_AAC: case BASSChannelType.BASS_CTYPE_STREAM_MP4: zero = BASS_ChannelGetTags(stream, BASSTag.BASS_TAG_MP4); if (zero == IntPtr.Zero) { zero = BASS_ChannelGetTags(stream, BASSTag.BASS_TAG_ID3V2); if (zero == IntPtr.Zero) { zero = BASS_ChannelGetTags(stream, BASSTag.BASS_TAG_APE); if (zero == IntPtr.Zero) { zero = BASS_ChannelGetTags(stream, BASSTag.BASS_TAG_OGG); if (zero != IntPtr.Zero) { tagType = BASSTag.BASS_TAG_OGG; } return(zero); } tagType = BASSTag.BASS_TAG_APE; return(zero); } tagType = BASSTag.BASS_TAG_ID3V2; return(zero); } tagType = BASSTag.BASS_TAG_MP4; return(zero); } return(IntPtr.Zero); }