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:
Jan Sebechlebsky 2016-04-12 20:46:27 +03:00 committed by Marton Balint
parent 949444348b
commit 2ea5ab6fc6
1 changed files with 32 additions and 26 deletions

View File

@ -135,6 +135,38 @@ end:
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)
{
int i, ret;
@ -311,32 +343,6 @@ end:
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)
{
int i;