Merge commit '67351924fa91dea4339109100a4c0689f006581f'
authorClément Bœsch <cboesch@gopro.com>
Thu, 30 Mar 2017 08:26:29 +0000 (10:26 +0200)
committerClément Bœsch <cboesch@gopro.com>
Thu, 30 Mar 2017 08:26:29 +0000 (10:26 +0200)
* commit '67351924fa91dea4339109100a4c0689f006581f':
  Drop unreachable break and return statements

Merged-by: Clément Bœsch <cboesch@gopro.com>
1  2 
libavcodec/bmvvideo.c
libavcodec/hevc_sei.c
libavcodec/sanm.c
libavformat/rtpproto.c
libavformat/rtspdec.c
libavformat/smush.c
libavutil/opt.c

Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
diff --cc libavutil/opt.c
@@@ -308,149 -236,14 +308,147 @@@ static int set_string_number(void *obj
          if ((ret = write_number(obj, o, dst, d, 1, 1)) < 0)
              return ret;
          val += i;
 -        if (!*val)
 +        if (!i || !*val)
              return 0;
 -        notfirst = 1;
      }
-     return 0;
  }
  
 +static int set_string_image_size(void *obj, const AVOption *o, const char *val, int *dst)
 +{
 +    int ret;
 +
 +    if (!val || !strcmp(val, "none")) {
 +        dst[0] =
 +        dst[1] = 0;
 +        return 0;
 +    }
 +    ret = av_parse_video_size(dst, dst + 1, val);
 +    if (ret < 0)
 +        av_log(obj, AV_LOG_ERROR, "Unable to parse option value \"%s\" as image size\n", val);
 +    return ret;
 +}
 +
 +static int set_string_video_rate(void *obj, const AVOption *o, const char *val, AVRational *dst)
 +{
 +    int ret;
 +    if (!val) {
 +        ret = AVERROR(EINVAL);
 +    } else {
 +        ret = av_parse_video_rate(dst, val);
 +    }
 +    if (ret < 0)
 +        av_log(obj, AV_LOG_ERROR, "Unable to parse option value \"%s\" as video rate\n", val);
 +    return ret;
 +}
 +
 +static int set_string_color(void *obj, const AVOption *o, const char *val, uint8_t *dst)
 +{
 +    int ret;
 +
 +    if (!val) {
 +        return 0;
 +    } else {
 +        ret = av_parse_color(dst, val, -1, obj);
 +        if (ret < 0)
 +            av_log(obj, AV_LOG_ERROR, "Unable to parse option value \"%s\" as color\n", val);
 +        return ret;
 +    }
 +    return 0;
 +}
 +
 +static const char *get_bool_name(int val)
 +{
 +    if (val < 0)
 +        return "auto";
 +    return val ? "true" : "false";
 +}
 +
 +static int set_string_bool(void *obj, const AVOption *o, const char *val, int *dst)
 +{
 +    int n;
 +
 +    if (!val)
 +        return 0;
 +
 +    if (!strcmp(val, "auto")) {
 +        n = -1;
 +    } else if (av_match_name(val, "true,y,yes,enable,enabled,on")) {
 +        n = 1;
 +    } else if (av_match_name(val, "false,n,no,disable,disabled,off")) {
 +        n = 0;
 +    } else {
 +        char *end = NULL;
 +        n = strtol(val, &end, 10);
 +        if (val + strlen(val) != end)
 +            goto fail;
 +    }
 +
 +    if (n < o->min || n > o->max)
 +        goto fail;
 +
 +    *dst = n;
 +    return 0;
 +
 +fail:
 +    av_log(obj, AV_LOG_ERROR, "Unable to parse option value \"%s\" as boolean\n", val);
 +    return AVERROR(EINVAL);
 +}
 +
 +static int set_string_fmt(void *obj, const AVOption *o, const char *val, uint8_t *dst,
 +                          int fmt_nb, int ((*get_fmt)(const char *)), const char *desc)
 +{
 +    int fmt, min, max;
 +
 +    if (!val || !strcmp(val, "none")) {
 +        fmt = -1;
 +    } else {
 +        fmt = get_fmt(val);
 +        if (fmt == -1) {
 +            char *tail;
 +            fmt = strtol(val, &tail, 0);
 +            if (*tail || (unsigned)fmt >= fmt_nb) {
 +                av_log(obj, AV_LOG_ERROR,
 +                       "Unable to parse option value \"%s\" as %s\n", val, desc);
 +                return AVERROR(EINVAL);
 +            }
 +        }
 +    }
 +
 +    min = FFMAX(o->min, -1);
 +    max = FFMIN(o->max, fmt_nb-1);
 +
 +    // hack for compatibility with old ffmpeg
 +    if(min == 0 && max == 0) {
 +        min = -1;
 +        max = fmt_nb-1;
 +    }
 +
 +    if (fmt < min || fmt > max) {
 +        av_log(obj, AV_LOG_ERROR,
 +               "Value %d for parameter '%s' out of %s format range [%d - %d]\n",
 +               fmt, o->name, desc, min, max);
 +        return AVERROR(ERANGE);
 +    }
 +
 +    *(int *)dst = fmt;
 +    return 0;
 +}
 +
 +static int set_string_pixel_fmt(void *obj, const AVOption *o, const char *val, uint8_t *dst)
 +{
 +    return set_string_fmt(obj, o, val, dst,
 +                          AV_PIX_FMT_NB, av_get_pix_fmt, "pixel format");
 +}
 +
 +static int set_string_sample_fmt(void *obj, const AVOption *o, const char *val, uint8_t *dst)
 +{
 +    return set_string_fmt(obj, o, val, dst,
 +                          AV_SAMPLE_FMT_NB, av_get_sample_fmt, "sample format");
 +}
 +
  int av_opt_set(void *obj, const char *name, const char *val, int search_flags)
  {
 +    int ret = 0;
      void *dst, *target_obj;
      const AVOption *o = av_opt_find2(obj, name, NULL, 0, search_flags, &target_obj);
      if (!o || !target_obj)