summaryrefslogtreecommitdiff
path: root/libavformat/hdsenc.c
diff options
context:
space:
mode:
Diffstat (limited to 'libavformat/hdsenc.c')
-rw-r--r--libavformat/hdsenc.c33
1 files changed, 11 insertions, 22 deletions
diff --git a/libavformat/hdsenc.c b/libavformat/hdsenc.c
index 46f0026bce..353a45f6df 100644
--- a/libavformat/hdsenc.c
+++ b/libavformat/hdsenc.c
@@ -317,21 +317,18 @@ static int hds_write_header(AVFormatContext *s)
ff_const59 AVOutputFormat *oformat;
if (mkdir(s->url, 0777) == -1 && errno != EEXIST) {
- ret = AVERROR(errno);
av_log(s, AV_LOG_ERROR , "Failed to create directory %s\n", s->url);
- goto fail;
+ return AVERROR(errno);
}
oformat = av_guess_format("flv", NULL, NULL);
if (!oformat) {
- ret = AVERROR_MUXER_NOT_FOUND;
- goto fail;
+ return AVERROR_MUXER_NOT_FOUND;
}
c->streams = av_mallocz_array(s->nb_streams, sizeof(*c->streams));
if (!c->streams) {
- ret = AVERROR(ENOMEM);
- goto fail;
+ return AVERROR(ENOMEM);
}
for (i = 0; i < s->nb_streams; i++) {
@@ -341,8 +338,7 @@ static int hds_write_header(AVFormatContext *s)
if (!st->codecpar->bit_rate) {
av_log(s, AV_LOG_ERROR, "No bit rate set for stream %d\n", i);
- ret = AVERROR(EINVAL);
- goto fail;
+ return AVERROR(EINVAL);
}
if (st->codecpar->codec_type == AVMEDIA_TYPE_VIDEO) {
if (os->has_video) {
@@ -358,8 +354,7 @@ static int hds_write_header(AVFormatContext *s)
os->has_audio = 1;
} else {
av_log(s, AV_LOG_ERROR, "Unsupported stream type in stream %d\n", i);
- ret = AVERROR(EINVAL);
- goto fail;
+ return AVERROR(EINVAL);
}
os->bitrate += s->streams[i]->codecpar->bit_rate;
@@ -367,8 +362,7 @@ static int hds_write_header(AVFormatContext *s)
os->first_stream = i;
ctx = avformat_alloc_context();
if (!ctx) {
- ret = AVERROR(ENOMEM);
- goto fail;
+ return AVERROR(ENOMEM);
}
os->ctx = ctx;
ctx->oformat = oformat;
@@ -379,8 +373,7 @@ static int hds_write_header(AVFormatContext *s)
AVIO_FLAG_WRITE, os,
NULL, hds_write, NULL);
if (!ctx->pb) {
- ret = AVERROR(ENOMEM);
- goto fail;
+ return AVERROR(ENOMEM);
}
} else {
ctx = os->ctx;
@@ -388,8 +381,7 @@ static int hds_write_header(AVFormatContext *s)
s->streams[i]->id = c->nb_streams;
if (!(st = avformat_new_stream(ctx, NULL))) {
- ret = AVERROR(ENOMEM);
- goto fail;
+ return AVERROR(ENOMEM);
}
avcodec_parameters_copy(st->codecpar, s->streams[i]->codecpar);
st->codecpar->codec_tag = 0;
@@ -403,7 +395,7 @@ static int hds_write_header(AVFormatContext *s)
OutputStream *os = &c->streams[i];
int j;
if ((ret = avformat_write_header(os->ctx, NULL)) < 0) {
- goto fail;
+ return ret;
}
os->ctx_inited = 1;
avio_flush(os->ctx->pb);
@@ -414,7 +406,7 @@ static int hds_write_header(AVFormatContext *s)
"%s/stream%d_temp", s->url, i);
ret = init_file(s, os, 0);
if (ret < 0)
- goto fail;
+ return ret;
if (!os->has_video && c->min_frag_duration <= 0) {
av_log(s, AV_LOG_WARNING,
@@ -425,9 +417,6 @@ static int hds_write_header(AVFormatContext *s)
}
ret = write_manifest(s, 0);
-fail:
- if (ret)
- hds_free(s);
return ret;
}
@@ -557,7 +546,6 @@ static int hds_write_trailer(AVFormatContext *s)
rmdir(s->url);
}
- hds_free(s);
return 0;
}
@@ -588,5 +576,6 @@ AVOutputFormat ff_hds_muxer = {
.write_header = hds_write_header,
.write_packet = hds_write_packet,
.write_trailer = hds_write_trailer,
+ .deinit = hds_free,
.priv_class = &hds_class,
};