Lines Matching refs:page

63     unsigned page_count; ///< number of page buffered
64 OGGPage page; ///< current page
70 OGGPage page;
77 int pref_size; ///< preferred page size (0 => fill all segments)
78 int64_t pref_duration; ///< preferred page duration (0 => fill all segments)
88 { "oggpagesize", "Set preferred Ogg page size.",
90 { "pagesize", "preferred page size in bytes (deprecated)",
92 { "page_duration", "preferred page duration, in microseconds",
104 static void ogg_write_page(AVFormatContext *s, OGGPage *page, int extra_flags)
106 OGGStreamContext *oggstream = s->streams[page->stream_index]->priv_data;
113 bytestream_put_byte(&ptr, page->flags | extra_flags);
114 bytestream_put_le64(&ptr, page->granule);
119 bytestream_put_byte(&ptr, page->segments_count);
120 bytestream_put_buffer(&ptr, page->segments, page->segments_count);
123 crc = av_crc(crc_table, crc, page->data, page->size);
127 avio_write(s->pb, page->data, page->size);
149 static int ogg_compare_granule(AVFormatContext *s, OGGPage *next, OGGPage *page)
152 AVStream *st = s->streams[page->stream_index];
155 if (next->granule == -1 || page->granule == -1)
160 cur_granule = av_rescale_q(ogg_granule_to_timestamp(st->priv_data, page->granule),
167 oggstream->page.granule = -1;
168 oggstream->page.flags = 0;
169 oggstream->page.segments_count = 0;
170 oggstream->page.size = 0;
182 l->page = oggstream->page;
184 oggstream->page.start_granule = ogg_granule_to_timestamp(oggstream, oggstream->page.granule);
189 if (ogg_compare_granule(s, &(*p)->page, &l->page))
209 // Handles VFR by flushing page because this frame needs to have a timestamp
218 if (oggstream->page.granule != -1)
223 // avoid a continued page
224 if (!header && oggstream->page.size > 0 &&
225 MAX_PAGE_SIZE - oggstream->page.size < size) {
230 OGGPage *page = &oggstream->page;
232 segments = FFMIN(total_segments - i, 255 - page->segments_count);
234 if (i && !page->segments_count)
235 page->flags |= 1; // continued packet
237 memset(page->segments+page->segments_count, 255, segments - 1);
238 page->segments_count += segments - 1;
241 page->segments[page->segments_count++] = len - (segments-1)*255;
242 memcpy(page->data+page->size, p, len);
246 page->size += len;
249 page->granule = granule;
252 AVStream *st = s->streams[page->stream_index];
254 int64_t start = av_rescale_q(page->start_granule, st->time_base,
256 int64_t next = av_rescale_q(ogg_granule_to_timestamp(oggstream, page->granule),
259 if (page->segments_count == 255) {
262 if ((ogg->pref_size > 0 && page->size >= ogg->pref_size) ||
270 if (flush && oggstream->page.granule != -1)
459 s->streams[p->page.stream_index]->priv_data;
462 ogg_write_page(s, &p->page,
511 oggstream->page.stream_index = i;
613 oggstream->page.flags |= 2; // bos
627 oggstream->page.start_granule = AV_NOPTS_VALUE;
672 if (oggstream->page.start_granule == AV_NOPTS_VALUE)
673 oggstream->page.start_granule = pkt->pts;
695 if (oggstream->page.segments_count)
707 /* flush current page if needed */
711 if (oggstream->page.size > 0)