[FFmpeg-devel] [PATCH] avutil/avstring: Inline some tiny functions

Ganesh Ajjanagadde gajjanag at mit.edu
Sat Sep 26 18:10:40 CEST 2015


On Sat, Sep 26, 2015 at 12:04 PM, Henrik Gramner <henrik at gramner.com> wrote:
> They're short enough that inlining them actually reduces code size due to
> all the overhead associated with making a function call.
> ---
>  libavutil/avstring.c | 22 ----------------------
>  libavutil/avstring.h | 22 ++++++++++++++++++----
>  2 files changed, 18 insertions(+), 26 deletions(-)
>
> diff --git a/libavutil/avstring.c b/libavutil/avstring.c
> index 24d1bb9..57fe74d 100644
> --- a/libavutil/avstring.c
> +++ b/libavutil/avstring.c
> @@ -317,28 +317,6 @@ int av_escape(char **dst, const char *src, const char *special_chars,
>      }
>  }
>
> -int av_isdigit(int c)
> -{
> -    return c >= '0' && c <= '9';
> -}
> -
> -int av_isgraph(int c)
> -{
> -    return c > 32 && c < 127;
> -}
> -
> -int av_isspace(int c)
> -{
> -    return c == ' ' || c == '\f' || c == '\n' || c == '\r' || c == '\t' ||
> -           c == '\v';
> -}
> -
> -int av_isxdigit(int c)
> -{
> -    c = av_tolower(c);
> -    return av_isdigit(c) || (c >= 'a' && c <= 'f');
> -}
> -
>  int av_match_name(const char *name, const char *names)
>  {
>      const char *p;
> diff --git a/libavutil/avstring.h b/libavutil/avstring.h
> index 234c030..a306e89 100644
> --- a/libavutil/avstring.h
> +++ b/libavutil/avstring.h
> @@ -203,17 +203,27 @@ char *av_strtok(char *s, const char *delim, char **saveptr);
>  /**
>   * Locale-independent conversion of ASCII isdigit.
>   */
> -av_const int av_isdigit(int c);
> +static inline av_const int av_isdigit(int c)
> +{
> +    return c >= '0' && c <= '9';
> +}
>
>  /**
>   * Locale-independent conversion of ASCII isgraph.
>   */
> -av_const int av_isgraph(int c);
> +static inline av_const int av_isgraph(int c)
> +{
> +    return c > 32 && c < 127;
> +}
>
>  /**
>   * Locale-independent conversion of ASCII isspace.
>   */
> -av_const int av_isspace(int c);
> +static inline av_const int av_isspace(int c)
> +{
> +    return c == ' ' || c == '\f' || c == '\n' || c == '\r' || c == '\t' ||
> +           c == '\v';
> +}
>
>  /**
>   * Locale-independent conversion of ASCII characters to uppercase.
> @@ -238,7 +248,11 @@ static inline av_const int av_tolower(int c)
>  /**
>   * Locale-independent conversion of ASCII isxdigit.
>   */
> -av_const int av_isxdigit(int c);
> +static inline av_const int av_isxdigit(int c)
> +{
> +    c = av_tolower(c);
> +    return av_isdigit(c) || (c >= 'a' && c <= 'f');
> +}
>
>  /**
>   * Locale-independent case-insensitive compare.
> --
> 1.8.3.2

Have you compared with av_always_inline?

>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


More information about the ffmpeg-devel mailing list