|
Packit |
a38265 |
|
|
Packit |
a38265 |
This is a loosely-categorized list of outstanding tasks and ideas for improving
|
|
Packit |
a38265 |
liboggz and the oggz tools. When implementing any of these, please include an
|
|
Packit |
a38265 |
update to this TODO file removing that task, in the same commit.
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
Library
|
|
Packit |
a38265 |
=======
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
Documentation
|
|
Packit |
a38265 |
-------------
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
Doxygen
|
|
Packit |
a38265 |
* add docs about auto gp functionality
|
|
Packit |
a38265 |
* review: is all functionality covered?
|
|
Packit |
a38265 |
* separate into intro/advanced topics
|
|
Packit |
a38265 |
* rewrite intro so that newer, simpler functionality is covered.
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
Seeking
|
|
Packit |
a38265 |
-------
|
|
Packit |
a38265 |
(See seek-rewrite branch for updates)
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
State
|
|
Packit |
a38265 |
* add seek_packet() function to return to a previous packet
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
Keyframe seeking
|
|
Packit |
a38265 |
* add seek_keyframe() (double-seek) function, using method from thread
|
|
Packit |
a38265 |
titled "ogg double seek algorithm" to a11y list 18/11/2008 including
|
|
Packit |
a38265 |
Ralph's corrections
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
* seek to a specific gp (not time)
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
* switch table to a vector
|
|
Packit |
a38265 |
* seek_units (SET, CUR, END)
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
oggz_get_duration()
|
|
Packit |
a38265 |
* add new public API call
|
|
Packit |
a38265 |
* subtract file start / presentation time from duration
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
Large file offsets
|
|
Packit |
a38265 |
* introduce seek_offset(), tell_offset() variants using oggz_off_t
|
|
Packit |
a38265 |
interface, and deprecate oggz_seek(), oggz_tell()
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
* s/units/time/ throughout (or more explicitly "milliseconds" or
|
|
Packit |
a38265 |
"nanoseconds")
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
New seek API calls:
|
|
Packit |
a38265 |
* next(), prev(), key(): seek to the next, prev or keyframe of this packet
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
Internals
|
|
Packit |
a38265 |
---------
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
* replace table implementation, allow NULL insertion
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
* use debug_printf() (eg. from libshcodecs) instead of #ifdef DEBUG
|
|
Packit |
a38265 |
throughout
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
Cleanups
|
|
Packit |
a38265 |
--------
|
|
Packit |
a38265 |
* dirac.c is included in tools/Makefile.am in LIBS. Instead, include it
|
|
Packit |
a38265 |
where it is actually used (by oggz_tools.c)
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
API
|
|
Packit |
a38265 |
---
|
|
Packit |
a38265 |
* rename all track-specific functions to oggz_track_*() ?
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
* add a OGGZ_SORT option (flag w/ OGGZ_WRITE) which queues pages like
|
|
Packit |
a38265 |
oggz-merge internally. Use this for oggz-merge (and libannodex ...)
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
* add low-level public functions to extract packets from a page?
|
|
Packit |
a38265 |
(like in fix-eos)
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
Tools
|
|
Packit |
a38265 |
=====
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
* verbose operation in oggz-sort, oggz-merge etc. should print to stderr,
|
|
Packit |
a38265 |
not clobber stdout
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
* use libexplain in tools, esp. oggz-chop logging errors.
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
oggz-addskel
|
|
Packit |
a38265 |
------------
|
|
Packit |
a38265 |
* new tool to add skeleton (though oggz-chop with no args does this)
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
oggz-chop
|
|
Packit |
a38265 |
---------
|
|
Packit |
a38265 |
(See chop-rewrite branch for updates)
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
Content-Duration
|
|
Packit |
a38265 |
* add Content-Duration header
|
|
Packit |
a38265 |
* use get_duration() in oggz-chop
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
Content-Length
|
|
Packit |
a38265 |
* if no subview, return length of file
|
|
Packit |
a38265 |
* if supports byte range redirect, cache control section and return its
|
|
Packit |
a38265 |
length. Print that, then sendfile() the control section.
|
|
Packit |
a38265 |
Else, build, write and send the whole subview.
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
* use seek_keyframe() to find chop point, from which to accumulate headers.
|
|
Packit |
a38265 |
Confirm same output as current version.
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
Error handling
|
|
Packit |
a38265 |
* handle failed parse of query: redirect to canonical file rather than
|
|
Packit |
a38265 |
producing output (for caching sanity), or reject the request?
|
|
Packit |
a38265 |
* strip unknown parameters and redirect to canonical form?
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
Range requests
|
|
Packit |
a38265 |
* handle Range requests
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
Skeleton
|
|
Packit |
a38265 |
* add message header fields for Chopped-By, Encoded-By etc.
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
Multiple time ranges
|
|
Packit |
a38265 |
* support multiple time ranges, convert to byte ranges
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
* Terminate when all tracks are at EOS, don't spin to end of file.
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
FastCGI support
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
sndfile()
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
TCP_CORK
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
oggz-comment
|
|
Packit |
a38265 |
------------
|
|
Packit |
a38265 |
* add a -p option to add padding, like rareware's oggenc2. This will need
|
|
Packit |
a38265 |
to track page boundaries accurately, ie. when inserting tags, see if it
|
|
Packit |
a38265 |
can be done inplace and do that if possible.
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
oggz-diff
|
|
Packit |
a38265 |
---------
|
|
Packit |
a38265 |
* is not using mkfifo
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
oggz-dump
|
|
Packit |
a38265 |
---------
|
|
Packit |
a38265 |
* add info to "oggz-dump --help" explaining how to interpret the info.
|
|
Packit |
a38265 |
Point to RFC3533 for details. Explain serialno, and explain granulepos for
|
|
Packit |
a38265 |
audio, Theora and Dirac -- ie. how to interpret keyframe.
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
oggz-optimize
|
|
Packit |
a38265 |
-------------
|
|
Packit |
a38265 |
* new tool: optimize the flushing on an ogg stream. Give limits on page
|
|
Packit |
a38265 |
duration or size.
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
oggz-merge
|
|
Packit |
a38265 |
----------
|
|
Packit |
a38265 |
* Accumulate gp -1 pages rather than writing them out as soon as they
|
|
Packit |
a38265 |
are available, so that single-packet continued pages are placed immediately
|
|
Packit |
a38265 |
prior to the page their contained packet finishes on.
|
|
Packit |
a38265 |
(reported by gmaxwell, 20100318)
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
* Dirac: take pt,dt into account. See
|
|
Packit |
a38265 |
http://lists.xiph.org/pipermail/ogg-dev/2008-November/001264.html
|
|
Packit |
a38265 |
* but first, reject Dirac streams
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
oggz-sort
|
|
Packit |
a38265 |
---------
|
|
Packit |
a38265 |
* Accumulate gp -1 pages rather than writing them out as soon as they
|
|
Packit |
a38265 |
are available, so that single-packet continued pages are placed immediately
|
|
Packit |
a38265 |
prior to the page their contained packet finishes on.
|
|
Packit |
a38265 |
(reported by gmaxwell, 20100318)
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
* Dirac: take pt,dt into account. See
|
|
Packit |
a38265 |
http://lists.xiph.org/pipermail/ogg-dev/2008-November/001264.html
|
|
Packit |
a38265 |
* but first, reject Dirac streams
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
oggz-validate
|
|
Packit |
a38265 |
-------------
|
|
Packit |
a38265 |
* Throw an error for pages with gp -1 that have a packet finishing on them
|
|
Packit |
a38265 |
(requested by derf 20100316, framing spec clearly states that "A special
|
|
Packit |
a38265 |
value of '-1' (in two's complement) indicates that no packets finish on this
|
|
Packit |
a38265 |
page."
|
|
Packit |
a38265 |
|
|
Packit |
a38265 |
* validate skeleton
|
|
Packit |
a38265 |
|