page.java
来自「java ogg player library. for play back o」· Java 代码 · 共 974 行 · 第 1/2 页
JAVA
974 行
} // page with the 255 segment limit { int[] packets={0,10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,50,-1}; int[] head1={0x4f,0x67,0x67,0x53,0,0x02, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x01,0x02,0x03,0x04,0,0,0,0, 0xff,0x7b,0x23,0x17, 1, 0}; int[] head2={0x4f,0x67,0x67,0x53,0,0x00, 0x07,0xfc,0x03,0x00,0x00,0x00,0x00,0x00, 0x01,0x02,0x03,0x04,1,0,0,0, 0xed,0x2a,0x2e,0xa7, 255, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10}; int[] head3={0x4f,0x67,0x67,0x53,0,0x04, 0x07,0x00,0x04,0x00,0x00,0x00,0x00,0x00, 0x01,0x02,0x03,0x04,2,0,0,0, 0x6c,0x3b,0x82,0x3d, 1, 50}; int[][] headret={head1,head2,head3,null}; System.err.print("testing max packet segments... "); test_pack(packets,headret); } { // packet that overspans over an entire page int[] packets={0,100,9000,259,255,-1}; int[] head1={0x4f,0x67,0x67,0x53,0,0x02, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x01,0x02,0x03,0x04,0,0,0,0, 0xff,0x7b,0x23,0x17, 1, 0}; int[] head2={0x4f,0x67,0x67,0x53,0,0x00, 0x07,0x04,0x00,0x00,0x00,0x00,0x00,0x00, 0x01,0x02,0x03,0x04,1,0,0,0, 0x3c,0xd9,0x4d,0x3f, 17, 100,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255}; int[] head3={0x4f,0x67,0x67,0x53,0,0x01, 0x07,0x04,0x00,0x00,0x00,0x00,0x00,0x00, 0x01,0x02,0x03,0x04,2,0,0,0, 0xbd,0xd5,0xb5,0x8b, 17, 255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255}; int[] head4={0x4f,0x67,0x67,0x53,0,0x05, 0x07,0x10,0x00,0x00,0x00,0x00,0x00,0x00, 0x01,0x02,0x03,0x04,3,0,0,0, 0xef,0xdd,0x88,0xde, 7, 255,255,75,255,4,255,0}; int[][] headret={head1,head2,head3,head4,null}; System.err.print("testing very large packets... "); test_pack(packets,headret); } { // term only page. why not? int[] packets={0,100,4080,-1}; int[] head1={0x4f,0x67,0x67,0x53,0,0x02, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x01,0x02,0x03,0x04,0,0,0,0, 0xff,0x7b,0x23,0x17, 1, 0}; int[] head2={0x4f,0x67,0x67,0x53,0,0x00, 0x07,0x04,0x00,0x00,0x00,0x00,0x00,0x00, 0x01,0x02,0x03,0x04,1,0,0,0, 0x3c,0xd9,0x4d,0x3f, 17, 100,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255}; int[] head3={0x4f,0x67,0x67,0x53,0,0x05, 0x07,0x08,0x00,0x00,0x00,0x00,0x00,0x00, 0x01,0x02,0x03,0x04,2,0,0,0, 0xd4,0xe0,0x60,0xe5, 1,0}; int[][] headret={head1,head2,head3,null}; System.err.print("testing zero data page (1 nil packet)... "); test_pack(packets,headret); } { // build a bunch of pages for testing byte[] data=new byte[1024*1024]; int[] pl={0,100,4079,2956,2057,76,34,912,0,234,1000,1000,1000,300,-1}; int inptr=0; Page[] og=new Page[5]; for(int i=0; i<5; i++){ og[i]=new Page(); } os_en.reset(); for(int i=0;pl[i]!=-1;i++){ Packet op=new Packet(); int len=pl[i]; op.packet_base=data; op.packet=inptr; op.bytes=len; op.e_o_s=(pl[i+1]<0?1:0); op.granulepos=(i+1)*1000; for(int j=0;j<len;j++)data[inptr++]=(byte)(i+j); os_en.packetin(op); } // free(data); // retrieve finished pages for(int i=0;i<5;i++){ if(os_en.pageout(og[i])==0){ System.err.print("Too few pages output building sync tests!\n"); System.exit(1); } og[i].copy_page(); } // Test lost pages on pagein/packetout: no rollback { Page temp=new Page(); Packet test=new Packet(); System.err.print("Testing loss of pages... "); oy.reset(); os_de.reset(); for(int i=0;i<5;i++){ int index=oy.buffer(og[i].header_len); System.arraycopy(og[i].header_base, og[i].header, oy.data, index, og[i].header_len); oy.wrote(og[i].header_len); index=oy.buffer(og[i].body_len); System.arraycopy(og[i].body_base, og[i].body, oy.data, index, og[i].body_len); oy.wrote(og[i].body_len); } oy.pageout(temp); os_de.pagein(temp); oy.pageout(temp); os_de.pagein(temp); oy.pageout(temp); // skip oy.pageout(temp); os_de.pagein(temp); // do we get the expected results/packets? if(os_de.packetout(test)!=1)error(); test.checkpacket(0,0,0); if(os_de.packetout(test)!=1)error(); test.checkpacket(100,1,-1); if(os_de.packetout(test)!=1)error(); test.checkpacket(4079,2,3000); if(os_de.packetout(test)!=-1){ System.err.println("Error: loss of page did not return error"); System.exit(1); } if(os_de.packetout(test)!=1)error(); test.checkpacket(76,5,-1); if(os_de.packetout(test)!=1)error(); test.checkpacket(34,6,-1); System.err.println("ok."); } // Test lost pages on pagein/packetout: rollback with continuation { Page temp=new Page(); Packet test=new Packet(); System.err.print("Testing loss of pages (rollback required)... "); oy.reset(); os_de.reset(); for(int i=0;i<5;i++){ int index=oy.buffer(og[i].header_len); System.arraycopy(og[i].header_base, og[i].header, oy.data, index, og[i].header_len); oy.wrote(og[i].header_len); index=oy.buffer(og[i].body_len); System.arraycopy(og[i].body_base, og[i].body, oy.data, index, og[i].body_len); oy.wrote(og[i].body_len); } oy.pageout(temp); os_de.pagein(temp); oy.pageout(temp); os_de.pagein(temp); oy.pageout(temp); os_de.pagein(temp); oy.pageout(temp); // skip oy.pageout(temp); os_de.pagein(temp); // do we get the expected results/packets? if(os_de.packetout(test)!=1)error(); test.checkpacket(0,0,0); if(os_de.packetout(test)!=1)error(); test.checkpacket(100,1,-1); if(os_de.packetout(test)!=1)error(); test.checkpacket(4079,2,3000); if(os_de.packetout(test)!=1)error(); test.checkpacket(2956,3,4000); if(os_de.packetout(test)!=-1){ System.err.println("Error: loss of page did not return error"); System.exit(1); } if(os_de.packetout(test)!=1)error(); test.checkpacket(300,13,14000); System.err.println("ok."); } // the rest only test sync { Page og_de=new Page(); // Test fractional page inputs: incomplete capture System.err.print("Testing sync on partial inputs... "); oy.reset(); int index=oy.buffer(og[1].header_len); System.arraycopy(og[1].header_base, og[1].header, oy.data, index, 3); oy.wrote(3); if(oy.pageout(og_de)>0)error(); // Test fractional page inputs: incomplete fixed header index=oy.buffer(og[1].header_len); System.arraycopy(og[1].header_base, og[1].header+3, oy.data, index, 20); oy.wrote(20); if(oy.pageout(og_de)>0)error(); // Test fractional page inputs: incomplete header index=oy.buffer(og[1].header_len); System.arraycopy(og[1].header_base, og[1].header+23, oy.data, index, 5); oy.wrote(5); if(oy.pageout(og_de)>0)error(); // Test fractional page inputs: incomplete body index=oy.buffer(og[1].header_len); System.arraycopy(og[1].header_base, og[1].header+28, oy.data, index, og[1].header_len-28); oy.wrote(og[1].header_len-28); if(oy.pageout(og_de)>0)error(); index=oy.buffer(og[1].body_len); System.arraycopy(og[1].body_base, og[1].body, oy.data, index, 1000); oy.wrote(1000); if(oy.pageout(og_de)>0)error(); index=oy.buffer(og[1].body_len); System.arraycopy(og[1].body_base, og[1].body+1000, oy.data, index, og[1].body_len-1000); oy.wrote(og[1].body_len-1000); if(oy.pageout(og_de)<=0)error(); System.err.println("ok."); } // Test fractional page inputs: page + incomplete capture { Page og_de=new Page(); System.err.print("Testing sync on 1+partial inputs... "); oy.reset(); int index=oy.buffer(og[1].header_len); System.arraycopy(og[1].header_base, og[1].header, oy.data, index, og[1].header_len); oy.wrote(og[1].header_len); index=oy.buffer(og[1].body_len); System.arraycopy(og[1].body_base, og[1].body, oy.data, index, og[1].body_len); oy.wrote(og[1].body_len); index=oy.buffer(og[1].header_len); System.arraycopy(og[1].header_base, og[1].header, oy.data, index, 20); oy.wrote(20); if(oy.pageout(og_de)<=0)error(); if(oy.pageout(og_de)>0)error(); index=oy.buffer(og[1].header_len); System.arraycopy(og[1].header_base, og[1].header+20, oy.data, index, og[1].header_len-20); oy.wrote(og[1].header_len-20); index=oy.buffer(og[1].body_len); System.arraycopy(og[1].body_base, og[1].body, oy.data, index, og[1].body_len); oy.wrote(og[1].body_len); if(oy.pageout(og_de)<=0)error(); System.err.println("ok."); }// // // // // // // // // // Test recapture: garbage + page { Page og_de=new Page(); System.err.print("Testing search for capture... "); oy.reset(); // 'garbage' int index=oy.buffer(og[1].body_len); System.arraycopy(og[1].body_base, og[1].body, oy.data, index, og[1].body_len); oy.wrote(og[1].body_len); index=oy.buffer(og[1].header_len); System.arraycopy(og[1].header_base, og[1].header, oy.data, index, og[1].header_len); oy.wrote(og[1].header_len); index=oy.buffer(og[1].body_len); System.arraycopy(og[1].body_base, og[1].body, oy.data, index, og[1].body_len); oy.wrote(og[1].body_len); index=oy.buffer(og[2].header_len); System.arraycopy(og[2].header_base, og[2].header, oy.data, index, 20); oy.wrote(20); if(oy.pageout(og_de)>0)error(); if(oy.pageout(og_de)<=0)error(); if(oy.pageout(og_de)>0)error(); index=oy.buffer(og[2].header_len); System.arraycopy(og[2].header_base, og[2].header+20, oy.data, index, og[2].header_len-20); oy.wrote(og[2].header_len-20); index=oy.buffer(og[2].body_len); System.arraycopy(og[2].body_base, og[2].body, oy.data, index, og[2].body_len); oy.wrote(og[2].body_len); if(oy.pageout(og_de)<=0)error(); System.err.println("ok."); } // Test recapture: page + garbage + page { Page og_de=new Page(); System.err.print("Testing recapture... "); oy.reset(); int index=oy.buffer(og[1].header_len); System.arraycopy(og[1].header_base, og[1].header, oy.data, index, og[1].header_len); oy.wrote(og[1].header_len); index=oy.buffer(og[1].body_len); System.arraycopy(og[1].body_base, og[1].body, oy.data, index, og[1].body_len); oy.wrote(og[1].body_len); index=oy.buffer(og[2].header_len); System.arraycopy(og[2].header_base, og[2].header, oy.data, index, og[2].header_len); oy.wrote(og[2].header_len); index=oy.buffer(og[2].header_len); System.arraycopy(og[2].header_base, og[2].header, oy.data, index, og[2].header_len); oy.wrote(og[2].header_len); if(oy.pageout(og_de)<=0)error(); index=oy.buffer(og[2].body_len); System.arraycopy(og[2].body_base, og[2].body, oy.data, index, og[2].body_len-5); oy.wrote(og[2].body_len-5); index=oy.buffer(og[3].header_len); System.arraycopy(og[3].header_base, og[3].header, oy.data, index, og[3].header_len); oy.wrote(og[3].header_len); index=oy.buffer(og[3].body_len); System.arraycopy(og[3].body_base, og[3].body, oy.data, index, og[3].body_len); oy.wrote(og[3].body_len); if(oy.pageout(og_de)>0)error(); if(oy.pageout(og_de)<=0)error(); System.err.println("ok."); } } //return(0); } */}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?