csvorbis.VorbisFile.fetch_headers C# (CSharp) Method

fetch_headers() private method

private fetch_headers ( Info vi, Comment vc, int serialno, Page og_ptr ) : int
vi Info
vc Comment
serialno int
og_ptr csogg.Page
return int
        int fetch_headers(Info vi, Comment vc, int[] serialno, Page og_ptr)
        {
            //System.err.println("fetch_headers");
            Page og=new Page();
            Packet op=new Packet();
            int ret;

            if(og_ptr==null)
            {
                ret=get_next_page(og, CHUNKSIZE);
                if(ret==OV_EREAD)return OV_EREAD;
                if(ret<0) return OV_ENOTVORBIS;
                og_ptr=og;
            }

            if(serialno!=null)serialno[0]=og_ptr.serialno();

            os.init(og_ptr.serialno());

            // extract the initial header from the first page and verify that the
            // Ogg bitstream is in fact Vorbis data

            vi.init();
            vc.init();

            int i=0;
            while(i<3)
            {
                os.pagein(og_ptr);
                while(i<3)
                {
                    int result=os.packetout(op);
                    if(result==0)break;
                    if(result==-1)
                    {
                        Console.Error.WriteLine("Corrupt header in logical bitstream.");
                        //goto bail_header;
                        vi.clear();
                        vc.clear();
                        os.clear();
                        return -1;
                    }
                    if(vi.synthesis_headerin(vc, op)!=0)
                    {
                        Console.Error.WriteLine("Illegal header in logical bitstream.");
                        //goto bail_header;
                        vi.clear();
                        vc.clear();
                        os.clear();
                        return -1;
                    }
                    i++;
                }
                if(i<3)
                    if(get_next_page(og_ptr, 1)<0)
                    {
                        Console.Error.WriteLine("Missing header in logical bitstream.");
                        //goto bail_header;
                        vi.clear();
                        vc.clear();
                        os.clear();
                        return -1;
                    }
            }
            return 0;
        }