diff --git a/src/libs/common/frame.h b/src/libs/common/frame.h index a4f3020..9e201e0 100644 --- a/src/libs/common/frame.h +++ b/src/libs/common/frame.h @@ -74,3 +74,7 @@ bool frame_compare(const frame_s *a, const frame_s *b); unsigned frame_get_padding(const frame_s *frame); const char *fourcc_to_string(unsigned format, char *buf, size_t size); + +inline bool is_jpeg(unsigned format) { + return (format == V4L2_PIX_FMT_JPEG || format == V4L2_PIX_FMT_MJPEG); +} diff --git a/src/libs/common/unjpeg.c b/src/libs/common/unjpeg.c index 716e1e2..7789ebf 100644 --- a/src/libs/common/unjpeg.c +++ b/src/libs/common/unjpeg.c @@ -34,6 +34,8 @@ static void _jpeg_error_handler(j_common_ptr jpeg); int unjpeg(const frame_s *src, frame_s *dest, bool decode) { + assert(is_jpeg(src->format)); + volatile int retval = 0; struct jpeg_decompress_struct jpeg; diff --git a/src/ustreamer/device.c b/src/ustreamer/device.c index 680b800..c3394aa 100644 --- a/src/ustreamer/device.c +++ b/src/ustreamer/device.c @@ -582,7 +582,7 @@ static void _device_open_hw_fps(device_s *dev) { static void _device_open_jpeg_quality(device_s *dev) { unsigned quality = 0; - if (RUN(format) == V4L2_PIX_FMT_MJPEG || RUN(format) == V4L2_PIX_FMT_JPEG) { + if (is_jpeg(RUN(format))) { struct v4l2_jpegcompression comp; MEMSET_ZERO(comp); diff --git a/src/ustreamer/encoder.c b/src/ustreamer/encoder.c index c86553a..0d3ff96 100644 --- a/src/ustreamer/encoder.c +++ b/src/ustreamer/encoder.c @@ -96,13 +96,13 @@ void encoder_prepare(encoder_s *enc, device_s *dev) { ER(n_workers) = min_u(enc->n_workers, DR(n_buffers)); - if ((DR(format) == V4L2_PIX_FMT_MJPEG || DR(format) == V4L2_PIX_FMT_JPEG) && type != ENCODER_TYPE_HW) { + if (is_jpeg(DR(format)) && type != ENCODER_TYPE_HW) { LOG_INFO("Switching to HW encoder: the input is (M)JPEG ..."); type = ENCODER_TYPE_HW; } if (type == ENCODER_TYPE_HW) { - if (DR(format) != V4L2_PIX_FMT_MJPEG && DR(format) != V4L2_PIX_FMT_JPEG) { + if (!is_jpeg(DR(format))) { LOG_INFO("Switching to CPU encoder: the input format is not (M)JPEG ..."); goto use_cpu; } diff --git a/src/ustreamer/encoders/hw/encoder.c b/src/ustreamer/encoders/hw/encoder.c index 73dd611..5c6f332 100644 --- a/src/ustreamer/encoders/hw/encoder.c +++ b/src/ustreamer/encoders/hw/encoder.c @@ -33,9 +33,7 @@ static bool _is_huffman(const uint8_t *data); void hw_encoder_compress(const frame_s *src, frame_s *dest) { - if (src->format != V4L2_PIX_FMT_MJPEG && src->format != V4L2_PIX_FMT_JPEG) { - assert(0 && "Unsupported input format for HW encoder"); - } + assert(is_jpeg(src->format)); _copy_plus_huffman(src, dest); } diff --git a/src/ustreamer/h264/encoder.c b/src/ustreamer/h264/encoder.c index a2aa589..1736bee 100644 --- a/src/ustreamer/h264/encoder.c +++ b/src/ustreamer/h264/encoder.c @@ -263,7 +263,7 @@ int h264_encoder_compress(h264_encoder_s *enc, const frame_s *src, frame_s *dest dest->format = V4L2_PIX_FMT_H264; dest->stride = 0; - if (src->format == V4L2_PIX_FMT_MJPEG || src->format == V4L2_PIX_FMT_JPEG) { + if (is_jpeg(src->format)) { LOG_DEBUG("H264: Input frame format is JPEG; decoding ..."); if (unjpeg(src, RUN(tmp), true) < 0) { return -1;