Changeset 3202
- Timestamp:
- 2007-08-26 16:27:02 (1 year ago)
- Files:
-
- oogg/trunk/Makefile (modified) (2 diffs)
- oogg/trunk/oogg_info.ml (modified) (1 diff)
- oogg/trunk/oogg_sort_stream.ml (added)
- oogg/trunk/packet.ml (modified) (2 diffs)
- oogg/trunk/page.ml (modified) (2 diffs)
- oogg/trunk/page.mli (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
oogg/trunk/Makefile
r3194 r3202 1 1 PROGRAMS = oogg_dump_pages oogg_copy_file oogg_rip oogg_check_checksums \ 2 oogg_info oogg_dump_packets 2 oogg_info oogg_dump_packets oogg_sort_stream 3 3 LIBINCS = -I +extlib 4 4 LIBS = unix.cmxa extLib.cmxa oogg.cmxa … … 27 27 oogg_rip: oogg.cmxa oogg_rip.ml 28 28 ocamlopt $(PROF) -o oogg_rip $(LIBINCS) $(LIBS) oogg_rip.ml 29 30 oogg_sort_stream: oogg.cmxa oogg_sort_stream.ml 31 ocamlopt $(PROF) -o oogg_sort_stream $(LIBINCS) $(LIBS) \ 32 oogg_sort_stream.ml 29 33 30 34 oogg.cmxa: types.cmx crc.cmx file.cmx granules.cmx streamSort.cmx page.cmx \ oogg/trunk/oogg_info.ml
r3196 r3202 4 4 let s = File.to_stream f 0;; 5 5 let pages = Page.to_pageStream s;; 6 let sorted_pages = Page. sortpages;;6 let sorted_pages = Page.to_streams pages;; 7 7 8 8 let rec print_sorted_pages l = match l with oogg/trunk/packet.ml
r3197 r3202 41 41 | [< >] -> [< >] in 42 42 _tps pstream;; 43 43 (* 44 44 let create_fresh_page packet = 45 45 let raw_page = … … 86 86 | [< >] -> [< flush_page !context >] in 87 87 _ptp ();; 88 *) 88 89 89 90 type reconstruct_context = { oogg/trunk/page.ml
r3196 r3202 272 272 273 273 module RawPageSort = StreamSort.StreamSort (RawPageInput);; 274 let sort_raw = RawPageSort.sort;;274 let to_streams_raw = RawPageSort.sort;; 275 275 276 276 module PageInput = … … 286 286 287 287 module PageSort = StreamSort.StreamSort (PageInput);; 288 let sort = PageSort.sort;; 288 let to_streams = PageSort.sort;; 289 290 let _cmp a b = 291 if a = None then true 292 else if b = None then true 293 else a >= b;; 294 295 let _p t = match t with 296 | None -> "None" 297 | Some t -> "Some " ^ string_of_float t 298 299 let sort pageStream = 300 let sorted = ref false in 301 let lookaside = ref None in 302 let last = ref (Some 0.0) in 303 let rec _sort pageStream = match pageStream with parser 304 | [< 'page >] -> 305 ( 306 if !last > page.time then sorted := false; 307 match !lookaside with 308 | None -> lookaside := Some page; [< _sort pageStream >] 309 | Some stored -> 310 ( 311 if _cmp page.time stored.time 312 then 313 ( 314 lookaside := Some page; 315 last := stored.time ; 316 [< 'stored ; _sort pageStream >] 317 ) 318 else 319 ( 320 last := page.time ; 321 [< 'page ; _sort pageStream >] 322 ) 323 ) 324 ) 325 | [< >] -> 326 ( match !lookaside with 327 | None -> [< >] 328 | Some stored -> [< 'stored >] ) in 329 let ps = ref pageStream in 330 while not !sorted do ( 331 sorted := true; 332 ps := _sort !ps; 333 ) done; 334 !ps;; oogg/trunk/page.mli
r3196 r3202 15 15 val identify_bos : Types.rawPage -> Types.mediaType;; 16 16 17 val sort_raw : Types.rawPageStream ->17 val to_streams_raw : Types.rawPageStream -> 18 18 (Types.serialNo * Types.rawPageStream) list;; 19 19 20 val sort : Types.pageStream -> (Types.serialNo * Types.pageStream) list;; 20 val to_streams : Types.pageStream -> (Types.serialNo * Types.pageStream) list;; 21 22 val sort : Types.pageStream -> Types.pageStream;;