/* SPDX-License-Identifier: LGPL-2.1-or-later */ /* * Copyright (C) 2020, Collabora Ltd. * Author: Nicolas Dufresne * * gstlibcamera-utils.h - GStreamer libcamera Utility Functions */ #ifndef __GST_LIBCAMERA_UTILS_H__ #define __GST_LIBCAMERA_UTILS_H__ #include #include #include GstCaps *gst_libcamera_stream_formats_to_caps(const libcamera::StreamFormats &formats); GstCaps *gst_libcamera_stream_configuration_to_caps(const libcamera::StreamConfiguration &stream_cfg); void gst_libcamera_configure_stream_from_caps(libcamera::StreamConfiguration &stream_cfg, GstCaps *caps); void gst_libcamera_resume_task(GstTask *task); /** * \class GLibLocker * \brief A simple scoped mutex locker for GMutex */ class GLibLocker { public: GLibLocker(GMutex *mutex) : mutex_(mutex) { g_mutex_lock(mutex_); } GLibLocker(GstObject *object) : mutex_(GST_OBJECT_GET_LOCK(object)) { g_mutex_lock(mutex_); } ~GLibLocker() { g_mutex_unlock(mutex_); } private: GMutex *mutex_; }; /** * \class GLibRecLocker * \brief A simple scoped mutex locker for GRecMutex */ class GLibRecLocker { public: GLibRecLocker(GRecMutex *mutex) : mutex_(mutex) { g_rec_mutex_lock(mutex_); } ~GLibRecLocker() { g_rec_mutex_unlock(mutex_); } private: GRecMutex *mutex_; }; #endif /* __GST_LIBCAMERA_UTILS_H__ */ git repository hosting on libcamera.org
summaryrefslogtreecommitdiff
blob: 9a2c2fb2fbb119c9e7659ef97767a7361bb6a104 (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
/* SPDX-License-Identifier: LGPL-2.1-or-later */
/*
 * Copyright (C) 2023, Ideas On Board Oy
 *
 * orientation.h - Image orientation
 */

#pragma once

#include <iostream>

namespace libcamera {

enum class Orientation {
	/* EXIF tag 274 starts from '1' */
	Rotate0 = 1,
	Rotate0Mirror,
	Rotate180,
	Rotate180Mirror,
	Rotate90Mirror,
	Rotate270,
	Rotate270Mirror,
	Rotate90,
};

Orientation orientationFromRotation(int angle, bool *success = nullptr);

std::ostream &operator<<(std::ostream &out, const Orientation &orientation);

} /* namespace libcamera */