34 #define MAX_PAGE_SIZE 65025
72 #define OFFSET(x) offsetof(OGGContext, x)
73 #define PARAM AV_OPT_FLAG_ENCODING_PARAM
76 {
"pagesize",
"preferred page size in bytes",
139 return (granule>>oggstream->
kfgshift) +
140 (granule & ((1<<oggstream->
kfgshift)-1));
149 int64_t next_granule, cur_granule;
158 return next_granule > cur_granule;
200 int total_segments = size / 255 + 1;
213 for (i = 0; i < total_segments; ) {
224 len =
FFMIN(size, segments*255);
226 memcpy(page->
data+page->
size, p, len);
232 if (i == total_segments)
266 bytestream_put_byte(&p, 1);
289 bytestream_put_byte(&p, 0x7F);
291 bytestream_put_byte(&p, 1);
292 bytestream_put_byte(&p, 0);
293 bytestream_put_be16(&p, 1);
295 bytestream_put_byte(&p, 0x00);
296 bytestream_put_be24(&p, 34);
304 bytestream_put_byte(&p, 0x84);
305 bytestream_put_be24(&p, oggstream->
header_len[1] - 4);
310 #define SPEEX_HEADER_SIZE 80
339 #define OPUS_HEADER_SIZE 19
375 unsigned serial_num = i;
404 for (j = 0; j < i; j++) {
461 bytestream_put_byte(&p, header_type);
485 for (i = 1; i < 3; i++) {
531 if (pframe_count >= (1<<oggstream->
kfgshift)) {
539 granule = pkt->pts + pkt->duration;
547 oggstream->last_granule = granule;
579 .mime_type =
"application/ogg",
580 .extensions =
"ogg,ogv,spx,opus",
587 .priv_class = &ogg_muxer_class,