vips: moved to github
[openwrt.org/packages.git] / libs / 002-allow-disabling-libjpeg.patch
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
--- a/lib/libv4lconvert/Makefile
+++ b/lib/libv4lconvert/Makefile
@@ -1,6 +1,6 @@
 override CPPFLAGS += -I../include -fvisibility=hidden
 
-LIBS_libv4lconvert = -lrt -lm -ljpeg
+LIBS_libv4lconvert = -lrt -lm
 
 ifeq ($(LINKTYPE),static)
 CONVERT_LIB   = libv4lconvert.a
@@ -10,16 +10,22 @@ override CPPFLAGS += -fPIC
 endif
 
 CONVERT_OBJS  = libv4lconvert.o tinyjpeg.o sn9c10x.o sn9c20x.o pac207.o \
-               jl2005bcd.o \
                mr97310a.o flip.o crop.o jidctflt.o spca561-decompress.o \
                rgbyuv.o sn9c2028-decomp.o spca501.o sq905c.o bayer.o hm12.o \
-               stv0680.o cpia1.o se401.o jpgl.o jpeg.o jpeg_memsrcdest.o \
+               stv0680.o cpia1.o se401.o jpgl.o jpeg.o \
                control/libv4lcontrol.o processing/libv4lprocessing.o \
                processing/whitebalance.o processing/autogain.o \
                processing/gamma.o helper.o
 TARGETS       = $(CONVERT_LIB) libv4lconvert.pc ov511-decomp ov518-decomp
 INCLUDES      = ../include/libv4lconvert.h
 
+ifeq ($(DISABLE_LIBJPEG),1)
+override CFLAGS += -DDISABLE_LIBJPEG
+else
+LIBS_libv4lconvert += -ljpeg
+CONVERT_OBJS += jl2005bcd.o jpeg_memsrcdest.o
+endif
+
 override CPPFLAGS += -DLIBDIR=\"$(LIBDIR)\" -DLIBSUBDIR=\"$(LIBSUBDIR)\"
 
 all: $(TARGETS)
--- a/lib/libv4lconvert/jpeg.c
+++ b/lib/libv4lconvert/jpeg.c
@@ -19,7 +19,9 @@
 #include <errno.h>
 #include <stdlib.h>
 #include "libv4lconvert-priv.h"
+#ifndef DISABLE_LIBJPEG
 #include "jpeg_memsrcdest.h"
