Changeset 3190

Show
Ignore:
Timestamp:
2007-08-14 16:37:24 (1 year ago)
Author:
shans
Message:

Modified last_granulepos cache in packet reconstruction to be used correctly

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • oogg/trunk/packet.ml

    r3189 r3190  
    3838  rc_tf : granulePos -> float option; 
    3939  mutable rc_cache : packet list; 
    40   rc_lgp : granulePos option; 
     40  mutable rc_lgp : granulePos 
     41  (*rc_ngpf : string -> string -> granulePos -> granulePos;*) 
    4142} ;; 
    4243 
    43 let packet_from_last_gp crec pack gp = 
     44(* reconstruct packet given a previous gp *) 
     45let packet_from_last_gp crec pack = 
     46  let gp = crec.rc_lgp in 
    4447  let new_gp = Granules.calculate_next_gp pack.p_page.identity gp in 
     48  crec.rc_lgp <- new_gp; 
    4549  [< '{ pack with p_granulepos = new_gp; p_time = crec.rc_tf new_gp } >] 
    4650 
     51(* flush the non-timestamped packets from the context record now that we 
     52   have a real granulepos *) 
    4753let new_gp_and_flush crec pack =  
    4854  let rec _ngaf l gp = match l with 
     
    5460  let l = crec.rc_cache in 
    5561  crec.rc_cache <- []; 
     62  crec.rc_lgp <- pack.p_granulepos; 
    5663  [< _ngaf l pack.p_granulepos; 'pack >] 
    5764 
     
    7683  | None -> (match crec.rc_lgp with 
    7784            | None -> (crec.rc_cache <- pack::crec.rc_cache; [< >]) 
    78             | Some gp -> packet_from_last_gp crec pack gp
     85            | Some _ -> packet_from_last_gp crec pack
    7986  | Some gp -> [< new_gp_and_flush crec pack >];; 
    8087