forked from LeenkxTeam/LNXSDK
		
	
		
			
				
	
	
		
			61 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
			
		
		
	
	
			61 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Haxe
		
	
	
	
	
	
package kha.audio2.ogg.vorbis.data;
 | 
						|
import haxe.io.Bytes;
 | 
						|
import haxe.io.Input;
 | 
						|
import kha.audio2.ogg.vorbis.data.ReaderError.ReaderErrorType;
 | 
						|
import kha.audio2.ogg.vorbis.VorbisDecodeState;
 | 
						|
 | 
						|
/**
 | 
						|
 * ...
 | 
						|
 * @author shohei909
 | 
						|
 */
 | 
						|
class Page {
 | 
						|
    public var flag(default, null):Int;
 | 
						|
 | 
						|
    public function new () {
 | 
						|
 | 
						|
    }
 | 
						|
 | 
						|
    public function clone() {
 | 
						|
        var page = new Page();
 | 
						|
        page.flag = flag;
 | 
						|
        return page;
 | 
						|
    }
 | 
						|
 | 
						|
    // startPage
 | 
						|
    public function start(decodeState:VorbisDecodeState) {
 | 
						|
        decodeState.capturePattern();
 | 
						|
        startWithoutCapturePattern(decodeState);
 | 
						|
    }
 | 
						|
 | 
						|
    // startPageNoCapturePattern
 | 
						|
    public function startWithoutCapturePattern(decodeState:VorbisDecodeState) {
 | 
						|
        var version = decodeState.readByte();
 | 
						|
        if (version != 0) {
 | 
						|
            throw new ReaderError(ReaderErrorType.INVALID_STREAM_STRUCTURE_VERSION, "" + version);
 | 
						|
        }
 | 
						|
 | 
						|
        this.flag = decodeState.readByte();
 | 
						|
        var loc0 = decodeState.readInt32();
 | 
						|
        var loc1 = decodeState.readInt32();
 | 
						|
 | 
						|
        // input serial number -- vorbis doesn't interleave, so discard
 | 
						|
        decodeState.readInt32();
 | 
						|
        //if (this.serial != get32(f)) throw new ReaderError(ReaderErrorType.incorrectStreamSerialNumber);
 | 
						|
 | 
						|
        // page sequence number
 | 
						|
        decodeState.readInt32();
 | 
						|
 | 
						|
        // CRC32
 | 
						|
        decodeState.readInt32();
 | 
						|
 | 
						|
        // pageSegments
 | 
						|
        decodeState.setup(loc0, loc1);
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
class PageFlag {
 | 
						|
    static public inline var CONTINUED_PACKET = 1;
 | 
						|
    static public inline var FIRST_PAGE = 2;
 | 
						|
    static public inline var LAST_PAGE = 4;
 | 
						|
}
 |