Commit 8fc80f3c authored by conrad's avatar conrad

add OggPCM2 support to liboggz (in oggz_auto, for seeking and timestamps)


git-svn-id: http://svn.annodex.net/liboggz/trunk@2061 8158c8cd-e7e1-0310-9fa4-c5954c97daef
parent 17b49bfa
......@@ -253,6 +253,31 @@ auto_flac (OGGZ * oggz, ogg_packet * op, long serialno, void * user_data)
return 1;
}
/**
* Recognizer for OggPCM2:
* http://wiki.xiph.org/index.php/OggPCM2
*/
static int
auto_oggpcm2 (OGGZ * oggz, ogg_packet * op, long serialno, void * user_data)
{
unsigned char * header = op->packet;
ogg_int64_t granule_rate;
if (op->bytes < 27) return 0;
if (strncmp ((char *)header, "PCM ", 8)) return 0;
if (!op->b_o_s) return 0;
granule_rate = (ogg_int64_t) INT32_BE_AT(&header[16]);
#ifdef DEBUG
printf ("Got OggPCM2 rate %d\n", (int)granule_rate);
#endif
oggz_set_granulerate (oggz, serialno, granule_rate, OGGZ_AUTO_MULT);
return 1;
}
static int
auto_cmml (OGGZ * oggz, ogg_packet * op, long serialno, void * user_data)
{
......@@ -355,6 +380,7 @@ static const OggzReadPacket auto_readers[] = {
auto_cmml,
auto_fishead,
auto_fisbone,
auto_oggpcm2,
NULL
};
......
......@@ -361,4 +361,33 @@ This was the Theora header for theora-alpha2:
*/
/**
* OggPCM Draft 2
*
* http://wiki.xiph.org/index.php/OggPCM2
*
* Default field type: BIG ENDIAN unsigned integer
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Identifier char[8]: 'PCM ' | 0-3
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | 4-7
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Version major | Version minor | 8-11
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| PCM Format | 12-15
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Sampling rate [Hz] | 16-19
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Number of significant bits | 20-23
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Num. channels | Max. num. frames per packet | Number of ... | 24-27
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| extra header packets | | 28-31
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
*/
#endif /* __OGGZ_AUTO_H__ */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment