Module Theora.Decoder

module Decoder: sig .. end

type decoder 

Type for an uninitialized decoder.

Type for an initialized decoder.

type t 
val check : Ogg.Stream.packet -> bool

Check wether an ogg logical stream contains theora data

This function shall be called just after you put the first page in the stream. See examples/thdecode.ml

Raises Ogg.Bad_data if the stream does not contain theora data.

val create : unit -> decoder

Initialize the decoding structure. The decoder should then be processed with headerin.

val headerin : decoder ->
Ogg.Stream.packet ->
t * Theora.info * string * (string * string) list

Add one packet from the stream and try to parse theora headers.

Returns an initialized decoder.

Raises Ogg.Not_enough_data is decoding header needs another packet.

This function should be called with the first packets of the stream until it returns the requested values. It may consume at most 5 packets (3 header packet, 1 additional packet and the initial video packet)

val get_yuv : t -> Ogg.Stream.stream -> Theora.yuv_buffer

Output the next available frame of decoded YUV data.

Raises Ogg.Not_enough_data if the Ogg.Stream.stream which has been used to initialize the handler does not contain enought data. You should submit a new page to it, and run this function again until it returns.

Raises Not_initialized if the decoder was not properly initialized with headerin.

val frames_of_granulepos : t -> Stdlib.Int64.t -> Stdlib.Int64.t

Convert a granulepos to an absolute frame index, starting at 0. The granulepos is interpreted in the context of a given theora_state handle.