summaryrefslogtreecommitdiff
path: root/src/android/mm/meson.build
blob: eeb5cc2e6a313b2c2ca8a025bbcc53da01946f3a (plain)
1
2
3
4
5
6
7
8
9
# SPDX-License-Identifier: CC0-1.0

platform = get_option('android_platform')
if platform == 'generic'
    android_hal_sources += files(['generic_camera_buffer.cpp'])
elif platform == 'cros'
    android_hal_sources += files(['cros_camera_buffer.cpp'])
    android_deps += [dependency('libcros_camera')]
endif
f='#n44'>44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
 * Copyright (C) 2021, Ideas on Board Oy
 *
 * frame_sink.cpp - Base Frame Sink Class
 */

#include "frame_sink.h"

/**
 * \class FrameSink
 * \brief Abstract class to model a consumer of frames
 *
 * The FrameSink class models the consumer that processes frames after a request
 * completes. It receives requests through processRequest(), and processes them
 * synchronously or asynchronously. This allows frame sinks to hold onto frames
 * for an extended period of time, for instance to display them until a new
 * frame arrives.
 *
 * A frame sink processes whole requests, and is solely responsible for deciding
 * how to handle different frame buffers in case multiple streams are captured.
 */

FrameSink::~FrameSink()
{
}

int FrameSink::configure([[maybe_unused]] const libcamera::CameraConfiguration &config)
{
	return 0;
}

void FrameSink::mapBuffer([[maybe_unused]] libcamera::FrameBuffer *buffer)
{
}

int FrameSink::start()
{
	return 0;
}

int FrameSink::stop()
{
	return 0;
}

/**
 * \fn FrameSink::processRequest()
 * \param[in] request The request
 *
 * This function is called to instruct the sink to process a request. The sink
 * may process the request synchronously or queue it for asynchronous
 * processing.
 *
 * When the request is processed synchronously, this function shall return true.
 * The \a request shall not be accessed by the FrameSink after the function
 * returns.
 *
 * When the request is processed asynchronously, the FrameSink temporarily takes
 * ownership of the \a request. The function shall return false, and the
 * FrameSink shall emit the requestProcessed signal when the request processing
 * completes. If the stop() function is called before the request processing
 * completes, it shall release the request synchronously.
 *
 * \return True if the request has been processed synchronously, false if
 * processing has been queued
 */