os = ogg->streams + idx;
os->page_pos = avio_tell(bc) - 27;
- if (os->psize > 0)
- ogg_new_buf(ogg, idx);
+ if (os->psize > 0) {
+ ret = ogg_new_buf(ogg, idx);
+ if (ret < 0)
+ return ret;
+ }
ret = avio_read(bc, os->segments, nsegs);
if (ret < nsegs)
int complete = 0;
int segp = 0, psize = 0;
- av_dlog(s, "ogg_packet: curidx=%i\n", ogg->curidx);
+ av_log(s, AV_LOG_TRACE, "ogg_packet: curidx=%i\n", ogg->curidx);
do {
idx = ogg->curidx;
os = ogg->streams + idx;
- av_dlog(s, "ogg_packet: idx=%d pstart=%d psize=%d segp=%d nsegs=%d\n",
+ av_log(s, AV_LOG_TRACE, "ogg_packet: idx=%d pstart=%d psize=%d segp=%d nsegs=%d\n",
idx, os->pstart, os->psize, os->segp, os->nsegs);
if (!os->codec) {
}
} while (!complete);
- av_dlog(s, "ogg_packet: idx %i, frame size %i, start %i\n",
+ av_log(s, AV_LOG_TRACE, "ogg_packet: idx %i, frame size %i, start %i\n",
idx, os->psize, os->pstart);
if (os->granule == -1)
os->lastpts = s->streams[i]->start_time =
ogg_gptopts(s, i, os->start_granule, NULL);
}
- av_dlog(s, "found headers\n");
+ av_log(s, AV_LOG_TRACE, "found headers\n");
return 0;
}
static int ogg_get_length(AVFormatContext *s)
{
struct ogg *ogg = s->priv_data;
- int i;
+ int i, ret;
int64_t size, end;
if (!s->pb->seekable)
return 0;
end = size > MAX_PAGE_SIZE ? size - MAX_PAGE_SIZE : 0;
- ogg_save(s);
+ ret = ogg_save(s);
+ if (ret < 0)
+ return ret;
avio_seek(s->pb, end, SEEK_SET);
while (!ogg_read_page(s, &i)) {
ogg->streams[i].codec = NULL;
//linear granulepos seek from end
- ogg_get_length(s);
+ ret = ogg_get_length(s);
+ if (ret < 0) {
+ ogg_read_close(s);
+ return ret;
+ }
//fill the extradata in the per codec callbacks
return 0;