|
|
|
@@ -102,10 +102,10 @@ fail: |
|
|
|
static int parse_bsfs(void *log_ctx, const char *bsfs_spec, |
|
|
|
AVBitStreamFilterContext **bsfs) |
|
|
|
{ |
|
|
|
char *bsf_name, *buf, *saveptr; |
|
|
|
char *bsf_name, *buf, *dup, *saveptr; |
|
|
|
int ret = 0; |
|
|
|
|
|
|
|
if (!(buf = av_strdup(bsfs_spec))) |
|
|
|
if (!(dup = buf = av_strdup(bsfs_spec))) |
|
|
|
return AVERROR(ENOMEM); |
|
|
|
|
|
|
|
while (bsf_name = av_strtok(buf, ",", &saveptr)) { |
|
|
|
@@ -128,7 +128,7 @@ static int parse_bsfs(void *log_ctx, const char *bsfs_spec, |
|
|
|
} |
|
|
|
|
|
|
|
end: |
|
|
|
av_free(buf); |
|
|
|
av_free(dup); |
|
|
|
return ret; |
|
|
|
} |
|
|
|
|
|
|
|
@@ -280,6 +280,7 @@ static int open_slave(AVFormatContext *avf, char *slave, TeeSlave *tee_slave) |
|
|
|
|
|
|
|
end: |
|
|
|
av_free(format); |
|
|
|
av_free(select); |
|
|
|
av_dict_free(&options); |
|
|
|
return ret; |
|
|
|
} |
|
|
|
@@ -302,6 +303,7 @@ static void close_slaves(AVFormatContext *avf) |
|
|
|
} |
|
|
|
} |
|
|
|
av_freep(&tee->slaves[i].stream_map); |
|
|
|
av_freep(&tee->slaves[i].bsfs); |
|
|
|
|
|
|
|
avio_close(avf2->pb); |
|
|
|
avf2->pb = NULL; |
|
|
|
|