OggIssues: Difference between revisions
Jump to navigation
Jump to search
(Add text from Shane's FOMS presentation verbatim) |
(formatting) |
||
Line 1: | Line 1: | ||
Seeking and Editing Problems | == Seeking and Editing Problems == | ||
jagged edges | * jagged edges | ||
wide variance in location of cotemporal data | * wide variance in location of cotemporal data | ||
impossible to reconstruct all granulepos values around holes | * impossible to reconstruct all granulepos values around holes | ||
granulepos / timeval mapping inconsistencies | * granulepos / timeval mapping inconsistencies | ||
poorly sorted streams are rife | * poorly sorted streams are rife | ||
impossible to efficiently seek with noncontinuous data | * impossible to efficiently seek with noncontinuous data | ||
Other Niggles | == Other Niggles == | ||
end-time ordering | * end-time ordering | ||
except when we have non-continuous data | * except when we have non-continuous data | ||
inefficient lacing values for video | * inefficient lacing values for video | ||
ad-hoc granulepos retrofitting for video, CMML | * ad-hoc granulepos retrofitting for video, CMML | ||
seeking is hard | * seeking is hard | ||
pages, and libogg's behaviour when creating them | * pages, and libogg's behaviour when creating them | ||
i don't know the answers | == i don't know the answers == | ||
We need to design a successor to Ogg | * We need to design a successor to Ogg | ||
It should be called (Ogg2|Ogg3|Ogg++|OggNG|Ogh|Foo|Dumplings) | * It should be called (Ogg2|Ogg3|Ogg++|OggNG|Ogh|Foo|Dumplings) | ||
The design should be done from desired capabilities and desired properties | * The design should be done from desired capabilities and desired properties | ||
These capabilities and properties should come from AV experts, web-page designers, system administrators, and users | * These capabilities and properties should come from AV experts, web-page designers, system administrators, and users | ||
Desired Capabilities | == Desired Capabilities == | ||
Simple seeking | * Simple seeking | ||
Cleanly cuttable | * Cleanly cuttable | ||
Robust to errors | * Robust to errors | ||
Composable | * Composable | ||
Supports arbitrary stream types | * Supports arbitrary stream types | ||
Low bit cost | * Low bit cost | ||
Streamable | * Streamable | ||
Easy to chunk | * Easy to chunk | ||
Low decode cost | * Low decode cost | ||
Supports multiple streams of each type | * Supports multiple streams of each type | ||
Untied We Stand | == Untied We Stand == | ||
Can cotemporal data be colocated? | * Can cotemporal data be colocated? | ||
streams & bundles | * streams & bundles | ||
great for cutting | * great for cutting | ||
OK for demultiplexing | * OK for demultiplexing | ||
“should” cut down on bit overhead | * “should” cut down on bit overhead | ||
hugely simplifies seeking | * hugely simplifies seeking | ||
Gimme a Hint | == Gimme a Hint == | ||
Can we add seeking hints to the stream? | * Can we add seeking hints to the stream? | ||
these can be tiny and infrequent | * these can be tiny and infrequent | ||
awesome for standalone files | * awesome for standalone files | ||
what do we do when streaming? | * what do we do when streaming? | ||
hint correction packets? | * hint correction packets? | ||
is this turtles all the way down? | * is this turtles all the way down? | ||
Would an up-front index be better? | * Would an up-front index be better? | ||
Cleaner Abstractions | == Cleaner Abstractions == | ||
We should not need to know the type of a stream if we are not decoding the stream | * We should not need to know the type of a stream if we are not decoding the stream | ||
granulepos interpretations | * granulepos interpretations | ||
headers | * headers | ||
seeking | * seeking | ||
cutting | * cutting | ||
Skeleton goes some way towards fixing this | * Skeleton goes some way towards fixing this | ||
What use are... | == What use are... == | ||
serial numbers? | * serial numbers? | ||
packet numbers? | * packet numbers? | ||
pages? | * pages? | ||
checksums? | * checksums? | ||
Devil's Advocate | == Devil's Advocate == | ||
These problems aren't unsurmountable | * These problems aren't unsurmountable | ||
but we're only finding some of them now, and we've been working around others for years | * but we're only finding some of them now, and we've been working around others for years | ||
Nobody will adopt another container format | * Nobody will adopt another container format | ||
Nobody cares about <insert hated feature here> anyway | * Nobody cares about <insert hated feature here> anyway |
Revision as of 15:48, 29 January 2008
Seeking and Editing Problems
- jagged edges
- wide variance in location of cotemporal data
- impossible to reconstruct all granulepos values around holes
- granulepos / timeval mapping inconsistencies
- poorly sorted streams are rife
- impossible to efficiently seek with noncontinuous data
Other Niggles
- end-time ordering
- except when we have non-continuous data
- inefficient lacing values for video
- ad-hoc granulepos retrofitting for video, CMML
- seeking is hard
- pages, and libogg's behaviour when creating them
i don't know the answers
- We need to design a successor to Ogg
- It should be called (Ogg2|Ogg3|Ogg++|OggNG|Ogh|Foo|Dumplings)
- The design should be done from desired capabilities and desired properties
- These capabilities and properties should come from AV experts, web-page designers, system administrators, and users
Desired Capabilities
- Simple seeking
- Cleanly cuttable
- Robust to errors
- Composable
- Supports arbitrary stream types
- Low bit cost
- Streamable
- Easy to chunk
- Low decode cost
- Supports multiple streams of each type
Untied We Stand
- Can cotemporal data be colocated?
- streams & bundles
- great for cutting
- OK for demultiplexing
- “should” cut down on bit overhead
- hugely simplifies seeking
Gimme a Hint
- Can we add seeking hints to the stream?
- these can be tiny and infrequent
- awesome for standalone files
- what do we do when streaming?
- hint correction packets?
- is this turtles all the way down?
- Would an up-front index be better?
Cleaner Abstractions
- We should not need to know the type of a stream if we are not decoding the stream
- granulepos interpretations
- headers
- seeking
- cutting
- Skeleton goes some way towards fixing this
What use are...
- serial numbers?
- packet numbers?
- pages?
- checksums?
Devil's Advocate
- These problems aren't unsurmountable
- but we're only finding some of them now, and we've been working around others for years
- Nobody will adopt another container format
- Nobody cares about <insert hated feature here> anyway