summaryrefslogtreecommitdiff
path: root/src/apps/cam/frame_sink.h
blob: 11105c6c191e0f10efde8530ca96bcc149ade8b5 (plain)
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
/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
 * Copyright (C) 2021, Ideas on Board Oy
 *
 * Base Frame Sink Class
 */

#pragma once

#include <libcamera/base/signal.h>

namespace libcamera {
class CameraConfiguration;
class FrameBuffer;
class Request;
} /* namespace libcamera */

class FrameSink
{
public:
	virtual ~FrameSink();

	virtual int configure(const libcamera::CameraConfiguration &config);

	virtual void mapBuffer(libcamera::FrameBuffer *buffer);

	virtual int start();
	virtual int stop();

	virtual bool processRequest(libcamera::Request *request) = 0;
	libcamera::Signal<libcamera::Request *> requestProcessed;
};
='n67' href='#n67'>67 68 69 70 71 72 73 74 75 76 77 78 79
libcamera_sources = files([
    'buffer.cpp',
    'camera.cpp',
    'camera_manager.cpp',
    'camera_sensor.cpp',
    'device_enumerator.cpp',
    'device_enumerator_sysfs.cpp',
    'event_dispatcher.cpp',
    'event_dispatcher_poll.cpp',
    'event_notifier.cpp',
    'formats.cpp',
    'geometry.cpp',
    'ipa_interface.cpp',
    'ipa_manager.cpp',
    'ipa_module.cpp',
    'log.cpp',
    'media_device.cpp',
    'media_object.cpp',
    'object.cpp',
    'pipeline_handler.cpp',
    'request.cpp',
    'signal.cpp',
    'stream.cpp',
    'timer.cpp',
    'utils.cpp',
    'v4l2_device.cpp',
    'v4l2_subdevice.cpp',
])

libcamera_headers = files([
    'include/camera_sensor.h',
    'include/device_enumerator.h',
    'include/device_enumerator_sysfs.h',
    'include/device_enumerator_udev.h',
    'include/event_dispatcher_poll.h',
    'include/formats.h',
    'include/ipa_manager.h',
    'include/ipa_module.h',
    'include/log.h',
    'include/media_device.h',
    'include/media_object.h',
    'include/pipeline_handler.h',
    'include/utils.h',
    'include/v4l2_device.h',
    'include/v4l2_subdevice.h',
])

libcamera_internal_includes =  include_directories('include')

includes = [
    libcamera_includes,
    libcamera_internal_includes,
]

subdir('pipeline')

libudev = dependency('libudev', required : false)

if libudev.found()
    config_h.set('HAVE_LIBUDEV', 1)
    libcamera_sources += files([
        'device_enumerator_udev.cpp',
    ])
endif

libcamera_deps = [
    cc.find_library('dl'),
    libudev,
]

libcamera = shared_library('camera',
                           libcamera_sources,
                           install : true,
                           include_directories : includes,
                           dependencies : libcamera_deps)

libcamera_dep = declare_dependency(sources : [libcamera_api, libcamera_h],
                                   include_directories : libcamera_includes,
                                   link_with : libcamera)