int segment_time_metadata;
} ConcatContext;
-static int concat_probe(AVProbeData *probe)
+static int concat_probe(const AVProbeData *probe)
{
return memcmp(probe->buf, "ffconcat version 1.0", 20) ?
0 : AVPROBE_SCORE_MAX;
ConcatFile *file;
char *url = NULL;
const char *proto;
- size_t url_len, proto_len;
+ const char *ptr;
+ size_t url_len;
int ret;
if (cat->safe > 0 && !safe_filename(filename)) {
}
proto = avio_find_protocol_name(filename);
- proto_len = proto ? strlen(proto) : 0;
- if (proto && !memcmp(filename, proto, proto_len) &&
- (filename[proto_len] == ':' || filename[proto_len] == ',')) {
+ if (proto && av_strstart(filename, proto, &ptr) &&
+ (*ptr == ':' || *ptr == ',')) {
url = filename;
filename = NULL;
} else {
if (st->codecpar->codec_id || !source_st->codecpar->codec_id) {
if (st->codecpar->extradata_size < source_st->codecpar->extradata_size) {
- if (st->codecpar->extradata) {
- av_freep(&st->codecpar->extradata);
- st->codecpar->extradata_size = 0;
- }
ret = ff_alloc_extradata(st->codecpar,
source_st->codecpar->extradata_size);
if (ret < 0)
if (ret < 0) {
av_log(avf, AV_LOG_ERROR, "h264_mp4toannexb filter "
"failed to send input packet\n");
- av_packet_unref(pkt);
return ret;
}
if (ret < 0)
return ret;
if ((ret = match_streams(avf)) < 0) {
- av_packet_unref(pkt);
return ret;
}
if (packet_after_outpoint(cat, pkt)) {
}
break;
}
- if ((ret = filter_packet(avf, cs, pkt)))
+ if ((ret = filter_packet(avf, cs, pkt)) < 0)
return ret;
st = cat->avf->streams[pkt->stream_index];
av_ts2str(pkt->pts), av_ts2timestr(pkt->pts, &st->time_base),
av_ts2str(pkt->dts), av_ts2timestr(pkt->dts, &st->time_base));
if (cat->cur_file->metadata) {
- uint8_t* metadata;
- int metadata_len;
+ buffer_size_t metadata_len;
char* packed_metadata = av_packet_pack_dictionary(cat->cur_file->metadata, &metadata_len);
if (!packed_metadata)
return AVERROR(ENOMEM);
- if (!(metadata = av_packet_new_side_data(pkt, AV_PKT_DATA_STRINGS_METADATA, metadata_len))) {
+ ret = av_packet_add_side_data(pkt, AV_PKT_DATA_STRINGS_METADATA,
+ packed_metadata, metadata_len);
+ if (ret < 0) {
av_freep(&packed_metadata);
- return AVERROR(ENOMEM);
+ return ret;
}
- memcpy(metadata, packed_metadata, metadata_len);
- av_freep(&packed_metadata);
}
if (cat->cur_file->duration == AV_NOPTS_VALUE && st->cur_dts != AV_NOPTS_VALUE) {
}
pkt->stream_index = cs->out_stream_index;
- return ret;
+ return 0;
}
static void rescale_interval(AVRational tb_in, AVRational tb_out,