Lines Matching defs:oggstream

106     OGGStreamContext *oggstream = s->streams[page->stream_index]->priv_data;
115 bytestream_put_le32(&ptr, oggstream->serial_num);
116 bytestream_put_le32(&ptr, oggstream->page_counter++);
129 oggstream->page_count--;
132 static int ogg_key_granule(OGGStreamContext *oggstream, int64_t granule)
134 return (oggstream->kfgshift && !(granule & ((1<<oggstream->kfgshift)-1))) ||
135 (oggstream->isvp8 && !((granule >> 3) & 0x07ffffff));
138 static int64_t ogg_granule_to_timestamp(OGGStreamContext *oggstream, int64_t granule)
140 if (oggstream->kfgshift)
141 return (granule>>oggstream->kfgshift) +
142 (granule & ((1<<oggstream->kfgshift)-1));
143 else if (oggstream->isvp8)
165 static int ogg_reset_cur_page(OGGStreamContext *oggstream)
167 oggstream->page.granule = -1;
168 oggstream->page.flags = 0;
169 oggstream->page.segments_count = 0;
170 oggstream->page.size = 0;
174 static int ogg_buffer_page(AVFormatContext *s, OGGStreamContext *oggstream)
182 l->page = oggstream->page;
184 oggstream->page.start_granule = ogg_granule_to_timestamp(oggstream, oggstream->page.granule);
185 oggstream->page_count++;
186 ogg_reset_cur_page(oggstream);
203 OGGStreamContext *oggstream = st->priv_data;
215 (ogg_granule_to_timestamp(oggstream, granule) >
216 ogg_granule_to_timestamp(oggstream, oggstream->last_granule) + 1 ||
217 ogg_key_granule(oggstream, granule))) {
218 if (oggstream->page.granule != -1)
219 ogg_buffer_page(s, oggstream);
224 if (!header && oggstream->page.size > 0 &&
225 MAX_PAGE_SIZE - oggstream->page.size < size) {
226 ogg_buffer_page(s, oggstream);
230 OGGPage *page = &oggstream->page;
256 int64_t next = av_rescale_q(ogg_granule_to_timestamp(oggstream, page->granule),
260 ogg_buffer_page(s, oggstream);
264 ogg_buffer_page(s, oggstream);
270 if (flush && oggstream->page.granule != -1)
271 ogg_buffer_page(s, oggstream);
304 OGGStreamContext *oggstream, int bitexact,
313 oggstream->header_len[0] = 51;
314 oggstream->header[0] = av_mallocz(51); // per ogg flac specs
315 p = oggstream->header[0];
329 p = ogg_write_vorbiscomment(4, bitexact, &oggstream->header_len[1], m, 0, NULL, 0);
332 oggstream->header[1] = p;
334 bytestream_put_be24(&p, oggstream->header_len[1] - 4);
342 OGGStreamContext *oggstream, int bitexact,
354 oggstream->header[0] = p;
355 oggstream->header_len[0] = SPEEX_HEADER_SIZE;
357 AV_WL32(&oggstream->header[0][68], 0); // set extra_headers to 0
360 p = ogg_write_vorbiscomment(0, bitexact, &oggstream->header_len[1], m, 0, NULL, 0);
363 oggstream->header[1] = p;
371 OGGStreamContext *oggstream, int bitexact,
384 oggstream->header[0] = p;
385 oggstream->header_len[0] = par->extradata_size;
389 p = ogg_write_vorbiscomment(8, bitexact, &oggstream->header_len[1], m, 0, chapters, nb_chapters);
392 oggstream->header[1] = p;
401 OGGStreamContext *oggstream, int bitexact)
410 oggstream->header[0] = p;
411 oggstream->header_len[0] = VP8_HEADER_SIZE;
434 p = ogg_write_vorbiscomment(7, bitexact, &oggstream->header_len[1], &st->metadata, 0, NULL, 0);
437 oggstream->header[1] = p;
444 oggstream->isvp8 = 1;
458 OGGStreamContext *oggstream =
460 if (oggstream->page_count < 2 && !flush)
463 flush == 1 && oggstream->page_count == 1 ? 4 : 0); // eos
474 OGGStreamContext *oggstream = NULL;
507 oggstream = av_mallocz(sizeof(*oggstream));
508 if (!oggstream)
511 oggstream->page.stream_index = i;
522 oggstream->serial_num = serial_num;
526 st->priv_data = oggstream;
528 int err = ogg_build_flac_headers(st->codecpar, oggstream,
536 int err = ogg_build_speex_headers(st->codecpar, oggstream,
544 int err = ogg_build_opus_headers(st->codecpar, oggstream,
552 int err = ogg_build_vp8_headers(s, st, oggstream,
566 (const uint8_t**)oggstream->header, oggstream->header_len) < 0) {
568 oggstream->header[1] = NULL;
573 &oggstream->header_len[1], &st->metadata,
575 oggstream->header[1] = p;
583 int den = AV_RB32(oggstream->header[0] + 22), num = AV_RB32(oggstream->header[0] + 26);
593 oggstream->kfgshift = ((oggstream->header[0][40]&3)<<3)|(oggstream->header[0][41]>>5);
594 oggstream->vrev = oggstream->header[0][9];
596 oggstream->kfgshift, oggstream->vrev);
606 OGGStreamContext *oggstream = NULL;
610 oggstream = s->streams[j]->priv_data;
611 ogg_buffer_data(s, s->streams[j], oggstream->header[0],
612 oggstream->header_len[0], 0, 1);
613 oggstream->page.flags |= 2; // bos
614 ogg_buffer_page(s, oggstream);
618 oggstream = st->priv_data;
620 if (oggstream->header_len[i])
621 ogg_buffer_data(s, st, oggstream->header[i],
622 oggstream->header_len[i], 0, 1);
624 ogg_buffer_page(s, oggstream);
627 oggstream->page.start_granule = AV_NOPTS_VALUE;
637 OGGStreamContext *oggstream = st->priv_data;
642 int64_t pts = oggstream->vrev < 1 ? pkt->pts : pkt->pts + pkt->duration;
645 oggstream->last_kf_pts = pts;
646 pframe_count = pts - oggstream->last_kf_pts;
648 if (pframe_count >= (1<<oggstream->kfgshift)) {
649 oggstream->last_kf_pts += pframe_count;
652 granule = (oggstream->last_kf_pts<<oggstream->kfgshift) | pframe_count;
664 invcnt = (oggstream->last_granule >> 30) & 3;
666 dist = (pkt->flags & AV_PKT_FLAG_KEY) ? 0 : ((oggstream->last_granule >> 3) & 0x07ffffff) + 1;
672 if (oggstream->page.start_granule == AV_NOPTS_VALUE)
673 oggstream->page.start_granule = pkt->pts;
681 oggstream->last_granule = granule;
694 OGGStreamContext *oggstream = s->streams[i]->priv_data;
695 if (oggstream->page.segments_count)
696 ogg_buffer_page(s, oggstream);
709 OGGStreamContext *oggstream = s->streams[i]->priv_data;
711 if (oggstream->page.size > 0)
712 ogg_buffer_page(s, oggstream);
728 OGGStreamContext *oggstream = st->priv_data;
729 if (!oggstream)
735 av_freep(&oggstream->header[0]);
737 av_freep(&oggstream->header[1]);