url = filename;
filename = NULL;
} else {
- url_len = strlen(avf->filename) + strlen(filename) + 16;
+ url_len = strlen(avf->url) + strlen(filename) + 16;
if (!(url = av_malloc(url_len)))
FAIL(AVERROR(ENOMEM));
- ff_make_absolute_url(url, url_len, avf->filename, filename);
+ ff_make_absolute_url(url, url_len, avf->url, filename);
av_freep(&filename);
}
AVIOContext *out;
char temp_filename[1024];
int ret, i;
- const char *proto = avio_find_protocol_name(s->filename);
+ const char *proto = avio_find_protocol_name(s->url);
int use_rename = proto && !strcmp(proto, "file");
static unsigned int warned_non_file = 0;
AVDictionaryEntry *title = av_dict_get(s->metadata, "title", NULL, 0);
if (!use_rename && !warned_non_file++)
av_log(s, AV_LOG_ERROR, "Cannot use rename on non file protocol, this may lead to races and temporary partial files\n");
- snprintf(temp_filename, sizeof(temp_filename), use_rename ? "%s.tmp" : "%s", s->filename);
+ snprintf(temp_filename, sizeof(temp_filename), use_rename ? "%s.tmp" : "%s", s->url);
set_http_options(&opts, c);
ret = dashenc_io_open(s, &c->mpd_out, temp_filename, &opts);
if (ret < 0) {
dashenc_io_close(s, &c->mpd_out, temp_filename);
if (use_rename) {
- if ((ret = avpriv_io_move(temp_filename, s->filename)) < 0)
+ if ((ret = avpriv_io_move(temp_filename, s->url)) < 0)
return ret;
}
if (c->single_file)
c->use_template = 0;
- av_strlcpy(c->dirname, s->filename, sizeof(c->dirname));
+ av_strlcpy(c->dirname, s->url, sizeof(c->dirname));
ptr = strrchr(c->dirname, '/');
if (ptr) {
av_strlcpy(basename, &ptr[1], sizeof(basename));
ptr[1] = '\0';
} else {
c->dirname[0] = '\0';
- av_strlcpy(basename, s->filename, sizeof(basename));
+ av_strlcpy(basename, s->url, sizeof(basename));
}
ptr = strrchr(basename, '.');
}
ret = write_manifest(s, 0);
if (!ret)
- av_log(s, AV_LOG_VERBOSE, "Manifest written to: %s\n", s->filename);
+ av_log(s, AV_LOG_VERBOSE, "Manifest written to: %s\n", s->url);
return ret;
}
DASHContext *c = s->priv_data;
int i, ret = 0;
- const char *proto = avio_find_protocol_name(s->filename);
+ const char *proto = avio_find_protocol_name(s->url);
int use_rename = proto && !strcmp(proto, "file");
int cur_flush_segment_index = 0;
snprintf(filename, sizeof(filename), "%s%s", c->dirname, os->initfile);
unlink(filename);
}
- unlink(s->filename);
+ unlink(s->url);
}
return 0;
if (ret < 0)
return ret;
- ret = ff_format_output_open(avf2, avf->filename, &format_options);
+ ret = ff_format_output_open(avf2, avf->url, &format_options);
if (ret < 0) {
- av_log(avf, AV_LOG_ERROR, "Error opening %s: %s\n", avf->filename,
+ av_log(avf, AV_LOG_ERROR, "Error opening %s: %s\n", avf->url,
av_err2str(ret));
goto end;
}
}
}
- oformat = av_guess_format(fifo->format, avf->filename, NULL);
+ oformat = av_guess_format(fifo->format, avf->url, NULL);
if (!oformat) {
ret = AVERROR_MUXER_NOT_FOUND;
return ret;
}
- ret = fifo_mux_init(avf, oformat, avf->filename);
+ ret = fifo_mux_init(avf, oformat, avf->url);
if (ret < 0)
return ret;
* writing, so we re-open the same output, but for reading. It also avoids
* a read/seek/write/seek back and forth. */
avio_flush(s->pb);
- ret = s->io_open(s, &read_pb, s->filename, AVIO_FLAG_READ, NULL);
+ ret = s->io_open(s, &read_pb, s->url, AVIO_FLAG_READ, NULL);
if (ret < 0) {
av_log(s, AV_LOG_ERROR, "Unable to re-open %s output file for "
- "the second pass (add_keyframe_index)\n", s->filename);
+ "the second pass (add_keyframe_index)\n", s->url);
goto end;
}
AVIOContext *pb = s->pb;
int64_t pos;
int len;
- const char *filename = strrchr(s->filename, '/');
+ const char *filename = strrchr(s->url, '/');
pos = avio_tell(pb);
avio_wb16(pb, 0); /* size */
if (filename)
filename++;
else
- filename = s->filename;
+ filename = s->url;
len = strlen(filename);
avio_w8(pb, MAT_NAME);
if (c->nb_streams > 0)
duration = c->streams[0].last_ts * av_q2d(s->streams[0]->time_base);
- snprintf(filename, sizeof(filename), "%s/index.f4m", s->filename);
- snprintf(temp_filename, sizeof(temp_filename), "%s/index.f4m.tmp", s->filename);
+ snprintf(filename, sizeof(filename), "%s/index.f4m", s->url);
+ snprintf(temp_filename, sizeof(temp_filename), "%s/index.f4m.tmp", s->url);
ret = s->io_open(s, &out, temp_filename, AVIO_FLAG_WRITE, NULL);
if (ret < 0) {
av_log(s, AV_LOG_ERROR, "Unable to open %s for writing\n", temp_filename);
}
avio_printf(out, "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n");
avio_printf(out, "<manifest xmlns=\"http://ns.adobe.com/f4m/1.0\">\n");
- avio_printf(out, "\t<id>%s</id>\n", av_basename(s->filename));
+ avio_printf(out, "\t<id>%s</id>\n", av_basename(s->url));
avio_printf(out, "\t<streamType>%s</streamType>\n",
final ? "recorded" : "live");
avio_printf(out, "\t<deliveryType>streaming</deliveryType>\n");
cur_media_time = os->fragments[os->nb_fragments - 1]->start_time;
snprintf(filename, sizeof(filename),
- "%s/stream%d.abst", s->filename, index);
+ "%s/stream%d.abst", s->url, index);
snprintf(temp_filename, sizeof(temp_filename),
- "%s/stream%d.abst.tmp", s->filename, index);
+ "%s/stream%d.abst.tmp", s->url, index);
ret = s->io_open(s, &out, temp_filename, AVIO_FLAG_WRITE, NULL);
if (ret < 0) {
av_log(s, AV_LOG_ERROR, "Unable to open %s for writing\n", temp_filename);
int ret = 0, i;
AVOutputFormat *oformat;
- if (mkdir(s->filename, 0777) == -1 && errno != EEXIST) {
+ if (mkdir(s->url, 0777) == -1 && errno != EEXIST) {
ret = AVERROR(errno);
- av_log(s, AV_LOG_ERROR , "Failed to create directory %s\n", s->filename);
+ av_log(s, AV_LOG_ERROR , "Failed to create directory %s\n", s->url);
goto fail;
}
s->streams[os->first_stream + j]->time_base = os->ctx->streams[j]->time_base;
snprintf(os->temp_filename, sizeof(os->temp_filename),
- "%s/stream%d_temp", s->filename, i);
+ "%s/stream%d_temp", s->url, i);
ret = init_file(s, os, 0);
if (ret < 0)
goto fail;
close_file(s, os);
snprintf(target_filename, sizeof(target_filename),
- "%s/stream%dSeg1-Frag%d", s->filename, index, os->fragment_index);
+ "%s/stream%dSeg1-Frag%d", s->url, index, os->fragment_index);
ret = ff_rename(os->temp_filename, target_filename, s);
if (ret < 0)
return ret;
if (c->remove_at_exit) {
char filename[1024];
- snprintf(filename, sizeof(filename), "%s/index.f4m", s->filename);
+ snprintf(filename, sizeof(filename), "%s/index.f4m", s->url);
unlink(filename);
for (i = 0; i < c->nb_streams; i++) {
- snprintf(filename, sizeof(filename), "%s/stream%d.abst", s->filename, i);
+ snprintf(filename, sizeof(filename), "%s/stream%d.abst", s->url, i);
unlink(filename);
}
- rmdir(s->filename);
+ rmdir(s->url);
}
hds_free(s);
return AVERROR(EINVAL);
}
- av_strlcpy(s->path, s1->filename, sizeof(s->path));
+ av_strlcpy(s->path, s1->url, sizeof(s->path));
s->img_number = 0;
s->img_count = 0;
pd.buf = probe_buffer;
pd.buf_size = probe_buffer_size;
- pd.filename = s1->filename;
+ pd.filename = s1->url;
while ((fmt = av_iformat_next(fmt))) {
if (fmt->read_header != ff_img_read_header ||
AVStream *st = s->streams[0];
const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(st->codecpar->format);
- av_strlcpy(img->path, s->filename, sizeof(img->path));
+ av_strlcpy(img->path, s->url, sizeof(img->path));
/* find format */
if (s->oformat->flags & AVFMT_NOFILE)
av_assert0(!img->split_planes);
- ret = avformat_alloc_output_context2(&fmt, NULL, img->muxer, s->filename);
+ ret = avformat_alloc_output_context2(&fmt, NULL, img->muxer, s->url);
if (ret < 0)
return ret;
st = avformat_new_stream(fmt, NULL);
}
// basename of the file
- buf = strrchr(s->filename, '/');
- av_dict_set(&s->streams[0]->metadata, FILENAME, buf ? ++buf : s->filename, 0);
+ buf = strrchr(s->url, '/');
+ av_dict_set(&s->streams[0]->metadata, FILENAME, buf ? ++buf : s->url, 0);
// track number
tracks = matroska->tracks.elem;
return ret;
/* scan secondary files */
- if (strlen(avctx->filename) > 2) {
+ if (strlen(avctx->url) > 2) {
int i;
- char *filename = av_strdup(avctx->filename);
+ char *filename = av_strdup(avctx->url);
if (!filename)
return AVERROR(ENOMEM);
if (sc->dref_id-1 < sc->drefs_count && sc->drefs[sc->dref_id-1].path) {
MOVDref *dref = &sc->drefs[sc->dref_id - 1];
if (c->enable_drefs) {
- if (mov_open_dref(c, &sc->pb, c->fc->filename, dref) < 0)
+ if (mov_open_dref(c, &sc->pb, c->fc->url, dref) < 0)
av_log(c->fc, AV_LOG_ERROR,
"stream %d, error opening alias: path='%s', dir='%s', "
"filename='%s', volume='%s', nlvl_from=%d, nlvl_to=%d\n",
else if (track->mode == MODE_ISM)
tag = track->par->codec_tag;
else if (track->mode == MODE_IPOD) {
- if (!av_match_ext(s->filename, "m4a") &&
- !av_match_ext(s->filename, "m4v") &&
- !av_match_ext(s->filename, "m4b"))
+ if (!av_match_ext(s->url, "m4a") &&
+ !av_match_ext(s->url, "m4v") &&
+ !av_match_ext(s->url, "m4b"))
av_log(s, AV_LOG_WARNING, "Warning, extension is not .m4a nor .m4v "
"Quicktime/Ipod might not play the file\n");
tag = track->par->codec_tag;
* writing, so we re-open the same output, but for reading. It also avoids
* a read/seek/write/seek back and forth. */
avio_flush(s->pb);
- ret = s->io_open(s, &read_pb, s->filename, AVIO_FLAG_READ, NULL);
+ ret = s->io_open(s, &read_pb, s->url, AVIO_FLAG_READ, NULL);
if (ret < 0) {
av_log(s, AV_LOG_ERROR, "Unable to re-open %s output file for "
- "the second pass (faststart)\n", s->filename);
+ "the second pass (faststart)\n", s->url);
goto end;
}
if (!vobsub->sub_name) {
char *ext;
- vobsub->sub_name = av_strdup(s->filename);
+ vobsub->sub_name = av_strdup(s->url);
if (!vobsub->sub_name) {
ret = AVERROR(ENOMEM);
goto end;
goto end;
}
memcpy(ext, !strncmp(ext, "IDX", 3) ? "SUB" : "sub", 3);
- av_log(s, AV_LOG_VERBOSE, "IDX/SUB: %s -> %s\n", s->filename, vobsub->sub_name);
+ av_log(s, AV_LOG_VERBOSE, "IDX/SUB: %s -> %s\n", s->url, vobsub->sub_name);
}
if (!(iformat = av_find_input_format("mpeg"))) {
ts->sdt_packet_period, ts->pat_packet_period);
if (ts->m2ts_mode == -1) {
- if (av_match_ext(s->filename, "m2ts")) {
+ if (av_match_ext(s->url, "m2ts")) {
ts->m2ts_mode = 1;
} else {
ts->m2ts_mode = 0;
{
int loglevel;
- if (!strcmp(url, s->filename) ||
+ if (!strcmp(url, s->url) ||
s->iformat && !strcmp(s->iformat->name, "image2") ||
s->oformat && !strcmp(s->oformat->name, "image2")
) {
redirect:
/* extract hostname and port */
av_url_split(proto, sizeof(proto), auth, sizeof(auth),
- host, sizeof(host), &port, path, sizeof(path), s->filename);
+ host, sizeof(host), &port, path, sizeof(path), s->url);
if (!strcmp(proto, "rtsps")) {
lower_rtsp_proto = "tls";
}
}
- /* Construct the URI used in request; this is similar to s->filename,
+ /* Construct the URI used in request; this is similar to s->url,
* but with authentication credentials removed and RTSP specific options
* stripped out. */
ff_url_join(rt->control_uri, sizeof(rt->control_uri), proto, NULL,
ff_rtsp_close_streams(s);
ff_rtsp_close_connections(s);
if (reply->status_code >=300 && reply->status_code < 400 && s->iformat) {
- av_strlcpy(s->filename, reply->location, sizeof(s->filename));
+ char *new_url = av_strdup(reply->location);
+ if (!new_url) {
+ err = AVERROR(ENOMEM);
+ goto fail2;
+ }
+ ff_format_set_url(s, new_url);
rt->session_id[0] = '\0';
av_log(s, AV_LOG_INFO, "Status %d: Redirecting to %s\n",
reply->status_code,
- s->filename);
+ s->url);
goto redirect;
}
+ fail2:
ff_network_close();
return err;
}
if (!ff_network_init())
return AVERROR(EIO);
- ret = ffurl_open_whitelist(&in, s->filename, AVIO_FLAG_READ,
+ ret = ffurl_open_whitelist(&in, s->url, AVIO_FLAG_READ,
&s->interrupt_callback, NULL, s->protocol_whitelist, s->protocol_blacklist, NULL);
if (ret)
goto fail;
}
av_url_split(NULL, 0, NULL, 0, host, sizeof(host), &port,
- NULL, 0, s->filename);
+ NULL, 0, s->url);
snprintf(sdp, sizeof(sdp),
"v=0\r\nc=IN IP%d %s\r\nm=%s %d RTP/AVP %d\r\n",
/* extract hostname and port */
av_url_split(proto, sizeof(proto), auth, sizeof(auth), host, sizeof(host),
- &port, path, sizeof(path), s->filename);
+ &port, path, sizeof(path), s->url);
/* ff_url_join. No authorization by now (NULL) */
ff_url_join(rt->control_uri, sizeof(rt->control_uri), proto, NULL, host,
int port;
av_url_split(NULL, 0, NULL, 0, host, sizeof(host), &port, NULL, 0,
- s->filename);
+ s->url);
ff_rtsp_undo_setup(s, 0);
return ff_rtsp_make_setup_request(s, host, port, RTSP_LOWER_TRANSPORT_TCP,
rt->real_challenge);
int i;
char *sdp;
AVFormatContext sdp_ctx, *ctx_array[1];
+ char url[1024];
if (s->start_time_realtime == 0 || s->start_time_realtime == AV_NOPTS_VALUE)
s->start_time_realtime = av_gettime();
* flexible SDP creation interface.
*/
sdp_ctx = *s;
- ff_url_join(sdp_ctx.filename, sizeof(sdp_ctx.filename),
+ sdp_ctx.url = url;
+ ff_url_join(url, sizeof(url),
"rtsp", NULL, addr, -1, NULL);
ctx_array[0] = &sdp_ctx;
if (av_sdp_create(ctx_array, 1, sdp, SDP_MAX_SIZE)) {
return AVERROR(EIO);
av_url_split(NULL, 0, NULL, 0, host, sizeof(host), &port,
- path, sizeof(path), s->filename);
+ path, sizeof(path), s->url);
if (port < 0)
port = 9875;
/* extract hostname and port */
av_url_split(NULL, 0, NULL, 0, host, sizeof(host), &base_port,
- path, sizeof(path), s->filename);
+ path, sizeof(path), s->url);
if (base_port < 0)
base_port = 5004;
s->start_time_realtime = av_gettime();
for (i = 0; i < s->nb_streams; i++) {
URLContext *fd;
+ char *new_url;
ff_url_join(url, sizeof(url), "rtp", NULL, host, base_port,
"?ttl=%d", ttl);
goto fail;
s->streams[i]->priv_data = contexts[i];
s->streams[i]->time_base = contexts[i]->streams[0]->time_base;
- av_strlcpy(contexts[i]->filename, url, sizeof(contexts[i]->filename));
+ new_url = av_strdup(url);
+ if (!new_url) {
+ ret = AVERROR(ENOMEM);
+ goto fail;
+ }
+ ff_format_set_url(contexts[i], new_url);
}
if (s->nb_streams > 0 && title)
port = 0;
ttl = 0;
if (n_files == 1) {
- port = sdp_get_address(dst, sizeof(dst), &ttl, ac[0]->filename);
+ port = sdp_get_address(dst, sizeof(dst), &ttl, ac[0]->url ? ac[0]->url : "");
is_multicast = resolve_destination(dst, sizeof(dst), dst_type,
sizeof(dst_type));
if (!is_multicast)
dst[0] = 0;
for (i = 0; i < n_files; i++) {
if (n_files != 1) {
- port = sdp_get_address(dst, sizeof(dst), &ttl, ac[i]->filename);
+ port = sdp_get_address(dst, sizeof(dst), &ttl, ac[i]->url ? ac[i]->url : "");
is_multicast = resolve_destination(dst, sizeof(dst), dst_type,
sizeof(dst_type));
if (!is_multicast)
AVFormatContext *oc = seg->avf;
size_t size;
int ret;
+ char buf[1024];
+ char *new_name;
if (seg->segment_idx_wrap)
seg->segment_idx %= seg->segment_idx_wrap;
struct tm *tm, tmpbuf;
time(&now0);
tm = localtime_r(&now0, &tmpbuf);
- if (!strftime(oc->filename, sizeof(oc->filename), s->filename, tm)) {
+ if (!strftime(buf, sizeof(buf), s->url, tm)) {
av_log(oc, AV_LOG_ERROR, "Could not get segment filename with strftime\n");
return AVERROR(EINVAL);
}
- } else if (av_get_frame_filename(oc->filename, sizeof(oc->filename),
- s->filename, seg->segment_idx) < 0) {
- av_log(oc, AV_LOG_ERROR, "Invalid segment filename template '%s'\n", s->filename);
+ } else if (av_get_frame_filename(buf, sizeof(buf),
+ s->url, seg->segment_idx) < 0) {
+ av_log(oc, AV_LOG_ERROR, "Invalid segment filename template '%s'\n", s->url);
return AVERROR(EINVAL);
}
+ new_name = av_strdup(buf);
+ if (!new_name)
+ return AVERROR(ENOMEM);
+ ff_format_set_url(oc, new_name);
/* copy modified name in list entry */
- size = strlen(av_basename(oc->filename)) + 1;
+ size = strlen(av_basename(oc->url)) + 1;
if (seg->entry_prefix)
size += strlen(seg->entry_prefix);
return ret;
snprintf(seg->cur_entry.filename, size, "%s%s",
seg->entry_prefix ? seg->entry_prefix : "",
- av_basename(oc->filename));
+ av_basename(oc->url));
return 0;
}
if ((err = set_segment_filename(s)) < 0)
return err;
- if ((err = s->io_open(s, &oc->pb, oc->filename, AVIO_FLAG_WRITE, NULL)) < 0) {
- av_log(s, AV_LOG_ERROR, "Failed to open segment '%s'\n", oc->filename);
+ if ((err = s->io_open(s, &oc->pb, oc->url, AVIO_FLAG_WRITE, NULL)) < 0) {
+ av_log(s, AV_LOG_ERROR, "Failed to open segment '%s'\n", oc->url);
return err;
}
if (!seg->individual_header_trailer)
if (ret < 0)
av_log(s, AV_LOG_ERROR, "Failure occurred when ending segment '%s'\n",
- oc->filename);
+ oc->url);
if (seg->list) {
if (seg->list_size || seg->list_type == LIST_TYPE_M3U8) {
}
av_log(s, AV_LOG_VERBOSE, "segment:'%s' count:%d ended\n",
- seg->avf->filename, seg->segment_count);
+ seg->avf->url, seg->segment_count);
seg->segment_count++;
if (seg->increment_tc) {
seg->reference_stream_index,
av_get_media_type_string(s->streams[seg->reference_stream_index]->codecpar->codec_type));
- seg->oformat = av_guess_format(seg->format, s->filename, NULL);
+ seg->oformat = av_guess_format(seg->format, s->url, NULL);
if (!seg->oformat)
return AVERROR_MUXER_NOT_FOUND;
if (seg->write_header_trailer) {
if ((ret = s->io_open(s, &oc->pb,
- seg->header_filename ? seg->header_filename : oc->filename,
+ seg->header_filename ? seg->header_filename : oc->url,
AVIO_FLAG_WRITE, NULL)) < 0) {
- av_log(s, AV_LOG_ERROR, "Failed to open segment '%s'\n", oc->filename);
+ av_log(s, AV_LOG_ERROR, "Failed to open segment '%s'\n", oc->url);
return ret;
}
if (!seg->individual_header_trailer)
} else {
close_null_ctxp(&oc->pb);
}
- if ((ret = oc->io_open(oc, &oc->pb, oc->filename, AVIO_FLAG_WRITE, NULL)) < 0)
+ if ((ret = oc->io_open(oc, &oc->pb, oc->url, AVIO_FLAG_WRITE, NULL)) < 0)
return ret;
if (!seg->individual_header_trailer)
oc->pb->seekable = 0;
if (seg->segment_frame_count == 0) {
av_log(s, AV_LOG_VERBOSE, "segment:'%s' starts with packet stream:%d pts:%s pts_time:%s frame:%d\n",
- seg->avf->filename, pkt->stream_index,
+ seg->avf->url, pkt->stream_index,
av_ts2str(pkt->pts), av_ts2timestr(pkt->pts, &st->time_base), seg->frame_count);
}
int ret, i, video_chunks = 0, audio_chunks = 0, video_streams = 0, audio_streams = 0;
int64_t duration = 0;
- snprintf(filename, sizeof(filename), "%s/Manifest", s->filename);
- snprintf(temp_filename, sizeof(temp_filename), "%s/Manifest.tmp", s->filename);
+ snprintf(filename, sizeof(filename), "%s/Manifest", s->url);
+ snprintf(temp_filename, sizeof(temp_filename), "%s/Manifest.tmp", s->url);
ret = s->io_open(s, &out, temp_filename, AVIO_FLAG_WRITE, NULL);
if (ret < 0) {
av_log(s, AV_LOG_ERROR, "Unable to open %s for writing\n", temp_filename);
int ret = 0, i;
AVOutputFormat *oformat;
- if (mkdir(s->filename, 0777) == -1 && errno != EEXIST) {
+ if (mkdir(s->url, 0777) == -1 && errno != EEXIST) {
ret = AVERROR(errno);
av_log(s, AV_LOG_ERROR, "mkdir failed\n");
goto fail;
ret = AVERROR(EINVAL);
goto fail;
}
- snprintf(os->dirname, sizeof(os->dirname), "%s/QualityLevels(%"PRId64")", s->filename, s->streams[i]->codecpar->bit_rate);
+ snprintf(os->dirname, sizeof(os->dirname), "%s/QualityLevels(%"PRId64")", s->url, s->streams[i]->codecpar->bit_rate);
if (mkdir(os->dirname, 0777) == -1 && errno != EEXIST) {
ret = AVERROR(errno);
av_log(s, AV_LOG_ERROR, "mkdir failed\n");
if (c->remove_at_exit) {
char filename[1024];
- snprintf(filename, sizeof(filename), "%s/Manifest", s->filename);
+ snprintf(filename, sizeof(filename), "%s/Manifest", s->url);
unlink(filename);
- rmdir(s->filename);
+ rmdir(s->url);
}
ism_free(s);
{
int i;
av_log(log_ctx, log_level, "filename:'%s' format:%s\n",
- slave->avf->filename, slave->avf->oformat->name);
+ slave->avf->url, slave->avf->oformat->name);
for (i = 0; i < slave->avf->nb_streams; i++) {
AVStream *st = slave->avf->streams[i];
AVBSFContext *bsf = slave->bsfs[i];
{
TeeContext *tee = avf->priv_data;
unsigned nb_slaves = 0, i;
- const char *filename = avf->filename;
+ const char *filename = avf->url;
char **slaves = NULL;
int ret;
int64_t pos_delta = 0;
int64_t skip = 0;
//We could use URLProtocol flags here but as many user applications do not use URLProtocols this would be unreliable
- const char *proto = avio_find_protocol_name(s->filename);
+ const char *proto = avio_find_protocol_name(s->url);
if (!proto) {
av_log(s, AV_LOG_INFO,
av_strlcpy(filename, wc->header_filename, strlen(wc->header_filename) + 1);
} else {
if (av_get_frame_filename(filename, MAX_FILENAME_SIZE,
- s->filename, wc->chunk_index - 1) < 0) {
- av_log(oc, AV_LOG_ERROR, "Invalid chunk filename template '%s'\n", s->filename);
+ s->url, wc->chunk_index - 1) < 0) {
+ av_log(oc, AV_LOG_ERROR, "Invalid chunk filename template '%s'\n", s->url);
return AVERROR(EINVAL);
}
}
if (s->nb_streams != 1) { return AVERROR_INVALIDDATA; }
wc->chunk_index = wc->chunk_start_index;
- wc->oformat = av_guess_format("webm", s->filename, "video/webm");
+ wc->oformat = av_guess_format("webm", s->url, "video/webm");
if (!wc->oformat)
return AVERROR_MUXER_NOT_FOUND;
if (ret < 0)
return ret;
oc = wc->avf;
- ret = get_chunk_filename(s, 1, oc->filename);
+ ret = get_chunk_filename(s, 1, oc->url);
if (ret < 0)
return ret;
if (wc->http_method)
av_dict_set(&options, "method", wc->http_method, 0);
- ret = s->io_open(s, &oc->pb, oc->filename, AVIO_FLAG_WRITE, &options);
+ ret = s->io_open(s, &oc->pb, oc->url, AVIO_FLAG_WRITE, &options);
av_dict_free(&options);
if (ret < 0)
return ret;