[xiph-commits] r3453 - in firefox_plugin/trunk: . doc

johnf at svn.annodex.net johnf at svn.annodex.net
Wed Feb 13 03:30:04 PST 2008


Author: johnf
Date: 2008-02-13 03:30:03 -0800 (Wed, 13 Feb 2008)
New Revision: 3453

Removed:
   firefox_plugin/trunk/doc/interface.txt
   firefox_plugin/trunk/doc/liboggplay.txt
   firefox_plugin/trunk/doc/liboggplay_data_layout.png
   firefox_plugin/trunk/doc/liboggplay_data_layout.svg
   firefox_plugin/trunk/doc/notes.txt
   firefox_plugin/trunk/python/
   firefox_plugin/trunk/src/
Log:
Start removing liboggplay bits

Deleted: firefox_plugin/trunk/doc/interface.txt
===================================================================
--- firefox_plugin/trunk/doc/interface.txt	2008-02-13 11:25:34 UTC (rev 3452)
+++ firefox_plugin/trunk/doc/interface.txt	2008-02-13 11:30:03 UTC (rev 3453)
@@ -1,73 +0,0 @@
-OggPlay:              opaque internal data pointer
-OggPlayReader:        reader object for retrieving data
-OggPlayErrorCode:     enumeration of error codes (shared between main library
-                      and the readers)
-OggPlayDataCallback:  callback to indicate decoded synchronised data is 
-                      available (return value can be used to pause decoding)
-OggPlayVideo:         struct containing video data including picture size and 
-                      number of pictures available
-OggPlayAudio:         struct containing audio data, audio information, and
-                      number of samples available
-OggPlayCMML:          struct containing cmml data
-OggPlayInfoType:      enumeration of information sources (http headers, comment
-                                          packets, track headers, etc.)
-OggPlayFormat:        enumeration of formats that tracks can be returned in
-                      (e.g. pcm data in shorts or floats)
-
-/* initialisation and teardown */
-OggPlay * or NULL <- oggplay_open_with_reader(OggPlayReader *, char *)
-OggPlay * or NULL <- oggplay_open(char *)
-OggPlayErrorCode  <- oggplay_close(OggPlay *)
-
-After initialisation and setting of reader / source, the library will read
-enough data to determine what logical bitstreams (tracks) are present.
-        
-/* stream querying */
-int               <- oggplay_get_num_tracks(OggPlay *)
-OggzStreamContent <- oggplay_get_track_type(OggPlay *, int)
-const char *      <- oggplay_get_track_typename(OggPlay *, int)
-OggPlayErrorCode  <- oggplay_set_track_active(OggPlay *, int)
-char *            <- oggplay_get_track_info(OggPlay *, int, OggPlayInfoType,
-                                              char *)
-OggPlayErrorCode  <- oggplay_set_track_format(OggPlay *, int, OggPlayFormat)
-
-/* playback control */
-OggPlayErrorCode  <- oggplay_set_data_callback(OggPlay *, OggPlayDataCallback)
-OggPlayErrorCode  <- oggplay_set_callback_rate(OggPlay *, ogg_int64_t)
-OggPlayErrorCode  <- oggplay_set_callback_num_frames(OggPlay *, int, int)
-OggPlayErrorCode  <- oggplay_start_decoding(OggPlay *)
-OggPlayErrorCode  <- oggplay_seek(OggPlay *, ogg_int64_t)
-OggPlayErrorCode  <- oggplay_seek_frame(OggPlay *, int, ogg_int64_t)
-OggPlayErrorCode  <- oggplay_caching_hint(OggPlay *, ogg_int64_t)
-OggPlayErrorCode  <- oggplay_caching_hint_frame(OggPlay *, int, ogg_int64_t)
-
-/* call from within OggPlayDataCallback */
-OggPlayErrorCode  <- oggplay_caching_hint_now(OggPlay *)
-OggPlayFrames *   <- oggplay_get_video_data(OggPlay *, int)
-OggPlayAudio *    <- oggplay_get_audio_data(OggPlay *, int)
-OggPlayCMML *     <- oggplay_get_cmml_data(OggPlay *, int)
-OggPlayErrorCode  <- oggplay_lock_data(OggPlay *, 
-        
-/* calls that break Reader abstraction */
-OggPlayCMML **    <- oggplay_extract_all_cmml(OggPlay *)
-
-------------------------------------------------------------------------
-
-/* OggPlayReader API (INTERNAL ONLY!) */
-
-OggPlayErrorCode   <- initialise(OggPlayReader *, char *)
-OggPlayErrorCode   <- destroy(OggPlayReader *)
-                
-/* return size, location of data, absolute pos in pointers. */
-OggPlayErrorCode   <- get_next_chunk(OggPlayReader *, char * const *, 
-                                                              int *, int *)
-OggPlayErrorCode   <- seek_to_chunk(OggPlayReader *, int)
-
-/* mark a chunk as not required again in the immediate future */
-OggPlayErrorCode   <- mark_chunk_consumed(OggPlayReader *, char *)
-
-/* mark an absolute pos / size region as good for caching */
-OggPlayErrorCode   <- set_caching_hint(OggPlayReader *, int, int)
-
------------------------------------------------------------------------
-

Deleted: firefox_plugin/trunk/doc/liboggplay.txt
===================================================================
--- firefox_plugin/trunk/doc/liboggplay.txt	2008-02-13 11:25:34 UTC (rev 3452)
+++ firefox_plugin/trunk/doc/liboggplay.txt	2008-02-13 11:30:03 UTC (rev 3453)
@@ -1,147 +0,0 @@
-What is liboggplay designed to do?
-----------------------------------
-
-There are several layers to a typical ogg playing application:
-(1) Parsing of the ogg container format (handled by libogg and made usable by 
-    liboggz) and routing of packets
-(2) Decoding of individual ogg packets (handled by libtheora, libvorbis, 
-    libfishsound, libcmml, etc. depending on contents)
-(3) Maintenance of synchronisation between individual raw data streams
-(4) Presentation of raw data to the user (via the screen / sound card / etc.)
-
-liboggplay handles the first 3 layers for you, leaving just the actual 
-presentation for the application writer.  It may not be immediately obvious
-as to why the third layer is necessary, however the following simple explanation
-provides justification.
-        
-Ogg packets are ordered by the last presentation time in each packet, so
-there can be significant differences in the progression of the video and 
-audio streams at any given time.  Consider the following (real) layout,
-where each section between two vertical bars is an ogg page, and each entry
-is a theora packet (T) or a vorbis packet (V).  Each theora packet is marked
-with the frame number contained within the packet, and the vorbis packet is 
-marked with the samples it contains.  Packets which span pages are listed on
-both pages, with dashes indicating that the packets are connected.
-
-  | T(0) | T(1)+T(2)-|-T(2)+T(3)+T(4)-|-T(4) | T(5)+T(6) | V(0-12992) |
-
-
-In this case, there are:
- * 6 complete theora packets (i.e frames), representing 240 milliseconds of 
-   data, followed by:
- * 1 page of vorbis data, which provides 294 milliseconds of data
-
-This means that after decoding the first frame, a player must decode
-significant additional theora data in order to reach the required vorbis packet
-that matches the frame.  Alternatively, the player must queue up the additional
-encoded packets, and wait for the appropriate time to decode.  This often leads
-to a multithreaded design with seperate threads for file reading, demuxing,
-decoding and presentation - an approach that works but is needlessly
-complicated and very difficult to get right.
-
-Liboggplay is designed to provide the ogg application writer with a very simple
-API for ogg file decoding.  It is designed such that the library is completely
-single-threaded.  The rationale for this is that ogg decoding is not an
-expensive task in terms of CPU time - multicore systems do not need multiple
-threads of execution to meet frame presentation deadlines and single core
-systems do not benefit from multithreading during the decode process (in fact
-they suffer, both because of the cost of message passing and because of the 
-increase in complexity).  Furthermore, using a single-threaded paradigm for the
-design of the liboggplay library helps ensure that this library is portable to
-a wide range of systems.
-
-Note that a seperate presentation thread may be necessary for players, 
-especially if the player is concerned with exact timing of frame delivery or
-decoding of HD content.  In these cases, this thread will exist entirely in the
-player application and be used to smooth out irregularities in the cost of
-decoding individual frames.  However, it is anticipated that applications
-intending only to decode SD or lower content will probably not require
-an additional thread and will benefit from the lower complexity of such an 
-approach (for example, on a 1.86 MHz Pentium M processor, less than 1% of
-frames in a typical SD movie appear to require more than 70% of a 25 fps
-frameslice ***These figures are currently based on limited tests and should be
-checked on more SD content / extended to other systems! ***)
-
-Accordingly, using liboggplay the application writer simply:
-(1) opens the ogg file through liboggplay
-(2) inspects the tracks within the file and activates some or all of them
-(3) sets a callback interval and starts liboggplay decoding
-(4) on each callback, liboggplay has found enough data to satisfy the next
-    interval.  The application:
-    (a) requests decoded versions of required data (frames, audio samples, 
-        etc.)
-    (b) presents this data to the screen or audio card (or queues this data for
-        presentation should a seperate presentation thread be required).
-
-This approach allows the application writer to effectively seperate
-synchronisation and data retrieval issues from data presentation issues, and
-should also avoid the requirement of a multi-threaded application.
-
-Design principles of liboggplay
--------------------------------
-
-* Liboggplay is single-threaded.  Hence operations should not incur unexpected
-  delays.  This means (for example) that data decoding should only occur at the
-  explicit request of the user.
-* Liboggplay hides internal data representations from the user.  The only 
-  non-opaque data should be fixed-representation raw output (e.g. raw YUV data
-  or raw PCM data).
-* All provided data to liboggplay should be checked where possible.  NULL 
-  pointers should generate an error, not a segmentation fault.
-* liboggplay's data provision mechanism should be safe for multithreaded
-  players.  Decoded data will be added to lock-free circular queues and 
-  thread-safe functions for popping data off these queues will be provided.
-* It is not necessary for applications based around liboggplay to buffer data
-  on the offchance that an expensive frame may arrive later.  Guaranteed 
-  synchronised provision of data from several streams means that playback can
-  stall when necessary, which should make liboggplay applications more 
-  responsive.
-
-Internal organisation of liboggplay
------------------------------------
-
-(see also libogg_data_layout.svg/.png)
-
-(1) permanent structures 
-
-The Oggplay structure is the toplevel structure for the library.  It contains:
-* a pointer to the user callback
-* a pointer to an OggPlayReader (see below)
-* an array of pointers to OggPlayDecode structures (one for each track in an
-  ogg file)
-
-This structure is initialised and used mainly from src/liboggplay/oggplay.c
-
-The OggPlayReader structure provides an interface for accessing ogg file data
-in a streaming manner.  The interface can be found in 
-include/oggplay/oggplay_reader.h.  A simple implementation can be found in
-src/liboggplay/oggplay_file_reader.c.
-
-The OggPlayDecode structures contain information relevant to a single stream
-(or track) within the ogg file.  The structure is actually used as the first
-element of a track-format-specific structure (e.g. OggPlayVorbisdecode or
-OggPlayTheoraDecode).  The structure contains a pointer back to the OggPlay
-structure, as well as pointers to linked lists of OggPlayDataHeader structures.
-
-This structure is used mainly from src/liboggplay/oggplay_callback.c and
-src/liboggplay/oggplay_query.c, although the data_list and end_of_data_list 
-pointers are manipulated in src/liboggplay/oggplay_data.c.
-
-The OggPlayDataHeader structures contain information relevant to a single piece
-of data from a track.  This data:
- * has a data type (and may be encoded or decoded) *not yet implemented!
- * has a presentation time 
- * has a lock field
-The structures are manipulated in src/liboggplay/oggplay_data.c.
-
-(2) callback structures
-
-The callback to the user application contains a pointer to an array of
-OggPlayCallbackInfo structures.  These provide a data type, the number
-of records required to be collected in the current timeslice, the additional
-number of available records, and a pointer to an array containing the records 
-themselves (the records are pointers to the OggPlayDataHeader objects).
-
-The user application makes requests with this pointer (which is opaque to the
-application) to retrieve individual records, which may need to be decoded on
-demand.

Deleted: firefox_plugin/trunk/doc/liboggplay_data_layout.png
===================================================================
(Binary files differ)

Deleted: firefox_plugin/trunk/doc/liboggplay_data_layout.svg
===================================================================
--- firefox_plugin/trunk/doc/liboggplay_data_layout.svg	2008-02-13 11:25:34 UTC (rev 3452)
+++ firefox_plugin/trunk/doc/liboggplay_data_layout.svg	2008-02-13 11:30:03 UTC (rev 3453)
@@ -1,939 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://web.resource.org/cc/"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="841.88977pt"
-   height="595.27557pt"
-   id="svg2"
-   sodipodi:version="0.32"
-   inkscape:version="0.43"
-   version="1.0"
-   sodipodi:docbase="/home/shans/src/liboggplay/doc"
-   sodipodi:docname="liboggplay_data_layout.svg"
-   inkscape:export-filename="/home/shans/src/liboggplay/doc/liboggplay_data_layout.png"
-   inkscape:export-xdpi="180.03999"
-   inkscape:export-ydpi="180.03999">
-  <defs
-     id="defs4">
-    <marker
-       inkscape:stockid="Arrow1Lstart"
-       orient="auto"
-       refY="0.0"
-       refX="0.0"
-       id="Arrow1Lstart"
-       style="overflow:visible">
-      <path
-         id="path3523"
-         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
-         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none"
-         transform="scale(0.8)" />
-    </marker>
-    <marker
-       inkscape:stockid="Tail"
-       orient="auto"
-       refY="0.0"
-       refX="0.0"
-       id="Tail"
-       style="overflow:visible">
-      <g
-         id="g7823"
-         transform="scale(-1.2)">
-        <path
-           id="path7825"
-           d="M -3.8048674,-3.9585227 L 0.54352094,-0.00068114835"
-           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;marker-start:none;marker-end:none;stroke-linecap:round" />
-        <path
-           id="path7827"
-           d="M -1.2866832,-3.9585227 L 3.0617053,-0.00068114835"
-           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;marker-start:none;marker-end:none;stroke-linecap:round" />
-        <path
-           id="path7829"
-           d="M 1.3053582,-3.9585227 L 5.6537466,-0.00068114835"
-           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;marker-start:none;marker-end:none;stroke-linecap:round" />
-        <path
-           id="path7831"
-           d="M -3.8048674,4.1775838 L 0.54352094,0.21974226"
-           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;marker-start:none;marker-end:none;stroke-linecap:round" />
-        <path
-           id="path7833"
-           d="M -1.2866832,4.1775838 L 3.0617053,0.21974226"
-           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;marker-start:none;marker-end:none;stroke-linecap:round" />
-        <path
-           id="path7835"
-           d="M 1.3053582,4.1775838 L 5.6537466,0.21974226"
-           style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.8;marker-start:none;marker-end:none;stroke-linecap:round" />
-      </g>
-    </marker>
-    <linearGradient
-       id="linearGradient13365">
-      <stop
-         style="stop-color:#000000;stop-opacity:1;"
-         offset="0"
-         id="stop13367" />
-      <stop
-         style="stop-color:#ff0000;stop-opacity:1;"
-         offset="1"
-         id="stop13369" />
-    </linearGradient>
-    <marker
-       inkscape:stockid="Arrow2Mend"
-       orient="auto"
-       refY="0.0"
-       refX="0.0"
-       id="Arrow2Mend"
-       style="overflow:visible;">
-      <path
-         id="path7844"
-         style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
-         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
-         transform="scale(0.6) rotate(180) translate(-5,0)" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow1Lend"
-       orient="auto"
-       refY="0.0"
-       refX="0.0"
-       id="Arrow1Lend"
-       style="overflow:visible;">
-      <path
-         id="path7868"
-         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
-         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;"
-         transform="scale(0.8) rotate(180)" />
-    </marker>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13365"
-       id="radialGradient13373"
-       cx="258.05109"
-       cy="37.146736"
-       fx="258.05109"
-       fy="37.146736"
-       r="31.392576"
-       gradientTransform="matrix(1,0,0,1.097207,0,-3.61093)"
-       gradientUnits="userSpaceOnUse" />
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="1"
-     inkscape:cx="461.16319"
-     inkscape:cy="369.968"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="true"
-     inkscape:grid-points="true"
-     gridspacingx="5px"
-     gridspacingy="5px"
-     gridempspacing="0"
-     gridtolerance="2px"
-     gridoriginy="0px"
-     gridoriginx="0px"
-     inkscape:window-width="1270"
-     inkscape:window-height="945"
-     inkscape:window-x="0"
-     inkscape:window-y="25" />
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1">
-    <flowRoot
-       xml:space="preserve"
-       id="flowRoot12347"><flowRegion
-         id="flowRegion12349"><rect
-           id="rect12351"
-           width="148.42574"
-           height="60.274231"
-           x="654.07379"
-           y="318.82025" /></flowRegion><flowPara
-         id="flowPara12353">  next</flowPara><flowPara
-         id="flowPara13567">  lock</flowPara><flowPara
-         id="flowPara13569">  presentation_time</flowPara><flowPara
-         id="flowPara13571">  samples_in_record</flowPara><flowPara
-         id="flowPara13557" /></flowRoot>    <rect
-       style="fill:none;stroke:#0000eb;stroke-width:3.81555223;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="rect1317"
-       width="134.59761"
-       height="181.34151"
-       x="48.465736"
-       y="145.80188" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#0000eb;stroke-width:0.9524824px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="M 46.440249,170.83279 L 180,170.83279"
-       id="path2192" />
-    <flowRoot
-       xml:space="preserve"
-       id="flowRoot2198"
-       style="font-size:0.1px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Bitstream Vera Sans"
-       transform="translate(-26.29692,78.73831)"><flowRegion
-         id="flowRegion2200"><rect
-           id="rect2202"
-           width="145.19795"
-           height="23.771751"
-           x="79.802048"
-           y="70.322731"
-           style="font-size:0.1px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Bitstream Vera Sans" /></flowRegion><flowPara
-         id="flowPara2204">rrrr</flowPara></flowRoot>    <flowRoot
-       xml:space="preserve"
-       id="flowRoot2206"
-       transform="translate(-2.617188,81.50587)"><flowRegion
-         id="flowRegion2208"><rect
-           id="rect2210"
-           width="143.44167"
-           height="26.263966"
-           x="81.822357"
-           y="68.302429" /></flowRegion><flowPara
-         id="flowPara2212"
-         style="font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Bitstream Vera Sans">OggPlay</flowPara></flowRoot>    <flowRoot
-       xml:space="preserve"
-       id="flowRoot2242"
-       style="font-size:0.1px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Bitstream Vera Sans"
-       transform="translate(175.5,157.4206)"><flowRegion
-         id="flowRegion2244"><rect
-           id="rect2246"
-           width="145.19795"
-           height="23.771751"
-           x="79.802048"
-           y="70.322731"
-           style="font-size:0.1px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Bitstream Vera Sans" /></flowRegion><flowPara
-         id="flowPara2248">rrrr</flowPara></flowRoot>    <rect
-       style="fill:none;stroke:#0000eb;stroke-width:5.31264973;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="rect2260"
-       width="133.11888"
-       height="355.46957"
-       x="220"
-       y="235.89052" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#0000eb;stroke-width:0.95581901;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       d="M 220.48498,259.09448 L 354.98596,259.09448"
-       id="path2262" />
-    <flowRoot
-       xml:space="preserve"
-       id="flowRoot2264"
-       style="font-size:0.1px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Bitstream Vera Sans"
-       transform="translate(153.666,321.6823)"><flowRegion
-         id="flowRegion2266"><rect
-           id="rect2268"
-           width="145.19795"
-           height="23.771751"
-           x="79.802048"
-           y="70.322731"
-           style="font-size:0.1px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Bitstream Vera Sans" /></flowRegion><flowPara
-         id="flowPara2270">rrrr</flowPara></flowRoot>    <flowRoot
-       xml:space="preserve"
-       id="flowRoot2272"
-       transform="translate(142.2891,169.2621)"><flowRegion
-         id="flowRegion2274"><rect
-           id="rect2276"
-           width="143.44167"
-           height="26.263966"
-           x="81.822357"
-           y="68.302429" /></flowRegion><flowPara
-         id="flowPara2278"
-         style="font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Bitstream Vera Sans">OggPlayDecode</flowPara></flowRoot>    <flowRoot
-       xml:space="preserve"
-       id="flowRoot2286"
-       style="font-size:0.1px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Bitstream Vera Sans"
-       transform="translate(305.8843,166.6823)"><flowRegion
-         id="flowRegion2288"><rect
-           id="rect2290"
-           width="145.19795"
-           height="23.771751"
-           x="79.802048"
-           y="70.322731"
-           style="font-size:0.1px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Bitstream Vera Sans" /></flowRegion><flowPara
-         id="flowPara2292">rrrr</flowPara></flowRoot>    <rect
-       style="fill:none;stroke:#0000eb;stroke-width:5.18633223;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="rect2322"
-       width="133.11789"
-       height="338.76935"
-       x="360"
-       y="235.32515" />
-    <flowRoot
-       xml:space="preserve"
-       id="flowRoot2326"
-       style="font-size:0.1px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Bitstream Vera Sans"
-       transform="translate(298.8741,537.6343)"><flowRegion
-         id="flowRegion2328"><rect
-           id="rect2330"
-           width="145.19795"
-           height="23.771751"
-           x="79.802048"
-           y="70.322731"
-           style="font-size:0.1px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Bitstream Vera Sans" /></flowRegion><flowPara
-         id="flowPara2332">rrrr</flowPara></flowRoot>    <flowRoot
-       xml:space="preserve"
-       id="flowRoot2334"
-       transform="translate(282.2891,168.2519)"><flowRegion
-         id="flowRegion2336"><rect
-           id="rect2338"
-           width="143.44167"
-           height="26.263966"
-           x="81.822357"
-           y="68.302429" /></flowRegion><flowPara
-         id="flowPara2340"
-         style="font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Bitstream Vera Sans">OggPlayDecode</flowPara></flowRoot>    <flowRoot
-       xml:space="preserve"
-       id="flowRoot2342"
-       style="font-size:0.1px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Bitstream Vera Sans"
-       transform="translate(434.859,166.6823)"><flowRegion
-         id="flowRegion2344"><rect
-           id="rect2346"
-           width="145.19795"
-           height="23.771751"
-           x="79.802048"
-           y="70.322731"
-           style="font-size:0.1px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Bitstream Vera Sans" /></flowRegion><flowPara
-         id="flowPara2348">rrrr</flowPara></flowRoot>    <rect
-       style="fill:none;stroke:#0000eb;stroke-width:5.56161547;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="rect2352"
-       width="133.49352"
-       height="388.47351"
-       x="501.50647"
-       y="235.62097" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#0000eb;stroke-width:0.95592552px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="M 500.47628,258.63598 L 635.00337,258.63598"
-       id="path2354" />
-    <flowRoot
-       xml:space="preserve"
-       id="flowRoot2356"
-       style="font-size:0.1px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Bitstream Vera Sans"
-       transform="translate(413.8905,462.2877)"><flowRegion
-         id="flowRegion2358"><rect
-           id="rect2360"
-           width="145.19795"
-           height="23.771751"
-           x="79.802048"
-           y="70.322731"
-           style="font-size:0.1px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Bitstream Vera Sans" /></flowRegion><flowPara
-         id="flowPara2362">rrrr</flowPara></flowRoot>    <flowRoot
-       xml:space="preserve"
-       id="flowRoot2364"
-       transform="translate(422.2891,169.2621)"><flowRegion
-         id="flowRegion2366"><rect
-           id="rect2368"
-           width="143.44167"
-           height="26.263966"
-           x="81.822357"
-           y="68.302429" /></flowRegion><flowPara
-         id="flowPara2370"
-         style="font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Bitstream Vera Sans">OggPlayDecode</flowPara></flowRoot>    <flowRoot
-       xml:space="preserve"
-       id="flowRoot2372"
-       style="font-size:0.1px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Bitstream Vera Sans"
-       transform="translate(588.859,542.6823)"><flowRegion
-         id="flowRegion2374"><rect
-           id="rect2376"
-           width="145.19795"
-           height="23.771751"
-           x="79.802048"
-           y="70.322731"
-           style="font-size:0.1px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Bitstream Vera Sans" /></flowRegion><flowPara
-         id="flowPara2378">rrrr</flowPara></flowRoot>    <rect
-       style="fill:none;stroke:#0000eb;stroke-width:3.80599546;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="rect2386"
-       width="148.45619"
-       height="163.59047"
-       x="652.24054"
-       y="297.1362" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#0000eb;stroke-width:1.00585043px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="M 650.50208,318.59918 L 799.44795,318.59918"
-       id="path2388" />
-    <flowRoot
-       xml:space="preserve"
-       id="flowRoot2390"
-       transform="translate(572.4014,232.4642)"><flowRegion
-         id="flowRegion2392"><rect
-           id="rect2394"
-           width="143.44167"
-           height="26.263966"
-           x="81.822357"
-           y="68.302429" /></flowRegion><flowPara
-         id="flowPara2396"
-         style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Bitstream Vera Sans">OggPlayDataHeader</flowPara></flowRoot>    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#0000eb;stroke-width:4.05406713;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       d="M 654.57788,383.08863 L 802.97297,383.08863"
-       id="path2398" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#0000eb;stroke-width:0.95745766px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="M 360.04134,258.63598 L 495,258.63598"
-       id="path5021" />
-    <rect
-       style="fill:none;stroke:#0000eb;stroke-width:3.80599546;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="rect5023"
-       width="148.45619"
-       height="163.59047"
-       x="817.28967"
-       y="297.12857" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#0000eb;stroke-width:1.00585043px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="M 815.5512,318.59156 L 964.49707,318.59156"
-       id="path5025" />
-    <flowRoot
-       xml:space="preserve"
-       id="flowRoot5027"
-       transform="translate(737.4505,232.4566)"><flowRegion
-         id="flowRegion5029"><rect
-           id="rect5031"
-           width="143.44167"
-           height="26.263966"
-           x="81.822357"
-           y="68.302429" /></flowRegion><flowPara
-         id="flowPara5033"
-         style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Bitstream Vera Sans">OggPlayDataHeader</flowPara></flowRoot>    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#0000eb;stroke-width:4.05406713;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       d="M 819.627,383.08101 L 968.02209,383.08101"
-       id="path5035" />
-    <rect
-       style="fill:none;stroke:#0000eb;stroke-width:3.80599546;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="rect5037"
-       width="148.45619"
-       height="163.59047"
-       x="875.60675"
-       y="497.1362" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#0000eb;stroke-width:1.00585043px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="M 873.86831,518.5992 L 1022.8142,518.5992"
-       id="path5039" />
-    <flowRoot
-       xml:space="preserve"
-       id="flowRoot5041"
-       transform="translate(795.7676,432.4642)"><flowRegion
-         id="flowRegion5043"><rect
-           id="rect5045"
-           width="143.44167"
-           height="26.263966"
-           x="81.822357"
-           y="68.302429" /></flowRegion><flowPara
-         id="flowPara5047"
-         style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Bitstream Vera Sans">OggPlayDataHeader</flowPara></flowRoot>    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#0000eb;stroke-width:4.05406713;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       d="M 875.42063,584.54573 L 1023.8158,584.54573"
-       id="path5049" />
-    <rect
-       style="fill:none;stroke:#0000eb;stroke-width:3.70655012;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="rect6797"
-       width="132.851"
-       height="173.37828"
-       x="48.440605"
-       y="470.71619" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#0000eb;stroke-width:0.95336521px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="M 46.441157,495.83279 L 180.24859,495.83279"
-       id="path6799" />
-    <flowRoot
-       xml:space="preserve"
-       id="flowRoot6801"
-       transform="translate(-29.50781,406.5059)"><flowRegion
-         id="flowRegion6803"><rect
-           id="rect6805"
-           width="143.44167"
-           height="26.263966"
-           x="81.822357"
-           y="68.302429" /></flowRegion><flowPara
-         id="flowPara6807"
-         style="font-size:16px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Bitstream Vera Sans">OggPlayReader</flowPara></flowRoot>    <flowRoot
-       xml:space="preserve"
-       id="flowRoot6809"
-       transform="translate(23.20313,8.446939e-7)"><flowRegion
-         id="flowRegion6811"><rect
-           id="rect6813"
-           width="131.21643"
-           height="167.7565"
-           x="26.263966"
-           y="171.33798" /></flowRegion><flowPara
-         id="flowPara6815">  callback</flowPara><flowPara
-         id="flowPara6817">  decode_data</flowPara><flowPara
-         id="flowPara6819">     (x num_tracks)</flowPara><flowPara
-         id="flowPara13345">  input_name</flowPara><flowPara
-         id="flowPara13347">  oggz</flowPara><flowPara
-         id="flowPara13349">  all_tracks_initialised</flowPara><flowPara
-         id="flowPara13351">  callback_period</flowPara><flowPara
-         id="flowPara13353">  reader</flowPara><flowPara
-         id="flowPara13357">  target</flowPara><flowPara
-         id="flowPara13359">  active_tracks</flowPara></flowRoot>    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.60477889;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       d="M 55,284.09448 L 20,284.09448 L 20,470.80483 L 40,470.80483"
-       id="path6823"
-       sodipodi:nodetypes="cccc" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow2Mend)"
-       d="M 140,194.09448 C 485,194.09448 500,194.09448 500,194.09448 C 500,226.89638 500,226.89638 500,226.89638"
-       id="path7880"
-       sodipodi:nodetypes="ccc" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker-mid:none;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       d="M 360,194.09448 C 360,226.89638 360,226.89638 360,226.89638"
-       id="path7882" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       d="M 220.15952,195.09448 C 220.15952,227.89638 220.15952,227.89638 220.15952,227.89638"
-       id="path7884" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#0000eb;stroke-width:3.84945679;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       d="M 503.17449,534.56863 L 636.96847,534.56863"
-       id="path11378" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#0000eb;stroke-width:3.84945679;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       d="M 360.53105,535.04654 L 494.32503,535.04654"
-       id="path11380" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#0000eb;stroke-width:3.84945679;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       d="M 221.24976,535.04654 L 355.04374,535.04654"
-       id="path11382" />
-    <flowRoot
-       xml:space="preserve"
-       id="flowRoot11384"
-       transform="translate(146.6697,469.3641)"><flowRegion
-         id="flowRegion11386"><rect
-           id="rect11388"
-           width="143.44167"
-           height="26.263966"
-           x="81.822357"
-           y="68.302429" /></flowRegion><flowPara
-         id="flowPara11390"
-         style="font-size:10px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Bitstream Vera Sans">OggPlayVorbisDecode</flowPara></flowRoot>    <flowRoot
-       xml:space="preserve"
-       id="flowRoot11394"
-       transform="translate(424.0365,469.1304)"><flowRegion
-         id="flowRegion11396"><rect
-           id="rect11398"
-           width="143.44167"
-           height="26.263966"
-           x="81.822357"
-           y="68.302429" /></flowRegion><flowPara
-         id="flowPara11400"
-         style="font-size:10px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Bitstream Vera Sans">OggPlayTheoraDecode</flowPara></flowRoot>    <flowRoot
-       xml:space="preserve"
-       id="flowRoot11402"
-       transform="translate(282.6895,468.6563)"><flowRegion
-         id="flowRegion11404"><rect
-           id="rect11406"
-           width="143.44167"
-           height="26.263966"
-           x="81.822357"
-           y="68.302429" /></flowRegion><flowPara
-         id="flowPara11408"
-         style="font-size:10px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Bitstream Vera Sans">OggPlayCMMLDecode</flowPara></flowRoot>    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#0000eb;stroke-width:0.95581901;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       d="M 222.46749,554.56863 L 356.96847,554.56863"
-       id="path11410" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#0000eb;stroke-width:0.95581901;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       d="M 361.27087,554.56863 L 495.77185,554.56863"
-       id="path11412" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#0000eb;stroke-width:0.95581901;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       d="M 501.84592,554.09072 L 636.3469,554.09072"
-       id="path11414" />
-    <flowRoot
-       xml:space="preserve"
-       id="flowRoot11416"
-       transform="translate(581.3408,315.9095)"><flowRegion
-         id="flowRegion11418"><rect
-           id="rect11420"
-           width="143.44167"
-           height="26.263966"
-           x="81.822357"
-           y="68.302429" /></flowRegion><flowPara
-         id="flowPara11422"
-         style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Bitstream Vera Sans">OggPlayVideoData</flowPara></flowRoot>    <flowRoot
-       xml:space="preserve"
-       id="flowRoot11424"
-       transform="translate(804.4014,518.9154)"><flowRegion
-         id="flowRegion11426"><rect
-           id="rect11428"
-           width="143.44167"
-           height="26.263966"
-           x="81.822357"
-           y="68.302429" /></flowRegion><flowPara
-         id="flowPara11430"
-         style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Bitstream Vera Sans">OggPlayVideoData</flowPara></flowRoot>    <flowRoot
-       xml:space="preserve"
-       id="flowRoot11432"
-       transform="translate(746.3408,316.4583)"><flowRegion
-         id="flowRegion11434"><rect
-           id="rect11436"
-           width="143.44167"
-           height="26.263966"
-           x="81.822357"
-           y="68.302429" /></flowRegion><flowPara
-         id="flowPara11438"
-         style="font-size:14px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Bitstream Vera Sans">OggPlayVideoData</flowPara></flowRoot>    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#0000eb;stroke-width:1.00585043px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="M 653.57758,403.59156 L 802.52345,403.59156"
-       id="path11440" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#0000eb;stroke-width:1.00585043px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="M 818.57758,403.59156 L 967.52345,403.59156"
-       id="path11442" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#0000eb;stroke-width:1.00585043px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="M 876.0541,605.04864 L 1025,605.04864"
-       id="path11444" />
-    <flowRoot
-       xml:space="preserve"
-       id="flowRoot11462"><flowRegion
-         id="flowRegion11464"><rect
-           id="rect11466"
-           width="131.94403"
-           height="210.3783"
-           x="503.05597"
-           y="258.71619" /></flowRegion><flowPara
-         id="flowPara11468">  data_list</flowPara><flowPara
-         id="flowPara11470">  end_of_data_list</flowPara><flowPara
-         id="flowPara13387">  serialno</flowPara><flowPara
-         id="flowPara13389">  content_type</flowPara><flowPara
-         id="flowPara13391">  content_type_name</flowPara><flowPara
-         id="flowPara13393">  decoded_type</flowPara><flowPara
-         id="flowPara13395">  granuleperiod</flowPara><flowPara
-         id="flowPara13397">  last_granulepos</flowPara><flowPara
-         id="flowPara13399">  current_loc</flowPara><flowPara
-         id="flowPara13401">  active</flowPara><flowPara
-         id="flowPara13403">  final_granulepos</flowPara><flowPara
-         id="flowPara13405">  player</flowPara><flowPara
-         id="flowPara13409" /></flowRoot>    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.90831089;stroke-linecap:butt;stroke-linejoin:miter;marker-mid:none;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       d="M 562.15388,266.65685 C 650.37177,266.19895 650.37177,266.19895 650.37177,266.19895 C 650.37177,289.09448 650.37177,289.09448 650.37177,289.09448"
-       id="path11472" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.90740395;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       d="M 689.97491,326.46261 C 804.53828,326.46261 804.53828,326.46261 804.53828,326.46261 C 804.04631,296.29938 804.04631,296.29938 804.04631,296.29938 L 806.85945,296.29938"
-       id="path12358" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.95991576;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       d="M 855,326.90148 C 975.03968,326.3964 975.03968,326.90148 975.03968,326.90148 C 975.03968,481.9599 975.03968,481.9599 975.03968,481.9599 C 879.00794,481.45482 879.00794,481.45482 879.00794,481.45482 C 879.00794,489.09448 879.00794,489.09448 879.00794,489.09448"
-       id="path13249" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow2Mend)"
-       d="M 610,281.44462 C 642.45702,281.44462 642.45702,281.44462 642.45702,281.44462 C 645,494.09448 645,494.09448 645,494.09448 C 867.72104,494.09448 867.72104,494.09448 867.72104,494.09448"
-       id="path13251" />
-    <rect
-       style="fill:none;stroke:#000000;stroke-width:1.50055182;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="rect13253"
-       width="127.00734"
-       height="84.437088"
-       x="221.25027"
-       y="446.30847" />
-    <flowRoot
-       xml:space="preserve"
-       id="flowRoot13255"
-       transform="translate(-423.1306,430.2768)"
-       style="font-size:10px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Bitstream Vera Sans"><flowRegion
-         id="flowRegion13257"><rect
-           id="rect13259"
-           width="123.84341"
-           height="24.517221"
-           x="650.64935"
-           y="18.636171"
-           style="font-size:10px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Bitstream Vera Sans" /></flowRegion><flowPara
-         id="flowPara13261">OggPlayCallbackInfo</flowPara></flowRoot>    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="M 221.25028,466.74555 C 346.25028,466.74555 346.25028,466.74555 346.25028,466.74555"
-       id="path13263" />
-    <rect
-       style="fill:none;stroke:#000000;stroke-width:1.50055182;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="rect13265"
-       width="127.00734"
-       height="84.437088"
-       x="363.22656"
-       y="446.30847" />
-    <flowRoot
-       xml:space="preserve"
-       id="flowRoot13267"
-       transform="translate(-281.1543,430.2768)"
-       style="font-size:10px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Bitstream Vera Sans"><flowRegion
-         id="flowRegion13269"><rect
-           id="rect13271"
-           width="123.84341"
-           height="24.517221"
-           x="650.64935"
-           y="18.636171"
-           style="font-size:10px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Bitstream Vera Sans" /></flowRegion><flowPara
-         id="flowPara13273">OggPlayCallbackInfo</flowPara></flowRoot>    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="M 363.22654,466.74555 C 488.22654,466.74555 488.22654,466.74555 488.22654,466.74555"
-       id="path13275" />
-    <rect
-       style="fill:none;stroke:#000000;stroke-width:1.50055182;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="rect13277"
-       width="127.00734"
-       height="84.437088"
-       x="503.22659"
-       y="445.37024" />
-    <flowRoot
-       xml:space="preserve"
-       id="flowRoot13279"
-       transform="translate(-141.1543,429.3386)"
-       style="font-size:10px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Bitstream Vera Sans"><flowRegion
-         id="flowRegion13281"><rect
-           id="rect13283"
-           width="123.84341"
-           height="24.517221"
-           x="650.64935"
-           y="18.636171"
-           style="font-size:10px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Bitstream Vera Sans" /></flowRegion><flowPara
-         id="flowPara13285">OggPlayCallbackInfo</flowPara></flowRoot>    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="M 503.22658,465.80732 C 628.22658,465.80732 628.22658,465.80732 628.22658,465.80732"
-       id="path13287" />
-    <flowRoot
-       xml:space="preserve"
-       id="flowRoot13289"
-       transform="translate(-378.7497,426.6511)"><flowRegion
-         id="flowRegion13291"><rect
-           id="rect13293"
-           width="126.3354"
-           height="129.5257"
-           x="600.41217"
-           y="40.316956" /></flowRegion><flowPara
-         id="flowPara13295">  data_type</flowPara><flowPara
-         id="flowPara13297">  required_records</flowPara><flowPara
-         id="flowPara13299">  available_records</flowPara><flowPara
-         id="flowPara13301">  records</flowPara></flowRoot>    <flowRoot
-       xml:space="preserve"
-       id="flowRoot13303"
-       transform="translate(-236.0102,427.5893)"><flowRegion
-         id="flowRegion13305"><rect
-           id="rect13307"
-           width="126.3354"
-           height="129.5257"
-           x="600.41217"
-           y="40.316956" /></flowRegion><flowPara
-         id="flowPara13309">  data_type</flowPara><flowPara
-         id="flowPara13311">  required_records</flowPara><flowPara
-         id="flowPara13313">  available_records</flowPara><flowPara
-         id="flowPara13315">  records</flowPara></flowRoot>    <flowRoot
-       xml:space="preserve"
-       id="flowRoot13317"
-       transform="translate(-96.6797,426.6511)"><flowRegion
-         id="flowRegion13319"><rect
-           id="rect13321"
-           width="126.3354"
-           height="129.5257"
-           x="600.41217"
-           y="40.316956" /></flowRegion><flowPara
-         id="flowPara13323">  data_type</flowPara><flowPara
-         id="flowPara13325">  required_records</flowPara><flowPara
-         id="flowPara13327">  available_records</flowPara><flowPara
-         id="flowPara13329">  records</flowPara></flowRoot>    <rect
-       style="fill:none;stroke:#000000;stroke-width:2;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="rect13333"
-       width="150"
-       height="50"
-       x="649"
-       y="520.09448" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="M 699,520.09448 L 699,570.09448"
-       id="path13335" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="M 749,520.09448 L 749,570.09448"
-       id="path13337" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       d="M 675,545.44574 L 652,304.09448"
-       id="path13339"
-       sodipodi:nodetypes="cc" />
-    <path
-       sodipodi:type="spiral"
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:url(#radialGradient13373);stroke-width:3.75;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="path13363"
-       sodipodi:cx="255"
-       sodipodi:cy="34.094482"
-       sodipodi:expansion="1"
-       sodipodi:revolution="3"
-       sodipodi:radius="36.812374"
-       sodipodi:argument="-16.704403"
-       sodipodi:t0="0"
-       d="M 255,34.094482 C 253.99723,35.644037 252.4165,33.507268 252.42454,32.427818 C 252.44632,29.502575 255.92689,28.287425 258.33333,28.94356 C 262.63788,30.117231 264.20665,35.2236 262.72638,39.094475 C 260.55403,44.775141 253.63472,46.741718 248.33334,44.396327 C 241.26744,41.27029 238.89533,32.481485 242.12269,25.761161 C 246.184,17.30432 256.8661,14.523797 264.99999,18.641715 C 274.85121,23.629067 278.04165,36.216702 273.02823,45.761132 C 267.12008,57.008913 252.61979,60.610207 241.66669,54.698172 C 229.02089,47.872493 225.00813,31.455034 231.82085,19.094504 C 239.56189,5.0496838 257.89957,0.62502386 271.66664,8.3398708 C 287.11122,16.994763 291.9481,37.254811 283.33007,52.42779 C 273.76243,69.272672 251.57843,74.522019 235.00003,65.000016"
-       transform="translate(90.55634,40.75461)" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.95961189;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       d="M 55.177571,179.13953 C 22.500948,179.13953 22.500948,179.13953 22.500948,179.13953 L 22.500948,179.13953 L 22.500948,74.094482 L 306.50346,74.094482"
-       id="path13375" />
-    <flowRoot
-       xml:space="preserve"
-       id="flowRoot13413"
-       transform="translate(-280.0432,77.3934)"><flowRegion
-         id="flowRegion13415"><rect
-           id="rect13417"
-           width="127.47601"
-           height="128.72577"
-           x="503.65518"
-           y="462.89743" /></flowRegion><flowPara
-         id="flowPara13427" /><flowPara
-         id="flowPara13553">  sound_handle</flowPara><flowPara
-         id="flowPara13555">  sound_info</flowPara></flowRoot>    <flowRoot
-       xml:space="preserve"
-       id="flowRoot13429"
-       transform="translate(-140.916,0.918649)"><flowRegion
-         id="flowRegion13431"><rect
-           id="rect13433"
-           width="131.94403"
-           height="210.3783"
-           x="503.05597"
-           y="258.71619" /></flowRegion><flowPara
-         id="flowPara13435">  data_list</flowPara><flowPara
-         id="flowPara13437">  end_of_data_list</flowPara><flowPara
-         id="flowPara13439">  serialno</flowPara><flowPara
-         id="flowPara13441">  content_type</flowPara><flowPara
-         id="flowPara13443">  content_type_name</flowPara><flowPara
-         id="flowPara13445">  decoded_type</flowPara><flowPara
-         id="flowPara13447">  granuleperiod</flowPara><flowPara
-         id="flowPara13449">  last_granulepos</flowPara><flowPara
-         id="flowPara13451">  current_loc</flowPara><flowPara
-         id="flowPara13453">  active</flowPara><flowPara
-         id="flowPara13455">  final_granulepos</flowPara><flowPara
-         id="flowPara13457">  player</flowPara><flowPara
-         id="flowPara13459" /></flowRoot>    <flowRoot
-       xml:space="preserve"
-       id="flowRoot13461"
-       transform="translate(-142.4064,91.39341)"><flowRegion
-         id="flowRegion13463"><rect
-           id="rect13465"
-           width="127.47601"
-           height="128.72577"
-           x="503.65518"
-           y="462.89743" /></flowRegion><flowPara
-         id="flowPara13475">  ?</flowPara></flowRoot>    <flowRoot
-       xml:space="preserve"
-       id="flowRoot13491"
-       transform="translate(-283.0625,0.918649)"><flowRegion
-         id="flowRegion13493"><rect
-           id="rect13495"
-           width="131.94403"
-           height="210.3783"
-           x="503.05597"
-           y="258.71619" /></flowRegion><flowPara
-         id="flowPara13497">  data_list</flowPara><flowPara
-         id="flowPara13499">  end_of_data_list</flowPara><flowPara
-         id="flowPara13501">  serialno</flowPara><flowPara
-         id="flowPara13503">  content_type</flowPara><flowPara
-         id="flowPara13505">  content_type_name</flowPara><flowPara
-         id="flowPara13507">  decoded_type</flowPara><flowPara
-         id="flowPara13509">  granuleperiod</flowPara><flowPara
-         id="flowPara13511">  last_granulepos</flowPara><flowPara
-         id="flowPara13513">  current_loc</flowPara><flowPara
-         id="flowPara13515">  active</flowPara><flowPara
-         id="flowPara13517">  final_granulepos</flowPara><flowPara
-         id="flowPara13519">  player</flowPara><flowPara
-         id="flowPara13521" /></flowRoot>    <flowRoot
-       xml:space="preserve"
-       id="flowRoot13523"
-       transform="translate(0.249765,75.99624)"><flowRegion
-         id="flowRegion13525"><rect
-           id="rect13527"
-           width="127.47601"
-           height="128.72577"
-           x="503.65518"
-           y="462.89743" /></flowRegion><flowPara
-         id="flowPara13529" /><flowPara
-         id="flowPara13531">  video_handle</flowPara><flowPara
-         id="flowPara13533">  video_info</flowPara><flowPara
-         id="flowPara13535">  video_comment</flowPara><flowPara
-         id="flowPara13537">  remaining_header...</flowPara></flowRoot>    <flowRoot
-       xml:space="preserve"
-       id="flowRoot13573"
-       transform="translate(164.9375,0.490914)"><flowRegion
-         id="flowRegion13575"><rect
-           id="rect13577"
-           width="148.42574"
-           height="60.274231"
-           x="654.07379"
-           y="318.82025" /></flowRegion><flowPara
-         id="flowPara13579">  next</flowPara><flowPara
-         id="flowPara13581">  lock</flowPara><flowPara
-         id="flowPara13583">  presentation_time</flowPara><flowPara
-         id="flowPara13585">  samples_in_record</flowPara><flowPara
-         id="flowPara13587" /></flowRoot>    <flowRoot
-       xml:space="preserve"
-       id="flowRoot13589"
-       transform="translate(223.1758,200.4909)"><flowRegion
-         id="flowRegion13591"><rect
-           id="rect13593"
-           width="148.42574"
-           height="60.274231"
-           x="654.07379"
-           y="318.82025" /></flowRegion><flowPara
-         id="flowPara13595">  next</flowPara><flowPara
-         id="flowPara13597">  lock</flowPara><flowPara
-         id="flowPara13599">  presentation_time</flowPara><flowPara
-         id="flowPara13601">  samples_in_record</flowPara><flowPara
-         id="flowPara13603" /></flowRoot>    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow2Mend)"
-       d="M 725,544.09448 L 813,304.09448"
-       id="path1598"
-       sodipodi:nodetypes="cc" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow2Mend)"
-       d="M 775,544.09448 L 868,499.09448"
-       id="path1600"
-       sodipodi:nodetypes="cc" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow2Mend)"
-       d="M 558,519.09448 L 640,519.09448"
-       id="path2475"
-       sodipodi:nodetypes="cc" />
-    <rect
-       style="fill:none;stroke:#000000;stroke-width:2;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="rect3530"
-       width="150"
-       height="50"
-       x="225"
-       y="645.09448" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="M 275,645.09448 L 275,695.09448"
-       id="path3532" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="M 325,645.09448 L 325,695.09448"
-       id="path3534" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none;marker-mid:none;marker-end:url(#Arrow2Mend)"
-       d="M 248,669.09448 L 210,574.09448 L 210,467.09448 L 218,454.09448"
-       id="path3536"
-       sodipodi:nodetypes="cccc" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none;marker-mid:none;marker-end:url(#Arrow2Mend)"
-       d="M 300,669.09448 L 342,592.09448 L 362,454.09448"
-       id="path3538"
-       sodipodi:nodetypes="ccc" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none;marker-mid:none;marker-end:url(#Arrow2Mend)"
-       d="M 352,667.09448 L 462,581.09448 L 500,454.09448"
-       id="path3540"
-       sodipodi:nodetypes="ccc" />
-    <path
-       style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow2Mend)"
-       d="M 225,644.09448 L 200,644.09448 L 200,94.094482 L 310,94.094482"
-       id="path4415"
-       sodipodi:nodetypes="cccc" />
-  </g>
-</svg>

Deleted: firefox_plugin/trunk/doc/notes.txt
===================================================================
--- firefox_plugin/trunk/doc/notes.txt	2008-02-13 11:25:34 UTC (rev 3452)
+++ firefox_plugin/trunk/doc/notes.txt	2008-02-13 11:30:03 UTC (rev 3453)
@@ -1,41 +0,0 @@
-Tracks with Premature Endings
------------------------------
-
-It is possible for some tracks to end at a timeval which is less than the ending
-of other tracks:
-
-
-|--------------------*---------------------*|
-                     audio ends            video ends
-
-
-There is a 'target' member in the OggPlay struct which indicates the current
-timeval target.  On each OggPlayDataCallback to the user there is a guarantee
-that all active tracks have data decoded up to the 'target' timeval.  Before 
-oggplay_start_decoding is called, the 'target' timeval is 0.  After a seek, the
-'target' is the seeked-to position.  Hence target can be used at these points
-to determine where in the file the decoder is.
-
-During decoding (inside the oggplay_start_decoding loop), target is instead 
-used to indicate where we need to decode to before calling back to the user
-again.  Hence target can not be used for "where we are" inside the loop.
-
-When decoding begins, we do not know where each stream ends.  Furthermore,
-if we seek to an arbitrary location within the file, we may well seek beyond
-the end of a stream.  Hence initially the final_granulepos member of each 
-track's data structure is set to -1.
-
-When the user attempts to set a track active, then we can check the 
-final_granulepos value and target (this can only happen before 
-oggplay_start_decoding and in callbacks, so it is safe) and throw an error if
-we *know* that the timeval is out of range for the track.  When we are parsing
-the stream and we get an e_o_s page in a track, then we can set the track to
-not active and record the final_granulepos value.  If the user retrieves data
-they get data up to the end of the track.  If they try to set the track as 
-active then this will fail with an error.
-
-A bigger problem is if the user seeks to a region of the file after a track end
-without having already found the end of that track.  In this situation, there
-is no simple way to determine presence or absence of the track - how will we
-cope with finding the start?
-



More information about the commits mailing list