コード例 #1
0
ファイル: esd-sharp.cs プロジェクト: BackupTheBerlios/tamjb
        public EsdSample CacheSample(string name, Stream stream, EsdChannels channels,
						int rate, EsdBits bits)
        {
            byte[] buffer = new byte[BufferSize];
            int len, id, format;
            IntPtr ptr;
            EsdSample sample;

            format = (int) bits | (int) channels
                    | (int) EsdMode.Stream
                    | (int) EsdFunc.Play;

            id = esd_sample_cache(socket, format, rate,
                        (int) stream.Length, name);
            if (id < 0)
                throw new EsdCacheException("Could not cache sample", null);

            ptr = Marshal.AllocHGlobal(BufferSize);

            while ((len = stream.Read(buffer, 0, buffer.Length)) > 0)
            {
                Marshal.Copy(buffer, 0, ptr, len);
                write(socket, ptr, len);
            }

            Marshal.FreeHGlobal(ptr);

            if (id != esd_confirm_sample_cache(socket))
                throw new EsdCacheException("Could not cache sample", null);

            sample = new EsdSample(this);
            sample.id = id;
            sample.name = name;
            return sample;
        }
コード例 #2
0
ファイル: esd-sharp.cs プロジェクト: BackupTheBerlios/tamjb
 public EsdCacheException(string message, EsdSample sample)
     : base(message)
 {
     this.sample = sample;
 }
コード例 #3
0
ファイル: esd-sharp.cs プロジェクト: BackupTheBerlios/tamjb
        public EsdSample CacheFile(string filename)
        {
            EsdSample sample;
            int id;

            id = esd_file_cache(socket, String.Empty, filename);
            if (id < 0)
                throw new EsdCacheException("Could not cache file", null);

            sample = new EsdSample(this);
            sample.id = id;
            sample.name = filename;
            return sample;
        }