*/
c->fmt_ctx.max_delay = (int)(0.7*AV_TIME_BASE);
- if (avformat_write_header(&c->fmt_ctx, NULL) < 0) {
- http_log("Error writing output header\n");
- return -1;
+ if ((ret = avformat_write_header(&c->fmt_ctx, NULL)) < 0) {
+ http_log("Error writing output header for stream '%s': %s\n",
+ c->stream->filename, av_err2str(ret));
+ return ret;
}
av_dict_free(&c->fmt_ctx.metadata);
static int http_start_receive_data(HTTPContext *c)
{
int fd;
+ int ret;
- if (c->stream->feed_opened)
- return -1;
+ if (c->stream->feed_opened) {
+ http_log("Stream feed '%s' was not opened\n", c->stream->feed_filename);
+ return AVERROR(EINVAL);
+ }
/* Don't permit writing to this one */
- if (c->stream->readonly)
- return -1;
+ if (c->stream->readonly) {
+ http_log("Cannot write to read-only file '%s'\n", c->stream->feed_filename);
+ return AVERROR(EINVAL);
+ }
/* open feed */
fd = open(c->stream->feed_filename, O_RDWR);
if (fd < 0) {
- http_log("Error opening feeder file: %s\n", strerror(errno));
- return -1;
+ ret = AVERROR(errno);
+ http_log("Could not open feed file '%s':%s \n",
+ c->stream->feed_filename, strerror(errno));
+ return ret;
}
c->feed_fd = fd;
ffm_write_write_index(c->feed_fd, FFM_PACKET_SIZE);
http_log("Truncating feed file '%s'\n", c->stream->feed_filename);
if (ftruncate(c->feed_fd, FFM_PACKET_SIZE) < 0) {
- http_log("Error truncating feed file: %s\n", strerror(errno));
- return -1;
+ ret = AVERROR(errno);
+ http_log("Error truncating feed file '%s': %s\n",
+ c->stream->feed_filename, strerror(errno));
+ return ret;
}
} else {
- if ((c->stream->feed_write_index = ffm_read_write_index(fd)) < 0) {
- http_log("Error reading write index from feed file: %s\n", strerror(errno));
- return -1;
+ ret = ffm_read_write_index(fd);
+ if (ret < 0) {
+ http_log("Error reading write index from feed file '%s': %s\n",
+ c->stream->feed_filename, strerror(errno));
+ return ret;
+ } else {
+ c->stream->feed_write_index = ret;
}
}
av_dict_set(&stream->in_opts, "mpeg2ts_compute_pcr", "1", 0);
}
- http_log("Opening file '%s'\n", stream->feed_filename);
+ if (!stream->feed_filename[0]) {
+ http_log("Unspecified feed file for stream '%s'\n", stream->filename);
+ goto fail;
+ }
+
+ http_log("Opening feed file '%s' for stream '%s'\n", stream->feed_filename, stream->filename);
if ((ret = avformat_open_input(&infile, stream->feed_filename, stream->ifmt, &stream->in_opts)) < 0) {
- http_log("Could not open '%s': %d\n", stream->feed_filename, ret);
+ http_log("Could not open '%s': %s\n", stream->feed_filename, av_err2str(ret));
/* remove stream (no need to spend more time on it) */
fail:
remove_stream(stream);
}
feed->fmt = av_guess_format("ffm", NULL, NULL);
- /* defaut feed file */
+ /* default feed file */
snprintf(feed->feed_filename, sizeof(feed->feed_filename),
"/tmp/%s.ffm", feed->filename);
feed->feed_max_size = 5 * 1024 * 1024;
} else if (!av_strcasecmp(cmd, "Truncate")) {
if (feed) {
get_arg(arg, sizeof(arg), &p);
- feed->truncate = strtod(arg, NULL);
+ /* assume Truncate is true in case no argument is specified */
+ if (!arg[0]) {
+ feed->truncate = 1;
+ } else {
+ av_log(NULL, AV_LOG_WARNING,
+ "Truncate N syntax in configuration file is deprecated, "
+ "use Truncate alone with no arguments\n");
+ feed->truncate = strtod(arg, NULL);
+ }
}
} else if (!av_strcasecmp(cmd, "FileMaxSize")) {
if (feed) {
sfeed = sfeed->next_feed;
}
if (!sfeed)
- ERROR("feed '%s' not defined\n", arg);
+ ERROR("Feed with name '%s' for stream '%s' is not defined\n", arg, stream->filename);
else
stream->feed = sfeed;
}