34 return c ==
' ' || c ==
'\n' || c ==
'\r' || c ==
'\t';
48 while (c !=
'\n' && bs < end) {
57 while (bs < end && !
pnm_space(c) && (s - str) < buf_size - 1) {
67 char buf1[32], tuple_type[32];
68 int h,
w, depth, maxval;
86 }
else if (buf1[1] ==
'f') {
88 }
else if (s->
type==1 || s->
type==4) {
90 }
else if (s->
type==2 || s->
type==5) {
95 }
else if (s->
type==3 || s->
type==6) {
97 }
else if (s->
type==7) {
102 tuple_type[0] =
'\0';
104 pnm_get(s, buf1,
sizeof(buf1));
105 if (!strcmp(buf1,
"WIDTH")) {
106 pnm_get(s, buf1,
sizeof(buf1));
107 w = strtol(buf1,
NULL, 10);
108 }
else if (!strcmp(buf1,
"HEIGHT")) {
109 pnm_get(s, buf1,
sizeof(buf1));
110 h = strtol(buf1,
NULL, 10);
111 }
else if (!strcmp(buf1,
"DEPTH")) {
112 pnm_get(s, buf1,
sizeof(buf1));
113 depth = strtol(buf1,
NULL, 10);
114 }
else if (!strcmp(buf1,
"MAXVAL")) {
115 pnm_get(s, buf1,
sizeof(buf1));
116 maxval = strtol(buf1,
NULL, 10);
117 }
else if (!strcmp(buf1,
"TUPLTYPE") ||
119 !strcmp(buf1,
"TUPLETYPE")) {
120 pnm_get(s, tuple_type,
sizeof(tuple_type));
121 }
else if (!strcmp(buf1,
"ENDHDR")) {
131 if (w <= 0 || h <= 0 || maxval <= 0 || maxval > UINT16_MAX || depth <= 0 || tuple_type[0] ==
'\0' ||
142 }
else if (maxval < 256) {
147 }
else if (depth == 2) {
153 }
else if (depth == 3) {
159 }
else if (depth == 4) {
172 pnm_get(s, buf1,
sizeof(buf1));
174 pnm_get(s, buf1,
sizeof(buf1));
184 pnm_get(s, buf1,
sizeof(buf1));
191 s->
maxval = (1ULL << 32) - 1;
193 pnm_get(s, buf1,
sizeof(buf1));
207 else if (s->
maxval < 1024)
226 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.
#define av_assert0(cond)
assert() equivalent, that is always enabled.
Undefined Behavior In the C some operations are like signed integer dereferencing freed accessing outside allocated Undefined Behavior must not occur in a C it is not safe even if the output of undefined operations is unused The unsafety may seem nit picking but Optimizing compilers have in fact optimized code on the assumption that no undefined Behavior occurs Optimizing code based on wrong assumptions can and has in some cases lead to effects beyond the output of computations The signed integer overflow problem in speed critical code Code which is highly optimized and works with signed integers sometimes has the problem that often the output of the computation does not c
static __device__ float fabsf(float a)
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
simple assert() macros that are a bit more flexible than ISO C assert().
static void pnm_get(PNMContext *sc, char *str, int buf_size)
int av_sscanf(const char *string, const char *format,...)
See libc sscanf manual for more information.
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.
#define AV_PIX_FMT_GRAYF32
int ff_pnm_decode_header(AVCodecContext *avctx, PNMContext *const s)
main external API structure.
#define AV_PIX_FMT_YUV420P10
#define AV_PIX_FMT_YUV420P9
#define AV_PIX_FMT_GBRPF32
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.