summaryrefslogtreecommitdiffstats
path: root/ext
diff options
context:
space:
mode:
Diffstat (limited to 'ext')
-rw-r--r--ext/mimic/gstmimenc.c33
1 files changed, 21 insertions, 12 deletions
diff --git a/ext/mimic/gstmimenc.c b/ext/mimic/gstmimenc.c
index 4a65b9fd..ef60d20d 100644
--- a/ext/mimic/gstmimenc.c
+++ b/ext/mimic/gstmimenc.c
@@ -378,15 +378,15 @@ gst_mimenc_create_tcp_header (GstMimEnc * mimenc, guint32 payload_size,
GST_BUFFER_TIMESTAMP (buf_header) = timestamp;
p[0] = 24;
- *((guchar *) (p + 1)) = paused ? 1 : 0;
- *((guint16 *) (p + 2)) = GUINT16_TO_LE (mimenc->width);
- *((guint16 *) (p + 4)) = GUINT16_TO_LE (mimenc->height);
- *((guint16 *) (p + 6)) = keyframe ? 1 : 0;
- *((guint32 *) (p + 8)) = GUINT32_TO_LE (payload_size);
- *((guint32 *) (p + 12)) = paused ? 0 :
- GUINT32_TO_LE (GST_MAKE_FOURCC ('M', 'L', '2', '0'));
- *((guint32 *) (p + 16)) = 0;
- *((guint32 *) (p + 20)) = timestamp / GST_MSECOND;
+ p[1] = paused ? 1 : 0;
+ GST_WRITE_UINT16_LE (p + 2, mimenc->width);
+ GST_WRITE_UINT16_LE (p + 4, mimenc->height);
+ GST_WRITE_UINT16_LE (p + 6, keyframe ? 1 : 0);
+ GST_WRITE_UINT32_LE (p + 8, payload_size);
+ GST_WRITE_UINT16_LE (p + 12, paused ? 0 :
+ GST_MAKE_FOURCC ('M', 'L', '2', '0'));
+ GST_WRITE_UINT32_LE (p + 16, 0);
+ GST_WRITE_UINT32_LE (p + 20, timestamp / GST_MSECOND);
return buf_header;
}
@@ -593,10 +593,19 @@ gst_mimenc_change_state (GstElement * element, GstStateChange transition)
case GST_STATE_CHANGE_PAUSED_TO_PLAYING:
GST_OBJECT_LOCK (mimenc);
mimenc->stop_paused_mode = FALSE;
- if (mimenc->last_buffer == GST_CLOCK_TIME_NONE)
- mimenc->last_buffer = gst_clock_get_time (GST_ELEMENT_CLOCK (mimenc))
- - GST_ELEMENT_CAST (mimenc)->base_time;
paused_mode = mimenc->paused_mode;
+ if (paused_mode) {
+ if (!GST_ELEMENT_CLOCK (mimenc)) {
+ GST_OBJECT_UNLOCK (mimenc);
+ GST_ELEMENT_ERROR (mimenc, RESOURCE, FAILED,
+ ("Using paused-mode requires a clock, but no clock was provided"
+ " to the element"), (NULL));
+ return GST_STATE_CHANGE_FAILURE;
+ }
+ if (mimenc->last_buffer == GST_CLOCK_TIME_NONE)
+ mimenc->last_buffer = gst_clock_get_time (GST_ELEMENT_CLOCK (mimenc))
+ - GST_ELEMENT_CAST (mimenc)->base_time;
+ }
GST_OBJECT_UNLOCK (mimenc);
if (paused_mode) {
if (!gst_pad_start_task (mimenc->srcpad, paused_mode_task, mimenc)) {