oc->oformat = seg->oformat;
oc->interrupt_callback = s->interrupt_callback;
+ oc->opaque = s->opaque;
+ oc->io_close = s->io_close;
+ oc->io_open = s->io_open;
for (i = 0; i < s->nb_streams; i++) {
AVStream *st;
int i, ret = 0;
char buf[1024];
- if ((ret = avio_open2(&seg->pb, seg->list, AVIO_FLAG_WRITE,
- &s->interrupt_callback, NULL)) < 0)
+ if ((ret = s->io_open(s, &seg->pb, seg->list, AVIO_FLAG_WRITE, NULL)) < 0)
goto fail;
avio_printf(seg->pb, "#EXTM3U\n");
if (last)
avio_printf(seg->pb, "#EXT-X-ENDLIST\n");
fail:
- avio_closep(&seg->pb);
+ ff_format_io_close(s, &seg->pb);
+
return ret;
}
s->filename, c->number++) < 0)
return AVERROR(EINVAL);
- if ((err = avio_open2(&oc->pb, oc->filename, AVIO_FLAG_WRITE,
- &s->interrupt_callback, NULL)) < 0)
+ if ((err = s->io_open(s, &oc->pb, oc->filename, AVIO_FLAG_WRITE, NULL)) < 0)
return err;
if (oc->oformat->priv_class && oc->priv_data)
av_write_frame(oc, NULL); /* Flush any buffered data (fragmented mp4) */
if (write_trailer)
av_write_trailer(oc);
- avio_close(oc->pb);
+ ff_format_io_close(oc, &oc->pb);
return ret;
}
static void seg_free_context(SegmentContext *seg)
{
- avio_closep(&seg->pb);
+ ff_format_io_close(seg->avf, &seg->pb);
avformat_free_context(seg->avf);
seg->avf = NULL;
}
seg->individual_header_trailer = 0;
if (seg->list && seg->list_type != LIST_HLS)
- if ((ret = avio_open2(&seg->pb, seg->list, AVIO_FLAG_WRITE,
- &s->interrupt_callback, NULL)) < 0)
+ if ((ret = s->io_open(s, &seg->pb, seg->list, AVIO_FLAG_WRITE, NULL)) < 0)
goto fail;
for (i = 0; i < s->nb_streams; i++)
}
if (seg->write_header_trailer) {
- if ((ret = avio_open2(&oc->pb, oc->filename, AVIO_FLAG_WRITE,
- &s->interrupt_callback, NULL)) < 0)
+ if ((ret = s->io_open(s, &oc->pb, oc->filename, AVIO_FLAG_WRITE, NULL)) < 0)
goto fail;
} else {
if ((ret = open_null_ctx(&oc->pb)) < 0)
}
if ((ret = avformat_write_header(oc, NULL)) < 0) {
- avio_close(oc->pb);
+ ff_format_io_close(oc, &oc->pb);
goto fail;
}
if (!seg->write_header_trailer) {
close_null_ctx(oc->pb);
- if ((ret = avio_open2(&oc->pb, oc->filename, AVIO_FLAG_WRITE,
- &s->interrupt_callback, NULL)) < 0)
+ if ((ret = s->io_open(s, &oc->pb, oc->filename, AVIO_FLAG_WRITE, NULL)) < 0)
goto fail;
}
avio_printf(seg->pb, "%s\n", oc->filename);
avio_flush(seg->pb);
if (seg->size && !(seg->number % seg->size)) {
- avio_closep(&seg->pb);
- if ((ret = avio_open2(&seg->pb, seg->list, AVIO_FLAG_WRITE,
- &s->interrupt_callback, NULL)) < 0)
+ ff_format_io_close(s, &seg->pb);
+ if ((ret = s->io_open(s, &seg->pb, seg->list,
+ AVIO_FLAG_WRITE, NULL)) < 0)
goto fail;
}
}
}
fail:
- avio_close(seg->pb);
+ ff_format_io_close(s, &seg->pb);
avformat_free_context(oc);
return ret;
}