[x265] [PATCH 1 of 5] common: introduce x265_slurp_file, reads data from file to string buffer

Steve Borho steve at borho.org
Fri Jul 11 21:13:42 CEST 2014


On Fri, Jul 11, 2014 at 6:12 AM,  <aarthi at multicorewareinc.com> wrote:
> # HG changeset patch
> # User Aarthi Thirumalai
> # Date 1405074962 -19800
> #      Fri Jul 11 16:06:02 2014 +0530
> # Node ID 86b4c19eb7061753fa98332a1b59024c387845d0
> # Parent  29ae3f84c3eaa36ecb2669b380e7f31824e802fe
> common: introduce x265_slurp_file, reads data from file to string buffer.
>
> diff -r 29ae3f84c3ea -r 86b4c19eb706 source/common/common.cpp
> --- a/source/common/common.cpp  Fri Jul 11 15:25:10 2014 +0530
> +++ b/source/common/common.cpp  Fri Jul 11 16:06:02 2014 +0530
> @@ -156,6 +156,53 @@
>  uint32_t x265_picturePlaneSize(int csp, int width, int height, int plane)
>  {
>      uint32_t size = (uint32_t)(width >> x265_cli_csps[csp].width[plane]) * (height >> x265_cli_csps[csp].height[plane]);
> -
>      return size;
>  }
> +
> +char* x265_slurp_file(const char *filename)
> +{
> +    if (!filename)
> +        return NULL;
> +
> +    int bError = 0;
> +    size_t fSize;
> +    char *buf = NULL;
> +
> +    FILE *fh = fopen(filename, "rb");
> +    if (!fh)
> +    {
> +        x265_log(NULL, X265_LOG_ERROR, "unable to open file %s \n", filename);
> +        return NULL;
> +    }
> +
> +    bError |= fseek(fh, 0, SEEK_END) < 0;
> +    bError |= (fSize = ftell(fh)) <= 0;
> +    bError |= fseek(fh, 0, SEEK_SET) < 0;
> +    if (bError)
> +        goto error;
> +
> +    buf = X265_MALLOC(char, fSize + 2);
> +    if (!buf)
> +    {
> +        x265_log(NULL, X265_LOG_ERROR, "unable to allocate memory \n");
> +        goto error;
> +    }
> +
> +    bError |= fread(buf, 1, fSize, fh) != fSize;
> +    if (buf[fSize - 1] != '\n')
> +        buf[fSize++] = '\n';
> +    buf[fSize] = 0;
> +    fclose(fh);
> +
> +    if (bError)
> +    {
> +        x265_log(NULL, X265_LOG_ERROR, "unable to read the file\n");
> +        free(buf);

memory allocated by X265_ALLOC() must be released by X265_FREE() else
it might cause crashes on some platforms.  Queued with this fix

> +        buf = NULL;
> +    }
> +    return buf;
> +
> +error:
> +    fclose(fh);
> +    return NULL;
> +}
> diff -r 29ae3f84c3ea -r 86b4c19eb706 source/common/common.h
> --- a/source/common/common.h    Fri Jul 11 15:25:10 2014 +0530
> +++ b/source/common/common.h    Fri Jul 11 16:06:02 2014 +0530
> @@ -208,7 +208,6 @@
>  double x265_ssim2dB(double ssim);
>  double x265_qScale2qp(double qScale);
>  double x265_qp2qScale(double qp);
> -
>  uint32_t x265_picturePlaneSize(int csp, int width, int height, int plane);
> -
> +char* x265_slurp_file(const char *filename);
>  #endif // ifndef X265_COMMON_H
> _______________________________________________
> x265-devel mailing list
> x265-devel at videolan.org
> https://mailman.videolan.org/listinfo/x265-devel



-- 
Steve Borho


More information about the x265-devel mailing list