#define DEFAULT_PROP_DEVICE_NAME NULL
#define DEFAULT_PROP_DEVICE_FD -1
#define DEFAULT_PROP_FLAGS 0
-#define DEFAULT_PROP_TV_NORM 0
+#define DEFAULT_PROP_NORM NULL
#define DEFAULT_PROP_CHANNEL NULL
#define DEFAULT_PROP_FREQUENCY 0
return v4l2_device_type;
}
-#define GST_TYPE_V4L2_TV_NORM (gst_v4l2_tv_norm_get_type ())
-static GType
-gst_v4l2_tv_norm_get_type (void)
-{
- static GType v4l2_tv_norm = 0;
-
- if (!v4l2_tv_norm) {
- static const GEnumValue tv_norms[] = {
- {0, "none", "none"},
- {V4L2_STD_NTSC, "NTSC", "NTSC"},
- {V4L2_STD_NTSC_M, "NTSC-M", "NTSC-M"},
- {V4L2_STD_NTSC_M_JP, "NTSC-M-JP", "NTSC-M-JP"},
- {V4L2_STD_NTSC_M_KR, "NTSC-M-KR", "NTSC-M-KR"},
- {V4L2_STD_NTSC_443, "NTSC-443", "NTSC-443"},
- {V4L2_STD_PAL, "PAL", "PAL"},
- {V4L2_STD_PAL_BG, "PAL-BG", "PAL-BG"},
- {V4L2_STD_PAL_B, "PAL-B", "PAL-B"},
- {V4L2_STD_PAL_B1, "PAL-B1", "PAL-B1"},
- {V4L2_STD_PAL_G, "PAL-G", "PAL-G"},
- {V4L2_STD_PAL_H, "PAL-H", "PAL-H"},
- {V4L2_STD_PAL_I, "PAL-I", "PAL-I"},
- {V4L2_STD_PAL_DK, "PAL-DK", "PAL-DK"},
- {V4L2_STD_PAL_D, "PAL-D", "PAL-D"},
- {V4L2_STD_PAL_D1, "PAL-D1", "PAL-D1"},
- {V4L2_STD_PAL_K, "PAL-K", "PAL-K"},
- {V4L2_STD_PAL_M, "PAL-M", "PAL-M"},
- {V4L2_STD_PAL_N, "PAL-N", "PAL-N"},
- {V4L2_STD_PAL_Nc, "PAL-Nc", "PAL-Nc"},
- {V4L2_STD_PAL_60, "PAL-60", "PAL-60"},
- {V4L2_STD_SECAM, "SECAM", "SECAM"},
- {V4L2_STD_SECAM_B, "SECAM-B", "SECAM-B"},
- {V4L2_STD_SECAM_G, "SECAM-G", "SECAM-G"},
- {V4L2_STD_SECAM_H, "SECAM-H", "SECAM-H"},
- {V4L2_STD_SECAM_DK, "SECAM-DK", "SECAM-DK"},
- {V4L2_STD_SECAM_D, "SECAM-D", "SECAM-D"},
- {V4L2_STD_SECAM_K, "SECAM-K", "SECAM-K"},
- {V4L2_STD_SECAM_K1, "SECAM-K1", "SECAM-K1"},
- {V4L2_STD_SECAM_L, "SECAM-L", "SECAM-L"},
- {V4L2_STD_SECAM_LC, "SECAM-Lc", "SECAM-Lc"},
- {0, NULL, NULL}
- };
-
- v4l2_tv_norm = g_enum_register_static ("V4L2_TV_norms", tv_norms);
- }
-
- return v4l2_tv_norm;
-}
-
void
gst_v4l2_object_install_properties_helper (GObjectClass * gobject_class,
const char *default_device)
"Hue or color balance", G_MININT,
G_MAXINT, 0,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | GST_PARAM_CONTROLLABLE));
-
- g_object_class_install_property (gobject_class, PROP_TV_NORM,
- g_param_spec_enum ("norm", "TV norm",
- "video standard",
- GST_TYPE_V4L2_TV_NORM, DEFAULT_PROP_TV_NORM,
- G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
}
GstV4l2Object *
if (v4l2object->channel)
g_free (v4l2object->channel);
+ if (v4l2object->norm)
+ g_free (v4l2object->norm);
+
if (v4l2object->formats) {
gst_v4l2_object_clear_format_list (v4l2object);
}
v4l2object->norm = g_value_dup_string (value);
}
break;
- case PROP_TV_NORM:
- v4l2object->tv_norm = g_value_get_enum (value);
- break;
case PROP_CHANNEL:
if (GST_V4L2_IS_OPEN (v4l2object)) {
GstTuner *tuner = GST_TUNER (v4l2object->element);
return TRUE;
}
break;
- case PROP_TV_NORM:
- g_value_set_enum (value, v4l2object->tv_norm);
- break;
default:
return FALSE;
break;
tuner = GST_TUNER (v4l2object->element);
- if (v4l2object->tv_norm)
- norm = gst_v4l2_tuner_get_norm_by_std_id (v4l2object, v4l2object->tv_norm);
- GST_DEBUG_OBJECT (v4l2object->element, "tv_norm=%llx, norm=%p",
- v4l2object->tv_norm, norm);
+ if (v4l2object->norm)
+ norm = gst_tuner_find_norm_by_name (tuner, v4l2object->norm);
if (norm) {
gst_tuner_set_norm (tuner, norm);
} else {
norm =
GST_TUNER_NORM (gst_tuner_get_norm (GST_TUNER (v4l2object->element)));
if (norm) {
- v4l2object->tv_norm =
- gst_v4l2_tuner_get_std_id_by_norm (v4l2object, norm);
+ g_free (v4l2object->norm);
+ v4l2object->norm = g_strdup (norm->label);
gst_tuner_norm_changed (tuner, norm);
}
}
}
/* Since we can't get framerate directly, try to use the current norm */
- if (v4l2object->tv_norm && v4l2object->norms) {
+ if (v4l2object->norm && v4l2object->norms) {
GList *norms;
GstTunerNorm *norm = NULL;
- GstTunerNorm *current =
- gst_v4l2_tuner_get_norm_by_std_id (v4l2object, v4l2object->tv_norm);
for (norms = v4l2object->norms; norms != NULL; norms = norms->next) {
norm = (GstTunerNorm *) norms->data;
- if (!strcmp (norm->label, current->label))
+ if (!strcmp (norm->label, v4l2object->norm))
break;
}
/* If it's possible, set framerate to that (discrete) value */
#include "gstv4l2colorbalance.h"
-#include "gstv4l2tuner.h"
#ifdef HAVE_XVIDEO
#include "gstv4l2xoverlay.h"
#endif
GST_IMPLEMENT_V4L2_PROBE_METHODS (GstV4l2SinkClass, gst_v4l2sink);
GST_IMPLEMENT_V4L2_COLOR_BALANCE_METHODS (GstV4l2Sink, gst_v4l2sink);
-GST_IMPLEMENT_V4L2_TUNER_METHODS (GstV4l2Sink, gst_v4l2sink);
#ifdef HAVE_XVIDEO
GST_IMPLEMENT_V4L2_XOVERLAY_METHODS (GstV4l2Sink, gst_v4l2sink);
#endif
{
GstV4l2Object *v4l2object = GST_V4L2SINK (iface)->v4l2object;
- g_assert (iface_type == GST_TYPE_TUNER ||
#ifdef HAVE_XVIDEO
- iface_type == GST_TYPE_X_OVERLAY ||
- iface_type == GST_TYPE_NAVIGATION ||
-#endif
+ g_assert (iface_type == GST_TYPE_X_OVERLAY ||
iface_type == GST_TYPE_COLOR_BALANCE ||
iface_type == GST_TYPE_VIDEO_ORIENTATION);
+#else
+ g_assert (iface_type == GST_TYPE_COLOR_BALANCE ||
+ iface_type == GST_TYPE_VIDEO_ORIENTATION);
+#endif
if (v4l2object->video_fd == -1)
return FALSE;
NULL,
NULL,
};
- static const GInterfaceInfo v4l2_tuner_info = {
- (GInterfaceInitFunc) gst_v4l2sink_tuner_interface_init,
- NULL,
- NULL,
- };
#ifdef HAVE_XVIDEO
static const GInterfaceInfo v4l2_xoverlay_info = {
(GInterfaceInitFunc) gst_v4l2sink_xoverlay_interface_init,
g_type_add_interface_static (type,
GST_TYPE_IMPLEMENTS_INTERFACE, &v4l2iface_info);
- g_type_add_interface_static (type, GST_TYPE_TUNER, &v4l2_tuner_info);
#ifdef HAVE_XVIDEO
g_type_add_interface_static (type, GST_TYPE_X_OVERLAY, &v4l2_xoverlay_info);
g_type_add_interface_static (type,