Go to the documentation of this file.
32 return c ==
' ' ||
c ==
'\n' ||
c ==
'\r' ||
c ==
'\t';
46 while (
c !=
'\n' && bs <
end) {
67 char buf1[32], tuple_type[32];
68 int h,
w, depth, maxval;
76 if (
s->type==1 ||
s->type==4) {
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")) {
101 depth = strtol(buf1,
NULL, 10);
102 }
else if (!strcmp(buf1,
"MAXVAL")) {
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")) {
119 if (
w <= 0 ||
h <= 0 || maxval <= 0 || maxval > UINT16_MAX || depth <= 0 || tuple_type[0] ==
'\0' ||
130 }
else if (maxval < 256) {
135 }
else if (depth == 2) {
141 }
else if (depth == 3) {
147 }
else if (depth == 4) {
173 s->maxval = atoi(buf1);
174 if (
s->maxval <= 0 ||
s->maxval > UINT16_MAX) {
178 if (
s->maxval >= 256) {
186 else if (
s->maxval < 1024)
204 if ((avctx->
width & 1) != 0)
static int pnm_space(int c)
const AVPixFmtDescriptor * av_pix_fmt_desc_get(enum AVPixelFormat pix_fmt)
static av_cold int end(AVCodecContext *avctx)
@ AV_PIX_FMT_MONOWHITE
Y , 1bpp, 0 is white, 1 is black, in each byte pixels are ordered from the msb to the lsb.
#define AV_PIX_FMT_YUV420P10
static void pnm_get(PNMContext *sc, char *str, int buf_size)
#define AV_PIX_FMT_GRAY16
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
#define AV_PIX_FMT_YUV420P9
#define AV_PIX_FMT_YUV420P16
@ AV_PIX_FMT_YUV420P
planar YUV 4:2:0, 12bpp, (1 Cr & Cb sample per 2x2 Y samples)
@ AV_PIX_FMT_RGBA
packed RGBA 8:8:8:8, 32bpp, RGBARGBA...
@ AV_PIX_FMT_GRAY8A
alias for AV_PIX_FMT_YA8
#define AV_PIX_FMT_RGBA64
@ AV_PIX_FMT_MONOBLACK
Y , 1bpp, 0 is black, 1 is white, in each byte pixels are ordered from the msb to the lsb.
@ AV_PIX_FMT_GRAY8
Y , 8bpp.
uint64_t flags
Combination of AV_PIX_FMT_FLAG_...
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
@ AV_PIX_FMT_RGB24
packed RGB 8:8:8, 24bpp, RGBRGB...
enum AVPixelFormat pix_fmt
Pixel format, see AV_PIX_FMT_xxx.
main external API structure.
#define AV_PIX_FMT_FLAG_PLANAR
At least one pixel component is not in the first data plane.
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.
int ff_pnm_decode_header(AVCodecContext *avctx, PNMContext *const s)
int width
picture width / height.
#define AVERROR_INVALIDDATA
Invalid data found when processing input.
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...