diff --git a/src/libs/device.c b/src/libs/device.c index 6e1d57c..e072b41 100644 --- a/src/libs/device.c +++ b/src/libs/device.c @@ -194,7 +194,8 @@ int us_device_open(us_device_s *dev) { if (_device_open_queue_buffers(dev) < 0) { goto error; } - if (dev->dma_export) { + if (dev->dma_export && !us_is_jpeg(run->format)) { + // uStreamer doesn't have any component that could handle JPEG capture via DMA run->dma = !_device_open_export_to_dma(dev); if (!run->dma && dev->dma_required) { goto error; diff --git a/src/ustreamer/stream.c b/src/ustreamer/stream.c index a3a5b93..0587c7f 100644 --- a/src/ustreamer/stream.c +++ b/src/ustreamer/stream.c @@ -245,7 +245,7 @@ static us_workers_pool_s *_stream_init_loop(us_stream_s *stream) { stream->dev->dma_export = ( stream->enc->type == US_ENCODER_TYPE_M2M_VIDEO || stream->enc->type == US_ENCODER_TYPE_M2M_IMAGE - || (_RUN(h264) && !us_is_jpeg(stream->dev->run->format)) + || _RUN(h264) != NULL ); if (us_device_open(stream->dev) == 0) { return us_encoder_workers_pool_init(stream->enc, stream->dev);