+#endif
 
 int v4lconvert_decode_jpeg_tinyjpeg(struct v4lconvert_data *data,
        unsigned char *src, int src_size, unsigned char *dest,
@@ -107,6 +109,8 @@ int v4lconvert_decode_jpeg_tinyjpeg(stru
        return 0;
 }
 
+#ifndef DISABLE_LIBJPEG
+
 static void jerr_error_exit(j_common_ptr cinfo)
 {
        struct v4lconvert_data *data = cinfo->client_data;
@@ -405,3 +409,6 @@ int v4lconvert_decode_jpeg_libjpeg(struc
 
        return result;
 }
+
+#endif
+
--- a/lib/libv4lconvert/libv4lconvert-priv.h
+++ b/lib/libv4lconvert/libv4lconvert-priv.h
@@ -22,7 +22,9 @@
 #include <stdio.h>
 #include <stdint.h>
 #include <sys/types.h>
+#ifndef DISABLE_LIBJPEG
 #include <jpeglib.h>
+#endif
 #include <setjmp.h>
 #include "libv4lconvert.h"
 #include "control/libv4lcontrol.h"
@@ -50,11 +52,13 @@ struct v4lconvert_data {
        int64_t supported_src_formats; /* bitfield */
        char error_msg[V4LCONVERT_ERROR_MSG_SIZE];
        struct jdec_private *tinyjpeg;
+#ifndef DISABLE_LIBJPEG
        struct jpeg_error_mgr jerr;
        int jerr_errno;
        jmp_buf jerr_jmp_state;
        struct jpeg_decompress_struct cinfo;
        int cinfo_initialized;
+#endif
        struct v4l2_frmsizeenum framesizes[V4LCONVERT_MAX_FRAMESIZES];
        unsigned int no_framesizes;
        int bandwidth;
--- a/lib/libv4lconvert/libv4lconvert.c
+++ b/lib/libv4lconvert/libv4lconvert.c
@@ -78,7 +78,9 @@ static const struct v4lconvert_pixfmt su
        { V4L2_PIX_FMT_SN9C2028,         0,      9,      9,     1 },
        { V4L2_PIX_FMT_PAC207,           0,      9,      9,     1 },
        { V4L2_PIX_FMT_MR97310A,         0,      9,      9,     1 },
+#ifndef DISABLE_LIBJPEG
        { V4L2_PIX_FMT_JL2005BCD,        0,      9,      9,     1 },
+#endif
        { V4L2_PIX_FMT_SQ905C,           0,      9,      9,     1 },
        /* special */
        { V4L2_PIX_FMT_SE401,            0,      8,      9,     1 },
@@ -186,8 +188,10 @@ void v4lconvert_destroy(struct v4lconver
                tinyjpeg_set_components(data->tinyjpeg, comps, 3);
                tinyjpeg_free(data->tinyjpeg);
        }
+#ifndef DISABLE_LIBJPEG
        if (data->cinfo_initialized)
                jpeg_destroy_decompress(&data->cinfo);
+#endif
        v4lconvert_helper_cleanup(data);
        free(data->convert1_buf);
        free(data->convert2_buf);
@@ -634,10 +638,13 @@ static int v4lconvert_convert_pixfmt(str
        /* JPG and variants */
        case V4L2_PIX_FMT_MJPEG:
        case V4L2_PIX_FMT_JPEG:
+#ifndef DISABLE_LIBJPEG
                if (data->flags & V4LCONVERT_USE_TINYJPEG) {
+#endif
                        result = v4lconvert_decode_jpeg_tinyjpeg(data,
                                                        src, src_size, dest,
                                                        fmt, dest_pix_fmt, 0);
+#ifndef DISABLE_LIBJPEG
                } else {
                        result = v4lconvert_decode_jpeg_libjpeg(data,
                                                        src, src_size, dest,
@@ -652,6 +659,7 @@ static int v4lconvert_convert_pixfmt(str
                                                        fmt, dest_pix_fmt, 0);
                        }
                }
+#endif
                break;
        case V4L2_PIX_FMT_PJPG:
                result = v4lconvert_decode_jpeg_tinyjpeg(data, src, src_size,
@@ -777,7 +785,9 @@ static int v4lconvert_convert_pixfmt(str
        case V4L2_PIX_FMT_SN9C10X:
        case V4L2_PIX_FMT_PAC207:
        case V4L2_PIX_FMT_MR97310A:
+#ifndef DISABLE_LIBJPEG
        case V4L2_PIX_FMT_JL2005BCD:
+#endif
        case V4L2_PIX_FMT_SN9C2028:
        case V4L2_PIX_FMT_SQ905C:
        case V4L2_PIX_FMT_STV0680: { /* Not compressed but needs some shuffling */
@@ -816,6 +826,7 @@ static int v4lconvert_convert_pixfmt(str
                        }
                        tmpfmt.fmt.pix.pixelformat = V4L2_PIX_FMT_SBGGR8;
                        break;
+#ifndef DISABLE_LIBJPEG
                case V4L2_PIX_FMT_JL2005BCD:
                        if (v4lconvert_decode_jl2005bcd(data, src, src_size,
                                                        tmpbuf,
@@ -826,6 +837,7 @@ static int v4lconvert_convert_pixfmt(str
                        }
                        tmpfmt.fmt.pix.pixelformat = V4L2_PIX_FMT_SRGGB8;
                        break;
+#endif
                case V4L2_PIX_FMT_SN9C2028:
                        v4lconvert_decode_sn9c2028(src, tmpbuf, width, height);
                        tmpfmt.fmt.pix.pixelformat = V4L2_PIX_FMT_SBGGR8;
 
comments