diff options
author | cigaes <cigaes@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2010-10-18 20:44:04 +0000 |
---|---|---|
committer | Uoti Urpala <uau@glyph.nonexistent.invalid> | 2010-11-02 04:18:37 +0200 |
commit | ce9fcc0730882e7f8d669e1b1bd7efbdfc998246 (patch) | |
tree | f4204925f495c7542593fb92ac6e4e2dd7c34f66 /libvo | |
parent | c640b92bdd2624fba3dbc9fc421391f4739c7c93 (diff) | |
download | mpv-ce9fcc0730882e7f8d669e1b1bd7efbdfc998246.tar.bz2 mpv-ce9fcc0730882e7f8d669e1b1bd7efbdfc998246.tar.xz |
vo_gl: Move the read_pnm function into a separate file
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@32513 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libvo')
-rw-r--r-- | libvo/gl_common.c | 61 |
1 files changed, 1 insertions, 60 deletions
diff --git a/libvo/gl_common.c b/libvo/gl_common.c index 048f3185ce..8d0036ef0d 100644 --- a/libvo/gl_common.c +++ b/libvo/gl_common.c @@ -41,6 +41,7 @@ #include "gl_common.h" #include "csputils.h" #include "aspect.h" +#include "pnm_loader.h" void (GLAPIENTRY *mpglBegin)(GLenum); void (GLAPIENTRY *mpglEnd)(void); @@ -559,66 +560,6 @@ void glCreateClearTex(GLenum target, GLenum fmt, GLenum format, GLenum type, GLi } /** - * \brief skips whitespace and comments - * \param f file to read from - */ -static void ppm_skip(FILE *f) { - int c, comment = 0; - do { - c = fgetc(f); - if (c == '#') - comment = 1; - if (c == '\n') - comment = 0; - } while (c != EOF && (isspace(c) || comment)); - if (c != EOF) - ungetc(c, f); -} - -#define MAXDIM (16 * 1024) - -static uint8_t *read_pnm(FILE *f, int *width, int *height, - int *bytes_per_pixel, int *maxval) { - uint8_t *data; - int type; - unsigned w, h, m, val, bpp; - *width = *height = *bytes_per_pixel = *maxval = 0; - ppm_skip(f); - if (fgetc(f) != 'P') - return NULL; - type = fgetc(f); - if (type != '5' && type != '6') - return NULL; - ppm_skip(f); - if (fscanf(f, "%u", &w) != 1) - return NULL; - ppm_skip(f); - if (fscanf(f, "%u", &h) != 1) - return NULL; - ppm_skip(f); - if (fscanf(f, "%u", &m) != 1) - return NULL; - val = fgetc(f); - if (!isspace(val)) - return NULL; - if (w > MAXDIM || h > MAXDIM) - return NULL; - bpp = (m > 255) ? 2 : 1; - if (type == '6') - bpp *= 3; - data = malloc(w * h * bpp); - if (fread(data, w * bpp, h, f) != h) { - free(data); - return NULL; - } - *width = w; - *height = h; - *bytes_per_pixel = bpp; - *maxval = m; - return data; -} - -/** * \brief creates a texture from a PPM file * \param target texture taget, usually GL_TEXTURE_2D * \param fmt internal texture format, 0 for default |