[FFmpeg-devel] [PATCH] ffserver: improve error feedback in open_input_stream()

Clément Bœsch u at pkh.me
Thu Nov 28 21:29:15 CET 2013


On Thu, Nov 28, 2013 at 09:07:04PM +0100, Stefano Sabatini wrote:
> ---
>  ffserver.c | 25 ++++++++++++++++---------
>  1 file changed, 16 insertions(+), 9 deletions(-)
> 
> diff --git a/ffserver.c b/ffserver.c
> index 0243a98..342c5fa 100644
> --- a/ffserver.c
> +++ b/ffserver.c
> @@ -2184,8 +2184,10 @@ static int open_input_stream(HTTPContext *c, const char *info)
>          buf_size = FFM_PACKET_SIZE;
>          /* compute position (absolute time) */
>          if (av_find_info_tag(buf, sizeof(buf), "date", info)) {
> -            if ((ret = av_parse_time(&stream_pos, buf, 0)) < 0)
> +            if ((ret = av_parse_time(&stream_pos, buf, 0)) < 0) {
> +                http_log("Invalid date specification '%s' for stream\n", buf);
>                  return ret;
> +            }
>          } else if (av_find_info_tag(buf, sizeof(buf), "buffer", info)) {
>              int prebuffer = strtol(buf, 0, 10);
>              stream_pos = av_gettime() - prebuffer * (int64_t)1000000;
> @@ -2196,18 +2198,22 @@ static int open_input_stream(HTTPContext *c, const char *info)
>          buf_size = 0;
>          /* compute position (relative time) */
>          if (av_find_info_tag(buf, sizeof(buf), "date", info)) {
> -            if ((ret = av_parse_time(&stream_pos, buf, 1)) < 0)
> +            if ((ret = av_parse_time(&stream_pos, buf, 1)) < 0) {
> +                http_log("Invalid date specification '%s' for stream\n", buf);
>                  return ret;
> +            }
>          } else
>              stream_pos = 0;
>      }
> -    if (input_filename[0] == '\0')
> -        return -1;
> +    if (!input_filename[0]) {
> +        http_log("No filename was specified for stream\n");
> +        return AVERROR(EINVAL);
> +    }
>  

Can this be triggered if there is [File ""], or really if there are not
File entry? If that's the first case it should be an error such as
"Invalid empty file name in feed".

>      /* open stream */
>      if ((ret = avformat_open_input(&s, input_filename, c->stream->ifmt, &c->stream->in_opts)) < 0) {
> -        http_log("could not open %s: %d\n", input_filename, ret);
> -        return -1;
> +        http_log("Could not open input %s: %s\n", input_filename, av_err2str(ret));
> +        return ret;

input '%s' for consistency.

>      }
>  
>      /* set buffer size */
> @@ -2215,10 +2221,11 @@ static int open_input_stream(HTTPContext *c, const char *info)
>  
>      s->flags |= AVFMT_FLAG_GENPTS;
>      c->fmt_in = s;
> -    if (strcmp(s->iformat->name, "ffm") && avformat_find_stream_info(c->fmt_in, NULL) < 0) {
> -        http_log("Could not find stream info '%s'\n", input_filename);
> +    if (strcmp(s->iformat->name, "ffm") &&
> +        (ret = avformat_find_stream_info(c->fmt_in, NULL)) < 0) {
> +        http_log("Could not find stream info for input '%s'\n", input_filename);
>          avformat_close_input(&s);
> -        return -1;
> +        return ret;

Rest looks OK

-- 
Clément B.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 490 bytes
Desc: not available
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20131128/d46f815f/attachment.asc>


More information about the ffmpeg-devel mailing list