mirror of
https://gitee.com/openharmony/third_party_ffmpeg
synced 2024-11-27 21:20:41 +00:00
Merge commit '73871dc96ff78053b9dcd0eb259b7f5a5308ec87'
* commit '73871dc96ff78053b9dcd0eb259b7f5a5308ec87': segment: Use the public av_write_header/av_write_trailer functions Conflicts: libavformat/segment.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
commit
1bd22229d7
@ -110,31 +110,10 @@ static int segment_start(AVFormatContext *s)
|
|||||||
&s->interrupt_callback, NULL)) < 0)
|
&s->interrupt_callback, NULL)) < 0)
|
||||||
return err;
|
return err;
|
||||||
|
|
||||||
if (!oc->priv_data && oc->oformat->priv_data_size > 0) {
|
if ((err = avformat_write_header(oc, NULL)) < 0)
|
||||||
oc->priv_data = av_mallocz(oc->oformat->priv_data_size);
|
return err;
|
||||||
if (!oc->priv_data) {
|
|
||||||
avio_close(oc->pb);
|
|
||||||
return AVERROR(ENOMEM);
|
|
||||||
}
|
|
||||||
if (oc->oformat->priv_class) {
|
|
||||||
*(const AVClass**)oc->priv_data = oc->oformat->priv_class;
|
|
||||||
av_opt_set_defaults(oc->priv_data);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((err = oc->oformat->write_header(oc)) < 0) {
|
|
||||||
goto fail;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
fail:
|
|
||||||
av_log(oc, AV_LOG_ERROR, "Failure occurred when starting segment '%s'\n",
|
|
||||||
oc->filename);
|
|
||||||
avio_close(oc->pb);
|
|
||||||
av_freep(&oc->priv_data);
|
|
||||||
|
|
||||||
return err;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int segment_list_open(AVFormatContext *s)
|
static int segment_list_open(AVFormatContext *s)
|
||||||
@ -183,8 +162,7 @@ static int segment_end(AVFormatContext *s)
|
|||||||
AVFormatContext *oc = seg->avf;
|
AVFormatContext *oc = seg->avf;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
if (oc->oformat->write_trailer)
|
ret = av_write_trailer(oc);
|
||||||
ret = oc->oformat->write_trailer(oc);
|
|
||||||
|
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
av_log(s, AV_LOG_ERROR, "Failure occurred when ending segment '%s'\n",
|
av_log(s, AV_LOG_ERROR, "Failure occurred when ending segment '%s'\n",
|
||||||
@ -212,9 +190,6 @@ static int segment_end(AVFormatContext *s)
|
|||||||
|
|
||||||
end:
|
end:
|
||||||
avio_close(oc->pb);
|
avio_close(oc->pb);
|
||||||
if (oc->oformat->priv_class)
|
|
||||||
av_opt_free(oc->priv_data);
|
|
||||||
av_freep(&oc->priv_data);
|
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user