161 lines
4.8 KiB
Diff
161 lines
4.8 KiB
Diff
|
--- 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;
|