diff options
author | Stefano Sabatini <stefasab@gmail.com> | 2012-12-13 14:37:50 +0400 |
---|---|---|
committer | Stefano Sabatini <stefasab@gmail.com> | 2012-12-14 00:05:07 +0400 |
commit | d93d03a4921e039ac697942e9f392d1607c7e269 (patch) | |
tree | 438235e66ac2ac958912e31b524cb695c53fdc50 /libavformat/segment.c | |
parent | 616e6ffac694831148b7ec815c709564c01d62e5 (diff) |
lavf/segment: add function set_segment_filename()
Factorize.
Diffstat (limited to 'libavformat/segment.c')
-rw-r--r-- | libavformat/segment.c | 30 |
1 files changed, 18 insertions, 12 deletions
diff --git a/libavformat/segment.c b/libavformat/segment.c index 53feec4ac6..dddf0ef229 100644 --- a/libavformat/segment.c +++ b/libavformat/segment.c @@ -130,6 +130,21 @@ static int segment_mux_init(AVFormatContext *s) return 0; } +static int set_segment_filename(AVFormatContext *s) +{ + SegmentContext *seg = s->priv_data; + AVFormatContext *oc = seg->avf; + + if (seg->segment_idx_wrap) + seg->segment_idx %= seg->segment_idx_wrap; + if (av_get_frame_filename(oc->filename, sizeof(oc->filename), + s->filename, seg->segment_idx) < 0) { + av_log(oc, AV_LOG_ERROR, "Invalid segment filename template '%s'\n", s->filename); + return AVERROR(EINVAL); + } + return 0; +} + static int segment_start(AVFormatContext *s, int write_header) { SegmentContext *seg = s->priv_data; @@ -145,14 +160,8 @@ static int segment_start(AVFormatContext *s, int write_header) } seg->segment_idx++; - if (seg->segment_idx_wrap) - seg->segment_idx %= seg->segment_idx_wrap; - - if (av_get_frame_filename(oc->filename, sizeof(oc->filename), - s->filename, seg->segment_idx) < 0) { - av_log(oc, AV_LOG_ERROR, "Invalid segment filename template '%s'\n", s->filename); - return AVERROR(EINVAL); - } + if ((err = set_segment_filename(s)) < 0) + return err; seg->segment_count++; if ((err = avio_open2(&oc->pb, oc->filename, AVIO_FLAG_WRITE, @@ -413,11 +422,8 @@ static int seg_write_header(AVFormatContext *s) goto fail; oc = seg->avf; - if (av_get_frame_filename(oc->filename, sizeof(oc->filename), - s->filename, seg->segment_idx) < 0) { - ret = AVERROR(EINVAL); + if ((ret = set_segment_filename(s)) < 0) goto fail; - } seg->segment_count++; if (seg->write_header_trailer) { |