[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