|
|
@ -392,6 +392,28 @@ static int ogg_build_opus_headers(AVCodecContext *avctx, |
|
|
|
return 0; |
|
|
|
return 0; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static void ogg_write_pages(AVFormatContext *s, int flush) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
OGGContext *ogg = s->priv_data; |
|
|
|
|
|
|
|
OGGPageList *next, *p; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!ogg->page_list) |
|
|
|
|
|
|
|
return; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for (p = ogg->page_list; p; ) { |
|
|
|
|
|
|
|
OGGStreamContext *oggstream = |
|
|
|
|
|
|
|
s->streams[p->page.stream_index]->priv_data; |
|
|
|
|
|
|
|
if (oggstream->page_count < 2 && !flush) |
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
ogg_write_page(s, &p->page, |
|
|
|
|
|
|
|
flush && oggstream->page_count == 1 ? 4 : 0); // eos
|
|
|
|
|
|
|
|
next = p->next; |
|
|
|
|
|
|
|
av_freep(&p); |
|
|
|
|
|
|
|
p = next; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
ogg->page_list = p; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
static int ogg_write_header(AVFormatContext *s) |
|
|
|
static int ogg_write_header(AVFormatContext *s) |
|
|
|
{ |
|
|
|
{ |
|
|
|
OGGContext *ogg = s->priv_data; |
|
|
|
OGGContext *ogg = s->priv_data; |
|
|
@ -531,28 +553,6 @@ static int ogg_write_header(AVFormatContext *s) |
|
|
|
return 0; |
|
|
|
return 0; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
static void ogg_write_pages(AVFormatContext *s, int flush) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
OGGContext *ogg = s->priv_data; |
|
|
|
|
|
|
|
OGGPageList *next, *p; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!ogg->page_list) |
|
|
|
|
|
|
|
return; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for (p = ogg->page_list; p; ) { |
|
|
|
|
|
|
|
OGGStreamContext *oggstream = |
|
|
|
|
|
|
|
s->streams[p->page.stream_index]->priv_data; |
|
|
|
|
|
|
|
if (oggstream->page_count < 2 && !flush) |
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
ogg_write_page(s, &p->page, |
|
|
|
|
|
|
|
flush && oggstream->page_count == 1 ? 4 : 0); // eos
|
|
|
|
|
|
|
|
next = p->next; |
|
|
|
|
|
|
|
av_freep(&p); |
|
|
|
|
|
|
|
p = next; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
ogg->page_list = p; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static int ogg_write_packet(AVFormatContext *s, AVPacket *pkt) |
|
|
|
static int ogg_write_packet(AVFormatContext *s, AVPacket *pkt) |
|
|
|
{ |
|
|
|
{ |
|
|
|
AVStream *st = s->streams[pkt->stream_index]; |
|
|
|
AVStream *st = s->streams[pkt->stream_index]; |
|
|
|