Changeset 3194

Show
Ignore:
Timestamp:
2007-08-16 00:38:00 (1 year ago)
Author:
shans
Message:

Sorting functor, implementation of packet sorting. Still has issues.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • oogg/trunk/Makefile

    r3186 r3194  
    2828        ocamlopt $(PROF) -o oogg_rip $(LIBINCS) $(LIBS) oogg_rip.ml 
    2929         
    30 oogg.cmxa: types.cmx crc.cmx file.cmx granules.cmx page.cmx page_util.cmx \ 
    31            mediaStream.cmx packet.cmx packet_util.cmx 
     30oogg.cmxa: types.cmx crc.cmx file.cmx granules.cmx streamSort.cmx page.cmx \ 
     31                                         page_util.cmx mediaStream.cmx packet.cmx packet_util.cmx  
    3232        ocamlopt $(PROF) -a -o oogg.cmxa -i $^ 
    3333 
  • oogg/trunk/granules.ml

    r3193 r3194  
    100100 *) 
    101101let theora_last_gp bos prevpack thispack thisgp =  
     102  if thisgp = Some (0,0,0,0) then Some (0,0,0,0) else 
    102103  match thisgp with 
    103104    | None -> None 
  • oogg/trunk/oogg_dump_packets.ml

    r3187 r3194  
    44let pps = Packet.to_packetStream ps;; 
    55let ppps = Packet.reconstruct_timing pps;; 
    6 Packet_util.print_packetStream ppps;; 
     6let all_streams = Packet.sort ppps;; 
     7Packet_util.print_packetStream  
     8        (*ppps;;*)  
     9        (snd (List.nth all_streams (int_of_string Sys.argv.(2))));; 
  • oogg/trunk/packet.ml

    r3192 r3194  
    11open Types 
    22 
    3 let new_packet oc page data isLast = 
     3let new_packet oc page data n isLast = 
    44  { 
    55    p_data = (match oc with None -> data | Some d -> d ^ data) ; 
    66    p_granulepos = if isLast then page.raw.granulepos else None ; 
    77    p_time = if isLast then page.time else None ; 
    8     p_page = page 
     8    p_page = page ; 
     9    p_pageno = n 
    910  };; 
    1011 
     
    1516  if page.raw.bos then 
    1617    cont := (sn, {cont_packet = None})::!cont; 
    17   let rec _ptp raw_data =  
     18  let rec _ptp raw_data n =  
    1819    let pcont = List.assoc sn !cont in 
    1920    let oc = pcont.cont_packet in  
     
    2122    match raw_data with 
    2223      | h::[l] when not page.raw.last_packet_complete ->  
    23           (pcont.cont_packet <- Some l; [< 'new_packet oc page h true >]) 
     24          (pcont.cont_packet <- Some l; [< 'new_packet oc page h n true >]) 
    2425      | [h] when not page.raw.last_packet_complete -> 
    2526          ((match oc with  
     
    2930          ) 
    3031      | h::[] when page.raw.last_packet_complete ->  
    31           [< 'new_packet oc page h true >] 
    32       | h::t  -> [< 'new_packet oc page h false; _ptp t >] 
     32          [< 'new_packet oc page h n true >] 
     33      | h::t  -> [< 'new_packet oc page h n false; _ptp t (n+1) >] 
    3334      | []    -> [< >] in 
    34   _ptp page.raw.raw_data;; 
     35  _ptp page.raw.raw_data 0;; 
    3536 
    3637let to_packetStream pstream = 
     
    107108    | [< >] -> [< >] in 
    108109  _rt pstream;; 
     110 
     111module PacketInput = 
     112  struct 
     113    type k = serialNo 
     114    type s = packet 
     115    let eq = (=) 
     116    let get_key p = p.p_page.raw.serialno 
     117    let is_first p = p.p_page.raw.bos && p.p_pageno = 0 
     118    let is_last p = p.p_page.raw.eos 
     119  end;; 
     120 
     121module PacketSort = StreamSort.StreamSort (PacketInput);; 
     122 
     123let sort = PacketSort.sort;; 
  • oogg/trunk/packet.mli

    r3187 r3194  
    22 
    33val reconstruct_timing : Types.packetStream -> Types.packetStream;; 
     4 
     5val sort : Types.packetStream -> (Types.serialNo * Types.packetStream) list;; 
  • oogg/trunk/types.ml

    r3187 r3194  
    106106    mutable p_granulepos : granulePos ; 
    107107    mutable p_time : float option ; 
    108     p_page : page 
     108    p_page : page ; 
     109    p_pageno : int 
    109110  };; 
    110111 
  • oogg/trunk/types.mli

    r3187 r3194  
    6969    mutable p_granulepos : granulePos ; 
    7070    mutable p_time : float option ; 
    71     p_page : page 
     71    p_page : page ; 
     72    p_pageno : int 
    7273  };; 
    7374