1 diff --git a/gstdvbaudiosink.c b/gstdvbaudiosink.c
2 index 2725def..a51d28c 100644
3 --- a/gstdvbaudiosink.c
4 +++ b/gstdvbaudiosink.c
5 @@ -125,8 +125,7 @@ static guint gst_dvbaudiosink_signals[LAST_SIGNAL] = { 0 };
6 "framed =(boolean) true; "
9 - "audio/x-private1-lpcm, " \
10 - "framed =(boolean) true; "
11 + "audio/x-private1-lpcm; "
15 @@ -271,7 +270,9 @@ static void gst_dvbaudiosink_class_init(GstDVBAudioSinkClass *self)
16 gstbasesink_class->event = GST_DEBUG_FUNCPTR(gst_dvbaudiosink_event);
17 gstbasesink_class->unlock = GST_DEBUG_FUNCPTR(gst_dvbaudiosink_unlock);
18 gstbasesink_class->unlock_stop = GST_DEBUG_FUNCPTR(gst_dvbaudiosink_unlock_stop);
19 +#if GST_VERSION_MAJOR < 1
20 gstbasesink_class->set_caps = GST_DEBUG_FUNCPTR(gst_dvbaudiosink_set_caps);
22 gstbasesink_class->get_caps = GST_DEBUG_FUNCPTR(gst_dvbaudiosink_get_caps);
24 element_class->change_state = GST_DEBUG_FUNCPTR(gst_dvbaudiosink_change_state);
25 @@ -426,6 +427,11 @@ static gboolean gst_dvbaudiosink_set_caps(GstBaseSink *basesink, GstCaps *caps)
26 const char *type = gst_structure_get_name(structure);
27 t_audio_type bypass = AUDIOTYPE_UNKNOWN;
29 + if (self->bypass != AUDIOTYPE_UNKNOWN) {
30 + GST_INFO_OBJECT (self, "skip set_caps, should be done only once.");
35 self->aac_adts_header_valid = FALSE;
37 @@ -775,7 +781,9 @@ static gboolean gst_dvbaudiosink_event(GstBaseSink *sink, GstEvent *event)
38 self->flushing = TRUE;
40 write(self->unlockfd[1], "\x01", 1);
41 +#if GST_VERSION_MAJOR >= 1
42 if(self->paused) ret = GST_BASE_SINK_CLASS(parent_class)->event(sink, event);
45 case GST_EVENT_FLUSH_STOP:
46 if (self->fd >= 0) ioctl(self->fd, AUDIO_CLEAR_BUFFER);
47 @@ -793,7 +801,9 @@ static gboolean gst_dvbaudiosink_event(GstBaseSink *sink, GstEvent *event)
50 GST_OBJECT_UNLOCK(self);
51 +#if GST_VERSION_MAJOR >= 1
52 if(self->paused) ret = GST_BASE_SINK_CLASS(parent_class)->event(sink, event);
57 @@ -828,7 +838,9 @@ static gboolean gst_dvbaudiosink_event(GstBaseSink *sink, GstEvent *event)
58 if (pfd[1].revents & POLLIN)
60 GST_DEBUG_OBJECT(self, "got buffer empty from driver!\n");
61 +#if GST_VERSION_MAJOR >= 1
62 ret = GST_BASE_SINK_CLASS(parent_class)->event(sink, event);
67 @@ -899,6 +911,7 @@ static gboolean gst_dvbaudiosink_event(GstBaseSink *sink, GstEvent *event)
71 +#if GST_VERSION_MAJOR >= 1
75 @@ -913,9 +926,12 @@ static gboolean gst_dvbaudiosink_event(GstBaseSink *sink, GstEvent *event)
82 +#if GST_VERSION_MAJOR >= 1
83 ret = GST_BASE_SINK_CLASS(parent_class)->event(sink, event);
88 diff --git a/gstdvbvideosink.c b/gstdvbvideosink.c
89 index a6b0a10..903432c 100644
90 --- a/gstdvbvideosink.c
91 +++ b/gstdvbvideosink.c
92 @@ -299,8 +299,9 @@ static void gst_dvbvideosink_class_init(GstDVBVideoSinkClass *self)
93 gstbasesink_class->event = GST_DEBUG_FUNCPTR (gst_dvbvideosink_event);
94 gstbasesink_class->unlock = GST_DEBUG_FUNCPTR (gst_dvbvideosink_unlock);
95 gstbasesink_class->unlock_stop = GST_DEBUG_FUNCPTR (gst_dvbvideosink_unlock_stop);
96 +#if GST_VERSION_MAJOR < 1
97 gstbasesink_class->set_caps = GST_DEBUG_FUNCPTR (gst_dvbvideosink_set_caps);
100 element_class->change_state = GST_DEBUG_FUNCPTR (gst_dvbvideosink_change_state);
102 gst_dvb_videosink_signals[SIGNAL_GET_DECODER_TIME] =
103 @@ -402,7 +403,9 @@ static gboolean gst_dvbvideosink_event(GstBaseSink *sink, GstEvent *event)
104 self->flushing = TRUE;
105 /* wakeup the poll */
106 write(self->unlockfd[1], "\x01", 1);
107 +#if GST_VERSION_MAJOR >= 1
108 if(self->paused) ret = GST_BASE_SINK_CLASS(parent_class)->event(sink, event);
111 case GST_EVENT_FLUSH_STOP:
112 if (self->fd >= 0) ioctl(self->fd, VIDEO_CLEAR_BUFFER);
113 @@ -414,7 +417,9 @@ static gboolean gst_dvbvideosink_event(GstBaseSink *sink, GstEvent *event)
115 self->flushing = FALSE;
116 GST_OBJECT_UNLOCK(self);
117 +#if GST_VERSION_MAJOR >= 1
118 if(self->paused) ret = GST_BASE_SINK_CLASS(parent_class)->event(sink, event);
123 @@ -449,7 +454,9 @@ static gboolean gst_dvbvideosink_event(GstBaseSink *sink, GstEvent *event)
124 if (pfd[1].revents & POLLIN)
126 GST_DEBUG_OBJECT (self, "got buffer empty from driver!\n");
127 +#if GST_VERSION_MAJOR >= 1
128 ret = GST_BASE_SINK_CLASS(parent_class)->event(sink, event);
133 @@ -513,6 +520,7 @@ static gboolean gst_dvbvideosink_event(GstBaseSink *sink, GstEvent *event)
137 +#if GST_VERSION_MAJOR >= 1
141 @@ -524,8 +532,11 @@ static gboolean gst_dvbvideosink_event(GstBaseSink *sink, GstEvent *event)
147 +#if GST_VERSION_MAJOR >= 1
148 ret = GST_BASE_SINK_CLASS(parent_class)->event(sink, event);
153 @@ -614,6 +625,8 @@ static int video_write(GstBaseSink *sink, GstDVBVideoSink *self, GstBuffer *buff
155 else if (evt.type == VIDEO_EVENT_FRAME_RATE_CHANGED)
157 + self->framerate = evt.u.frame_rate;
158 + GST_INFO_OBJECT(self, "decoder framerate %d", self->framerate);
159 s = gst_structure_new ("eventFrameRateChanged",
160 "frame_rate", G_TYPE_INT, evt.u.frame_rate, NULL);
161 msg = gst_message_new_element (GST_OBJECT(sink), s);
162 @@ -1289,6 +1302,8 @@ static gboolean gst_dvbvideosink_set_caps(GstBaseSink *basesink, GstCaps *caps)
163 GstStructure *structure = gst_caps_get_structure (caps, 0);
164 const char *mimetype = gst_structure_get_name (structure);
165 self->stream_type = STREAMTYPE_UNKNOWN;
166 + self->framerate = -1;
167 + self->no_header = 0;
169 GST_INFO_OBJECT (self, "caps = %" GST_PTR_FORMAT, caps);
171 @@ -1557,6 +1572,10 @@ static gboolean gst_dvbvideosink_set_caps(GstBaseSink *basesink, GstCaps *caps)
172 gst_buffer_ref (self->codec_data);
174 GST_INFO_OBJECT (self, "MIMETYPE video/x-divx vers. 4 -> STREAMTYPE_MPEG4_Part2");
175 +#if GST_VERSION_MAJOR >= 1
176 + self->use_dts = TRUE;
182 @@ -1622,10 +1641,17 @@ static gboolean gst_dvbvideosink_set_caps(GstBaseSink *basesink, GstCaps *caps)
186 + self->framerate = valid_framerates[best];
188 + GST_INFO_OBJECT(self, "framerate %d", self->framerate);
190 fprintf(f, "%d", valid_framerates[best]);
194 + else if (self->framerate == -1)
195 + GST_INFO_OBJECT(self, "no framerate given!");
199 if (self->fd >= 0) ioctl(self->fd, VIDEO_STOP, 0);