mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-10-05 10:12:20 +00:00
rpicamsrc: Add annotation-mode and annotation-text properties
This commit is contained in:
parent
39d212df57
commit
ed22d5cc4e
3 changed files with 41 additions and 3 deletions
|
@ -1,5 +1,6 @@
|
||||||
#include "interface/mmal/util/mmal_util_params.h"
|
#include "interface/mmal/util/mmal_util_params.h"
|
||||||
#include "interface/mmal/mmal_parameters_camera.h"
|
#include "interface/mmal/mmal_parameters_camera.h"
|
||||||
|
#include "RaspiCamControl.h"
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
GST_RPI_CAM_SRC_EXPOSURE_MODE_OFF = MMAL_PARAM_EXPOSUREMODE_OFF,
|
GST_RPI_CAM_SRC_EXPOSURE_MODE_OFF = MMAL_PARAM_EXPOSUREMODE_OFF,
|
||||||
|
@ -77,3 +78,16 @@ typedef enum {
|
||||||
GST_RPI_CAM_SRC_DRC_LEVEL_HIGH = MMAL_PARAMETER_DRC_STRENGTH_HIGH
|
GST_RPI_CAM_SRC_DRC_LEVEL_HIGH = MMAL_PARAMETER_DRC_STRENGTH_HIGH
|
||||||
} GstRpiCamSrcDRCLevel;
|
} GstRpiCamSrcDRCLevel;
|
||||||
|
|
||||||
|
typedef enum /*< flags >*/ {
|
||||||
|
GST_RPI_CAM_SRC_ANNOTATION_MODE_CUSTOM_TEXT = ANNOTATE_USER_TEXT,
|
||||||
|
GST_RPI_CAM_SRC_ANNOTATION_MODE_TEXT = ANNOTATE_APP_TEXT,
|
||||||
|
GST_RPI_CAM_SRC_ANNOTATION_MODE_DATE = ANNOTATE_DATE_TEXT,
|
||||||
|
GST_RPI_CAM_SRC_ANNOTATION_MODE_TIME = ANNOTATE_TIME_TEXT,
|
||||||
|
GST_RPI_CAM_SRC_ANNOTATION_MODE_SHUTTER_SETTINGS = ANNOTATE_SHUTTER_SETTINGS,
|
||||||
|
GST_RPI_CAM_SRC_ANNOTATION_MODE_CAF_SETTINGS = ANNOTATE_CAF_SETTINGS,
|
||||||
|
GST_RPI_CAM_SRC_ANNOTATION_MODE_GAIN_SETTINGS = ANNOTATE_GAIN_SETTINGS,
|
||||||
|
GST_RPI_CAM_SRC_ANNOTATION_MODE_LENS_SETTINGS = ANNOTATE_LENS_SETTINGS,
|
||||||
|
GST_RPI_CAM_SRC_ANNOTATION_MODE_MOTION_SETTINGS = ANNOTATE_MOTION_SETTINGS,
|
||||||
|
GST_RPI_CAM_SRC_ANNOTATION_MODE_FRAME_NUMBER = ANNOTATE_FRAME_NUMBER,
|
||||||
|
GST_RPI_CAM_SRC_ANNOTATION_MODE_BLACK_BACKGROUND = ANNOTATE_BLACK_BACKGROUND
|
||||||
|
} GstRpiCamSrcAnnotationMode;
|
||||||
|
|
|
@ -125,7 +125,7 @@ enum
|
||||||
PROP_SENSOR_MODE,
|
PROP_SENSOR_MODE,
|
||||||
PROP_DRC,
|
PROP_DRC,
|
||||||
PROP_ANNOTATION_MODE,
|
PROP_ANNOTATION_MODE,
|
||||||
PROP_ANNOTATION_STRING
|
PROP_ANNOTATION_TEXT
|
||||||
};
|
};
|
||||||
|
|
||||||
#define CAMERA_DEFAULT 0
|
#define CAMERA_DEFAULT 0
|
||||||
|
@ -394,6 +394,16 @@ gst_rpi_cam_src_class_init (GstRpiCamSrcClass * klass)
|
||||||
gst_rpi_cam_src_sensor_mode_get_type (),
|
gst_rpi_cam_src_sensor_mode_get_type (),
|
||||||
GST_RPI_CAM_SRC_SENSOR_MODE_AUTOMATIC,
|
GST_RPI_CAM_SRC_SENSOR_MODE_AUTOMATIC,
|
||||||
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
|
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
|
||||||
|
g_object_class_install_property (gobject_class, PROP_ANNOTATION_MODE,
|
||||||
|
g_param_spec_flags ("annotation-mode", "Annotation Mode",
|
||||||
|
"Flags to control annotation of the output video",
|
||||||
|
GST_RPI_CAM_TYPE_RPI_CAM_SRC_ANNOTATION_MODE, 0,
|
||||||
|
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
|
||||||
|
g_object_class_install_property (gobject_class, PROP_ANNOTATION_TEXT,
|
||||||
|
g_param_spec_string ("annotation-text", "Annotation Text",
|
||||||
|
"Text string to annotate onto video when annotation-mode flags include 'custom-text'",
|
||||||
|
NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
|
||||||
|
|
||||||
gst_element_class_set_static_metadata (gstelement_class,
|
gst_element_class_set_static_metadata (gstelement_class,
|
||||||
"Raspberry Pi Camera Source", "Source/Video",
|
"Raspberry Pi Camera Source", "Source/Video",
|
||||||
"Raspberry Pi camera module source", "Jan Schmidt <jan@centricular.com>");
|
"Raspberry Pi camera module source", "Jan Schmidt <jan@centricular.com>");
|
||||||
|
@ -539,6 +549,14 @@ gst_rpi_cam_src_set_property (GObject * object, guint prop_id,
|
||||||
case PROP_SENSOR_MODE:
|
case PROP_SENSOR_MODE:
|
||||||
src->capture_config.sensor_mode = g_value_get_enum (value);
|
src->capture_config.sensor_mode = g_value_get_enum (value);
|
||||||
break;
|
break;
|
||||||
|
case PROP_ANNOTATION_MODE:
|
||||||
|
src->capture_config.camera_parameters.enable_annotate = g_value_get_flags (value);
|
||||||
|
break;
|
||||||
|
case PROP_ANNOTATION_TEXT:
|
||||||
|
strncpy (src->capture_config.camera_parameters.annotate_string,
|
||||||
|
g_value_get_string (value), MMAL_CAMERA_ANNOTATE_MAX_TEXT_LEN_V2);
|
||||||
|
src->capture_config.camera_parameters.annotate_string[MMAL_CAMERA_ANNOTATE_MAX_TEXT_LEN_V2 - 1] = '\0';
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||||
break;
|
break;
|
||||||
|
@ -659,6 +677,12 @@ gst_rpi_cam_src_get_property (GObject * object, guint prop_id,
|
||||||
case PROP_SENSOR_MODE:
|
case PROP_SENSOR_MODE:
|
||||||
g_value_set_enum (value, src->capture_config.sensor_mode);
|
g_value_set_enum (value, src->capture_config.sensor_mode);
|
||||||
break;
|
break;
|
||||||
|
case PROP_ANNOTATION_MODE:
|
||||||
|
g_value_set_flags (value, src->capture_config.camera_parameters.enable_annotate);
|
||||||
|
break;
|
||||||
|
case PROP_ANNOTATION_TEXT:
|
||||||
|
g_value_set_string (value, src->capture_config.camera_parameters.annotate_string);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in a new issue