in gst/gst-kvs-plugin/src/GstPlugin.c [179:379]
VOID gst_kvs_plugin_class_init(GstKvsPluginClass* klass)
{
GObjectClass* gobject_class;
GstElementClass* gstelement_class;
gobject_class = G_OBJECT_CLASS(klass);
gstelement_class = GST_ELEMENT_CLASS(klass);
gobject_class->set_property = gst_kvs_plugin_set_property;
gobject_class->get_property = gst_kvs_plugin_get_property;
gobject_class->finalize = gst_kvs_plugin_finalize;
g_object_class_install_property(gobject_class, PROP_STREAM_NAME,
g_param_spec_string("stream-name", "Stream Name", "Name of the destination stream", DEFAULT_STREAM_NAME,
(GParamFlags)(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
g_object_class_install_property(gobject_class, PROP_CHANNEL_NAME,
g_param_spec_string("channel-name", "Channel Name", "Name of the signaling channel", DEFAULT_CHANNEL_NAME,
(GParamFlags)(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
g_object_class_install_property(gobject_class, PROP_RETENTION_PERIOD,
g_param_spec_uint("retention-period", "Retention Period", "Length of time stream is preserved. Unit: hours", 0,
G_MAXUINT, DEFAULT_RETENTION_PERIOD_HOURS,
(GParamFlags)(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
g_object_class_install_property(gobject_class, PROP_STREAMING_TYPE,
g_param_spec_enum("streaming-type", "Streaming Type", "KVS Producer streaming type",
GST_TYPE_KVS_PLUGIN_STREAMING_TYPE,
DEFAULT_STREAMING_TYPE, (GParamFlags)(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
g_object_class_install_property(gobject_class, PROP_WEBRTC_CONNECTION_MODE,
g_param_spec_enum("webrtc-connection-mode", "WebRTC connection mode",
"WebRTC connection mode - Default, Turn only, P2P only",
GST_TYPE_KVS_PLUGIN_WEBRTC_CONNECTION_MODE,
DEFAULT_WEBRTC_CONNECTION_MODE, (GParamFlags)(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
g_object_class_install_property(gobject_class, PROP_CONTENT_TYPE,
g_param_spec_string("content-type", "Content Type", "content type", MKV_H264_CONTENT_TYPE,
(GParamFlags)(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
g_object_class_install_property(gobject_class, PROP_MAX_LATENCY,
g_param_spec_uint("max-latency", "Max Latency", "Max Latency. Unit: seconds", 0, G_MAXUINT,
DEFAULT_MAX_LATENCY_SECONDS, (GParamFlags)(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
g_object_class_install_property(gobject_class, PROP_FRAGMENT_DURATION,
g_param_spec_uint("fragment-duration", "Fragment Duration", "Fragment Duration. Unit: miliseconds", 0, G_MAXUINT,
DEFAULT_FRAGMENT_DURATION_MILLISECONDS,
(GParamFlags)(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
g_object_class_install_property(gobject_class, PROP_TIMECODE_SCALE,
g_param_spec_uint("timecode-scale", "Timecode Scale", "Timecode Scale. Unit: milliseconds", 0, G_MAXUINT,
DEFAULT_TIMECODE_SCALE_MILLISECONDS,
(GParamFlags)(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
g_object_class_install_property(gobject_class, PROP_KEY_FRAME_FRAGMENTATION,
g_param_spec_boolean("key-frame-fragmentation", "Do key frame fragmentation", "If true, generate new fragment on each keyframe, otherwise generate new fragment on first keyframe after fragment-duration has passed.",
DEFAULT_KEY_FRAME_FRAGMENTATION,
(GParamFlags)(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
g_object_class_install_property(gobject_class, PROP_FRAME_TIMECODES,
g_param_spec_boolean("frame-timecodes", "Do frame timecodes", "Do frame timecodes", DEFAULT_FRAME_TIMECODES,
(GParamFlags)(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
g_object_class_install_property(gobject_class, PROP_ABSOLUTE_FRAGMENT_TIMES,
g_param_spec_boolean("absolute-fragment-times", "Use absolute fragment time", "Use absolute fragment time",
DEFAULT_ABSOLUTE_FRAGMENT_TIMES, (GParamFlags)(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
g_object_class_install_property(gobject_class, PROP_FRAGMENT_ACKS,
g_param_spec_boolean("fragment-acks", "Do fragment acks", "Do fragment acks", DEFAULT_FRAGMENT_ACKS,
(GParamFlags)(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
g_object_class_install_property(gobject_class, PROP_RESTART_ON_ERROR,
g_param_spec_boolean("restart-on-error", "Do restart on error", "Do restart on error", DEFAULT_RESTART_ON_ERROR,
(GParamFlags)(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
g_object_class_install_property(gobject_class, PROP_RECALCULATE_METRICS,
g_param_spec_boolean("recalculate-metrics", "Do recalculate metrics", "Do recalculate metrics",
DEFAULT_RECALCULATE_METRICS, (GParamFlags)(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
g_object_class_install_property(gobject_class, PROP_ADAPT_CPD_NALS_TO_AVC,
g_param_spec_boolean("adapt-cpd-nals", "Whether to adapt CPD NALs from Annex-B to AvCC format", "Adapt CPD NALs",
DEFAULT_ADAPT_CPD_NALS, (GParamFlags)(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
g_object_class_install_property(gobject_class, PROP_ADAPT_FRAME_NALS_TO_AVC,
g_param_spec_boolean("adapt-frame-nals", "Whether to adapt Frame NALs from Annex-B to AvCC format",
"Adapt Frame NALs", DEFAULT_ADAPT_FRAME_NALS,
(GParamFlags)(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
g_object_class_install_property(gobject_class, PROP_FRAMERATE,
g_param_spec_uint("framerate", "Framerate", "Framerate", 0, G_MAXUINT, DEFAULT_STREAM_FRAMERATE,
(GParamFlags)(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
g_object_class_install_property(gobject_class, PROP_AVG_BANDWIDTH_BPS,
g_param_spec_uint("avg-bandwidth-bps", "Average bandwidth bps", "Average bandwidth bps", 0, G_MAXUINT,
DEFAULT_AVG_BANDWIDTH_BPS, (GParamFlags)(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
g_object_class_install_property(gobject_class, PROP_BUFFER_DURATION,
g_param_spec_uint("buffer-duration", "Buffer duration", "Buffer duration. Unit: seconds", 0, G_MAXUINT,
DEFAULT_BUFFER_DURATION_SECONDS, (GParamFlags)(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
g_object_class_install_property(gobject_class, PROP_REPLAY_DURATION,
g_param_spec_uint("replay-duration", "Replay duration", "Replay duration. Unit: seconds", 0, G_MAXUINT,
DEFAULT_REPLAY_DURATION_SECONDS, (GParamFlags)(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
g_object_class_install_property(gobject_class, PROP_CONNECTION_STALENESS,
g_param_spec_uint("connection-staleness", "Connection staleness", "Connection staleness. Unit: seconds", 0,
G_MAXUINT, DEFAULT_CONNECTION_STALENESS_SECONDS,
(GParamFlags)(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
g_object_class_install_property(gobject_class, PROP_CODEC_ID,
g_param_spec_string("codec-id", "Codec ID", "Codec ID",
DEFAULT_CODEC_ID_H264,
(GParamFlags)(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
g_object_class_install_property(gobject_class, PROP_ACCESS_KEY,
g_param_spec_string("access-key", "Access Key", "AWS Access Key", DEFAULT_ACCESS_KEY,
(GParamFlags)(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
g_object_class_install_property(gobject_class, PROP_SECRET_KEY,
g_param_spec_string("secret-key", "Secret Key", "AWS Secret Key", DEFAULT_SECRET_KEY,
(GParamFlags)(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
g_object_class_install_property(gobject_class, PROP_AWS_REGION,
g_param_spec_string("aws-region", "AWS Region", "AWS Region",
DEFAULT_REGION,
(GParamFlags)(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
g_object_class_install_property(gobject_class, PROP_ROTATION_PERIOD,
g_param_spec_uint("rotation-period", "Rotation Period", "Rotation Period. Unit: seconds", 0, G_MAXUINT,
DEFAULT_ROTATION_PERIOD_SECONDS, (GParamFlags)(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
g_object_class_install_property(gobject_class, PROP_LOG_LEVEL,
g_param_spec_uint("log-level", "Logging Level", "Logging Verbosity Level", LOG_LEVEL_VERBOSE,
LOG_LEVEL_SILENT + 1, LOG_LEVEL_SILENT + 1,
(GParamFlags)(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
g_object_class_install_property(gobject_class, PROP_FILE_LOG_PATH,
g_param_spec_string("log-path", "Log path",
"Specifying the directory where the file-based logger will store the files. ",
DEFAULT_FILE_LOG_PATH, (GParamFlags)(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
g_object_class_install_property(gobject_class, PROP_STORAGE_SIZE,
g_param_spec_uint("storage-size", "Storage Size", "Storage Size. Unit: MB", 0, G_MAXUINT, DEFAULT_STORAGE_SIZE_MB,
(GParamFlags)(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
g_object_class_install_property(gobject_class, PROP_CREDENTIAL_FILE_PATH,
g_param_spec_string("credential-path", "Credential File Path", "Credential File Path",
DEFAULT_CREDENTIAL_FILE_PATH, (GParamFlags)(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
g_object_class_install_property(gobject_class, PROP_IOT_CERTIFICATE,
g_param_spec_boxed("iot-certificate", "Iot Certificate", "Use aws iot certificate to obtain credentials",
GST_TYPE_STRUCTURE, (GParamFlags)(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
g_object_class_install_property(gobject_class, PROP_STREAM_TAGS,
g_param_spec_boxed("stream-tags", "Stream Tags", "key-value pair that you can define and assign to each stream",
GST_TYPE_STRUCTURE, (GParamFlags)(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
g_object_class_install_property(gobject_class, PROP_FILE_START_TIME,
g_param_spec_uint64("file-start-time", "File Start Time", "Epoch time that the file starts in kinesis video stream. By default, current time is used. Unit: Seconds",
0, G_MAXULONG, 0,
(GParamFlags)(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
g_object_class_install_property(gobject_class, PROP_DISABLE_BUFFER_CLIPPING,
g_param_spec_boolean("disable-buffer-clipping", "Disable Buffer Clipping",
"Set to true only if your src/mux elements produce GST_CLOCK_TIME_NONE for segment start times. It is non-standard "
"behavior to set this to true, only use if there are known issues with your src/mux segment start/stop times.",
DEFAULT_DISABLE_BUFFER_CLIPPING,
(GParamFlags)(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
g_object_class_install_property(gobject_class, PROP_TRICKLE_ICE,
g_param_spec_boolean("trickle-ice", "Enable Trickle ICE", "Whether to use tricle ICE mode",
DEFAULT_TRICKLE_ICE_MODE, (GParamFlags)(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
g_object_class_install_property(gobject_class, PROP_ENABLE_STREAMING,
g_param_spec_boolean("enable-streaming", "Enable Streaming", "Whether to enable streaming frames to KVS",
DEFAULT_ENABLE_STREAMING, (GParamFlags)(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
g_object_class_install_property(gobject_class, PROP_WEBRTC_CONNECT,
g_param_spec_boolean("connect-webrtc", "WebRTC Connect", "Whether to connect to WebRTC signaling channel",
DEFAULT_WEBRTC_CONNECT, (GParamFlags)(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
g_object_class_install_property(gobject_class, PROP_STREAM_CREATE_TIMEOUT,
g_param_spec_uint("stream-create-timeout", "Stream creation timeout", "Stream create timeout. Unit: seconds", 0,
G_MAXUINT, DEFAULT_STREAM_CREATE_TIMEOUT_SECONDS,
(GParamFlags)(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
g_object_class_install_property(gobject_class, PROP_STREAM_STOP_TIMEOUT,
g_param_spec_uint("stream-stop-timeout", "Stream stop timeout", "Stream stop timeout. Unit: seconds", 0,
G_MAXUINT, DEFAULT_STREAM_STOP_TIMEOUT_SECONDS,
(GParamFlags)(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
gst_element_class_set_static_metadata(gstelement_class, "KVS Plugin", "Sink/Video/Network", "GStreamer AWS KVS plugin",
"AWS KVS <kinesis-video-support@amazon.com>");
gst_element_class_add_pad_template(gstelement_class, gst_static_pad_template_get(&audiosink_templ));
gst_element_class_add_pad_template(gstelement_class, gst_static_pad_template_get(&videosink_templ));
gstelement_class->change_state = GST_DEBUG_FUNCPTR(gst_kvs_plugin_change_state);
gstelement_class->request_new_pad = GST_DEBUG_FUNCPTR(gst_kvs_plugin_request_new_pad);
gstelement_class->release_pad = GST_DEBUG_FUNCPTR(gst_kvs_plugin_release_pad);
}