summaryrefslogtreecommitdiffstats
path: root/libvo
diff options
context:
space:
mode:
authorcigaes <cigaes@b3059339-0415-0410-9bf9-f77b7e298cf2>2010-10-18 20:44:04 +0000
committerUoti Urpala <uau@glyph.nonexistent.invalid>2010-11-02 04:18:37 +0200
commitce9fcc0730882e7f8d669e1b1bd7efbdfc998246 (patch)
treef4204925f495c7542593fb92ac6e4e2dd7c34f66 /libvo
parentc640b92bdd2624fba3dbc9fc421391f4739c7c93 (diff)
downloadmpv-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.c61
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