Example #1
0
        static public void NewTest()
        {
            VorbisFile.OggVorbis_File vf = new VorbisFile.OggVorbis_File();

            Console.WriteLine(VorbisFile.ov_fopen("stop.ogg", ref vf));

            Vorbis.vorbis_info vi = VorbisFile.ov_info(ref vf, -1);

            int   buffersize = 44100;
            byte *buffer     = stackalloc byte [buffersize];

            FileStream stream = File.Create
                                (
                "C:\\" + Guid.NewGuid().ToString() + ".wav"
                                );

            // while (true)
            try
            {
                int bitstream = 0;
                int ret       = 0;

                while (true)
                {
                    ret = VorbisFile.ov_read(ref vf, buffer, buffersize, 0, 2, 1, ref bitstream);

                    if (ret <= 0)
                    {
                        return;
                    }

                    Console.WriteLine(ret);

                    byte[] buffer_managed = new byte [ret];
                    Marshal.Copy((IntPtr)buffer, buffer_managed, 0, buffer_managed.Length);

                    stream.Write(buffer_managed, 0, buffer_managed.Length);
                }
            }
            finally
            {
                stream.Close();
                stream.Dispose();
            }
        }