32 return c ==
' ' || c ==
'\n' || c ==
'\r' || c ==
'\t';
46 while (c !=
'\n' && bs < end) {
55 while (bs < end && !
pnm_space(c) && (s - str) < buf_size - 1) {
67 char buf1[32], tuple_type[32];
68 int h,
w, depth, maxval;
78 }
else if (s->
type==2 || s->
type==5) {
83 }
else if (s->
type==3 || s->
type==6) {
85 }
else if (s->
type==7) {
93 if (!strcmp(buf1,
"WIDTH")) {
95 w = strtol(buf1,
NULL, 10);
96 }
else if (!strcmp(buf1,
"HEIGHT")) {
98 h = strtol(buf1,
NULL, 10);
99 }
else if (!strcmp(buf1,
"DEPTH")) {
100 pnm_get(s, buf1,
sizeof(buf1));
101 depth = strtol(buf1,
NULL, 10);
102 }
else if (!strcmp(buf1,
"MAXVAL")) {
103 pnm_get(s, buf1,
sizeof(buf1));
104 maxval = strtol(buf1,
NULL, 10);
105 }
else if (!strcmp(buf1,
"TUPLTYPE") ||
107 !strcmp(buf1,
"TUPLETYPE")) {
108 pnm_get(s, tuple_type,
sizeof(tuple_type));
109 }
else if (!strcmp(buf1,
"ENDHDR")) {
116 if (w <= 0 || h <= 0 || maxval <= 0 || maxval > UINT16_MAX || depth <= 0 || tuple_type[0] ==
'\0' ||
127 }
else if (maxval < 256) {
132 }
else if (depth == 2) {
138 }
else if (depth == 3) {
144 }
else if (depth == 4) {
157 pnm_get(s, buf1,
sizeof(buf1));
159 pnm_get(s, buf1,
sizeof(buf1));
169 pnm_get(s, buf1,
sizeof(buf1));
183 else if (s->
maxval < 1024)
197 if ((avctx->
width & 1) != 0)
#define AVERROR_INVALIDDATA
Invalid data found when processing input.
const AVPixFmtDescriptor * av_pix_fmt_desc_get(enum AVPixelFormat pix_fmt)
static int pnm_space(int c)
packed RGB 8:8:8, 24bpp, RGBRGB...
int ff_set_dimensions(AVCodecContext *s, int width, int height)
Check that the provided frame dimensions are valid and set them on the codec context.
#define AV_PIX_FMT_RGBA64
int maxval
maximum value of a pixel
enum AVPixelFormat pix_fmt
Pixel format, see AV_PIX_FMT_xxx.
static av_cold int end(AVCodecContext *avctx)
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
static void pnm_get(PNMContext *sc, char *str, int buf_size)
packed RGBA 8:8:8:8, 32bpp, RGBARGBA...
uint64_t flags
Combination of AV_PIX_FMT_FLAG_...
int av_image_check_size(unsigned int w, unsigned int h, int log_offset, void *log_ctx)
Check if the given dimension of an image is valid, meaning that all bytes of the image can be address...
#define AV_PIX_FMT_GRAY16
int width
picture width / height.
#define AV_PIX_FMT_YUV420P16
Libavcodec external API header.
int ff_pnm_decode_header(AVCodecContext *avctx, PNMContext *const s)
main external API structure.
#define AV_PIX_FMT_YUV420P10
#define AV_PIX_FMT_YUV420P9
Y , 1bpp, 0 is black, 1 is white, in each byte pixels are ordered from the msb to the lsb...
planar YUV 4:2:0, 12bpp, (1 Cr & Cb sample per 2x2 Y samples)
common internal api header.
Y , 1bpp, 0 is white, 1 is black, in each byte pixels are ordered from the msb to the lsb...
#define AV_PIX_FMT_FLAG_PLANAR
At least one pixel component is not in the first data plane.