OggTheora: Difference between revisions

From XiphWiki
Jump to navigation Jump to search
(2 cat's)
(→‎Ogg Theora: add info about first granulepos (answer from Ralph, on theora-dev))
 
Line 36: Line 36:
   | QUAL      | KFGSHIFT| PF| resv|                                40-43
   | QUAL      | KFGSHIFT| PF| resv|                                40-43
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
=== Granulepos ===
* What is the number of the first *real* keyframe/frame in a theora stream ? Is it 0 or 1 ?
The first frame of the stream (if it hasn't been trimmed) is a
keyframe. It is displayed between time = 0 and time = 1 * frame_rate.
The granulepos for that frame is based on the count of frames after
it's been shown, which is 1, not zero. The only Ogg pages in a theora
stream with a 0 granulepos should be the headers.


[[Category:Ogg Mappings]]
[[Category:Ogg Mappings]]
[[Category:Theora]]
[[Category:Theora]]

Latest revision as of 01:35, 12 November 2008

Ogg Theora

Default field type: BIG ENDIAN unsigned integer

Field names in full caps refer to fields described in the Theora I specification. Lowercase refers to theora_info struct members from libtheora.

This is the Theora header for theora-alpha3:

(VMAJ=3, VMIN=2, VREV=0)

  0                   1                   2                   3
  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1| Byte
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 | packtype      | Identifier char[6]: 'theora'                  | 0-3
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                                               | VMAJ          | 4-7
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 | VMIN          | VREV          | FMBW: width >> 4              | 8-11
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 | FMBH: height >> 4             | PICW: frame_width             | 12-15
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |               | PICH: frame_height                            | 16-19
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 | PICX: offset_x| PICY: offset_y| FRN: fps_numerator            | 20-23
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                               | FRD: fps_denominator          | 24-27
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                               | PARN: aspect_numerator        | 28-31
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |               | PARD: aspect_denominator                      | 32-35
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 | CS: colorspace| NOMBR: target_bitrate                         | 36-39
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 | QUAL      | KFGSHIFT| PF| resv|                                 40-43
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Granulepos

* What is the number of the first *real* keyframe/frame in a theora stream ? Is it 0 or 1 ?

The first frame of the stream (if it hasn't been trimmed) is a keyframe. It is displayed between time = 0 and time = 1 * frame_rate. The granulepos for that frame is based on the count of frames after it's been shown, which is 1, not zero. The only Ogg pages in a theora stream with a 0 granulepos should be the headers.