AVOutputFormat ogg_muxer = {
"ogg",
- "Ogg Vorbis",
- "audio/x-vorbis",
+ "Ogg format",
+ "application/ogg",
"ogg",
sizeof (OggContext),
CODEC_ID_VORBIS,
ost->pos = url_ftell (&s->pb);;
ost->curidx = ogg->curidx;
ost->next = ogg->state;
+ ost->nstreams = ogg->nstreams;
memcpy(ost->streams, ogg->streams, ogg->nstreams * sizeof(*ogg->streams));
for (i = 0; i < ogg->nstreams; i++){
url_fseek (bc, ost->pos, SEEK_SET);
ogg->curidx = ost->curidx;
- memcpy (ogg->streams, ost->streams,
- ogg->nstreams * sizeof (*ogg->streams));
+ ogg->nstreams = ost->nstreams;
+ memcpy(ogg->streams, ost->streams,
+ ost->nstreams * sizeof(*ogg->streams));
}
av_free (ost);
url_fseek (&s->pb, end, SEEK_SET);
while (!ogg_read_page (s, &i)){
- if (ogg->streams[i].granule != -1 && ogg->streams[i].granule != 0)
+ if (ogg->streams[i].granule != -1 && ogg->streams[i].granule != 0 &&
+ ogg->streams[i].codec)
idx = i;
}
ogg->size = size;
ogg_restore (s, 0);
ogg_save (s);
- while (ogg_read_page (s, &i)) {
+ while (!ogg_read_page (s, &i)) {
if (i == idx && ogg->streams[i].granule != -1 && ogg->streams[i].granule != 0)
break;
}
pts = ogg_gptopts (s, i, ogg->streams[i].granule);
p = url_ftell (bc);
- if (ABS (pts - target_ts) * st->time_base.num < st->time_base.den)
+ if (FFABS (pts - target_ts) * st->time_base.num < st->time_base.den)
break;
if (pts > target_ts){
}
}
- if (ABS (pts - target_ts) * st->time_base.num < st->time_base.den){
+ if (FFABS (pts - target_ts) * st->time_base.num < st->time_base.den){
ogg_restore (s, 1);
ogg_reset (ogg);
}else{
static int ogg_probe(AVProbeData *p)
{
- if (p->buf_size < 6)
- return 0;
if (p->buf[0] == 'O' && p->buf[1] == 'g' &&
p->buf[2] == 'g' && p->buf[3] == 'S' &&
p->buf[4] == 0x0 && p->buf[5] <= 0x7 )