33 #define MAX_PAGE_SIZE 65025
119 return (granule>>oggstream->
kfgshift) +
120 (granule & ((1<<oggstream->
kfgshift)-1));
129 int64_t next_granule, cur_granule;
138 return next_granule > cur_granule;
175 uint8_t *
data,
unsigned size, int64_t granule)
178 int total_segments = size / 255 + 1;
191 for (i = 0; i < total_segments; ) {
202 len =
FFMIN(size, segments*255);
204 memcpy(page->
data+page->
size, p, len);
210 if (i == total_segments)
243 bytestream_put_byte(&p, 1);
266 bytestream_put_byte(&p, 0x7F);
268 bytestream_put_byte(&p, 1);
269 bytestream_put_byte(&p, 0);
270 bytestream_put_be16(&p, 1);
272 bytestream_put_byte(&p, 0x00);
273 bytestream_put_be24(&p, 34);
281 bytestream_put_byte(&p, 0x84);
282 bytestream_put_be24(&p, oggstream->
header_len[1] - 4);
287 #define SPEEX_HEADER_SIZE 80
323 unsigned serial_num = i;
347 for (j = 0; j < i; j++) {
395 bytestream_put_byte(&p, header_type);
419 for (i = 1; i < 3; i++) {
465 if (pframe_count >= (1<<oggstream->
kfgshift)) {
510 .mime_type =
"application/ogg",
511 .extensions =
"ogg,ogv,spx",