mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-03-28 12:32:17 +02:00
avformat/tee: Refactor close_slaves function in tee muxer
Closing single slave operation is pulled out into separate function close_slave(TeeSlave*). Both close_slave and close_slaves function are moved before open_slave function. Reviewed-by: Nicolas George <george@nsup.org> Signed-off-by: Jan Sebechlebsky <sebechlebskyjan@gmail.com> Signed-off-by: Marton Balint <cus@passwd.hu>
This commit is contained in:
parent
949444348b
commit
2ea5ab6fc6
@ -135,6 +135,38 @@ end:
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void close_slave(TeeSlave *tee_slave)
|
||||||
|
{
|
||||||
|
AVFormatContext *avf;
|
||||||
|
unsigned i;
|
||||||
|
|
||||||
|
avf = tee_slave->avf;
|
||||||
|
for (i = 0; i < avf->nb_streams; ++i) {
|
||||||
|
AVBitStreamFilterContext *bsf_next, *bsf = tee_slave->bsfs[i];
|
||||||
|
while (bsf) {
|
||||||
|
bsf_next = bsf->next;
|
||||||
|
av_bitstream_filter_close(bsf);
|
||||||
|
bsf = bsf_next;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
av_freep(&tee_slave->stream_map);
|
||||||
|
av_freep(&tee_slave->bsfs);
|
||||||
|
|
||||||
|
ff_format_io_close(avf, &avf->pb);
|
||||||
|
avformat_free_context(avf);
|
||||||
|
tee_slave->avf = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void close_slaves(AVFormatContext *avf)
|
||||||
|
{
|
||||||
|
TeeContext *tee = avf->priv_data;
|
||||||
|
unsigned i;
|
||||||
|
|
||||||
|
for (i = 0; i < tee->nb_slaves; i++) {
|
||||||
|
close_slave(&tee->slaves[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static int open_slave(AVFormatContext *avf, char *slave, TeeSlave *tee_slave)
|
static int open_slave(AVFormatContext *avf, char *slave, TeeSlave *tee_slave)
|
||||||
{
|
{
|
||||||
int i, ret;
|
int i, ret;
|
||||||
@ -311,32 +343,6 @@ end:
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void close_slaves(AVFormatContext *avf)
|
|
||||||
{
|
|
||||||
TeeContext *tee = avf->priv_data;
|
|
||||||
AVFormatContext *avf2;
|
|
||||||
unsigned i, j;
|
|
||||||
|
|
||||||
for (i = 0; i < tee->nb_slaves; i++) {
|
|
||||||
avf2 = tee->slaves[i].avf;
|
|
||||||
|
|
||||||
for (j = 0; j < avf2->nb_streams; j++) {
|
|
||||||
AVBitStreamFilterContext *bsf_next, *bsf = tee->slaves[i].bsfs[j];
|
|
||||||
while (bsf) {
|
|
||||||
bsf_next = bsf->next;
|
|
||||||
av_bitstream_filter_close(bsf);
|
|
||||||
bsf = bsf_next;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
av_freep(&tee->slaves[i].stream_map);
|
|
||||||
av_freep(&tee->slaves[i].bsfs);
|
|
||||||
|
|
||||||
ff_format_io_close(avf2, &avf2->pb);
|
|
||||||
avformat_free_context(avf2);
|
|
||||||
tee->slaves[i].avf = NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void log_slave(TeeSlave *slave, void *log_ctx, int log_level)
|
static void log_slave(TeeSlave *slave, void *log_ctx, int log_level)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user