1 /* GStreamer android.hardware.Sensor Source 2 * Copyright (C) 2016 SurroundIO 3 * Author: Martin Kelly <martin@surround.io> 4 * 5 * This library is free software; you can redistribute it and/or 6 * modify it under the terms of the GNU Library General Public 7 * License as published by the Free Software Foundation; either 8 * version 2 of the License, or (at your option) any later version. 9 * 10 * This library is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 * Library General Public License for more details. 14 * 15 * You should have received a copy of the GNU Library General Public 16 * License along with this library; if not, write to the 17 * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, 18 * Boston, MA 02110-1301, USA. 19 */ 20 21 #ifndef _GST_AHSSRC_H__ 22 #define _GST_AHSSRC_H__ 23 24 #include <gst/base/gstdataqueue.h> 25 #include <gst/base/gstpushsrc.h> 26 27 #include "gst-android-hardware-sensor.h" 28 29 G_BEGIN_DECLS 30 #define GST_TYPE_AHS_SRC (gst_ahs_src_get_type()) 31 #define GST_AHS_SRC(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_AHS_SRC,GstAHSSrc)) 32 #define GST_AHS_SRC_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_AHS_SRC,GstAHSSrcClass)) 33 #define GST_IS_AHS_SRC(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_AHS_SRC)) 34 #define GST_IS_AHS_SRC_CLASS(obj) (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_AHS_SRC)) 35 typedef struct _GstAHSSrc GstAHSSrc; 36 typedef struct _GstAHSSrcClass GstAHSSrcClass; 37 38 struct _GstAHSSrc 39 { 40 /* < private > */ 41 GstPushSrc parent; 42 43 /* properties */ 44 gint32 sensor_delay; 45 gdouble alpha; 46 guint sample_interval; 47 48 /* sensor type information */ 49 GEnumClass *sensor_enum_class; 50 gint sensor_type; 51 const gchar *sensor_type_name; 52 53 /* JNI wrapper classes */ 54 GstAHSensorManager *manager; 55 GstAHSensor *sensor; 56 GstAHSensorEventListener *listener; 57 58 /* timestamping */ 59 GstClockTime previous_time; 60 gfloat *current_sample; 61 62 /* buffers */ 63 gboolean callback_registered; 64 gint sample_index; 65 gint sample_length; 66 gint buffer_size; 67 68 /* multiprocessing */ 69 GstDataQueue *queue; 70 }; 71 72 struct _GstAHSSrcClass 73 { 74 GstPushSrcClass parent_class; 75 }; 76 77 GType gst_ahs_src_get_type (void); 78 79 G_END_DECLS 80 #endif 81