private int buffer_data(Stream sin, Xiph.ogg_sync_state oy)
        {
            int num = 0;

            byte[] buffer = null;
            int    offset = 0;

            lock (sin)
            {
                if (Xiph.ogg_sync_buffer(oy, 4096, out buffer, out offset))
                {
                    sin.Position = this.instream_pos;
                    num          = sin.Read(buffer, offset, 4096);
                    Xiph.ogg_sync_wrote(oy, num);
                    this.instream_pos = sin.Position;
                }
            }
            return(num);
        }