summaryrefslogtreecommitdiff
path: root/meta-openvuplus/recipes-multimedia/gstreamer1.0/gstreamer1.0-plugin-dvbmediasink/gstreamer10_dvbmediasink_vuplus.patch
blob: 64fef329d99306e5e634683e860cae782176bac1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
diff --git a/gstdvbaudiosink.c b/gstdvbaudiosink.c
index 2725def..a51d28c 100644
--- a/gstdvbaudiosink.c
+++ b/gstdvbaudiosink.c
@@ -125,8 +125,7 @@ static guint gst_dvbaudiosink_signals[LAST_SIGNAL] = { 0 };
 		"framed =(boolean) true; "
 
 #define LPCMCAPS \
-		"audio/x-private1-lpcm, " \
-		"framed =(boolean) true; "
+		"audio/x-private1-lpcm; "
 
 #define DTSCAPS \
 		"audio/x-dts, " \
@@ -271,7 +270,9 @@ static void gst_dvbaudiosink_class_init(GstDVBAudioSinkClass *self)
 	gstbasesink_class->event = GST_DEBUG_FUNCPTR(gst_dvbaudiosink_event);
 	gstbasesink_class->unlock = GST_DEBUG_FUNCPTR(gst_dvbaudiosink_unlock);
 	gstbasesink_class->unlock_stop = GST_DEBUG_FUNCPTR(gst_dvbaudiosink_unlock_stop);
+#if GST_VERSION_MAJOR < 1
 	gstbasesink_class->set_caps = GST_DEBUG_FUNCPTR(gst_dvbaudiosink_set_caps);
+#endif
 	gstbasesink_class->get_caps = GST_DEBUG_FUNCPTR(gst_dvbaudiosink_get_caps);
 
 	element_class->change_state = GST_DEBUG_FUNCPTR(gst_dvbaudiosink_change_state);
@@ -426,6 +427,11 @@ static gboolean gst_dvbaudiosink_set_caps(GstBaseSink *basesink, GstCaps *caps)
 	const char *type = gst_structure_get_name(structure);
 	t_audio_type bypass = AUDIOTYPE_UNKNOWN;
 
+	if (self->bypass != AUDIOTYPE_UNKNOWN) {
+		GST_INFO_OBJECT (self, "skip set_caps, should be done only once.");
+		return TRUE;
+	}
+
 	self->skip = 0;
 	self->aac_adts_header_valid = FALSE;
 
@@ -775,7 +781,9 @@ static gboolean gst_dvbaudiosink_event(GstBaseSink *sink, GstEvent *event)
 		self->flushing = TRUE;
 		/* wakeup the poll */
 		write(self->unlockfd[1], "\x01", 1);
+#if GST_VERSION_MAJOR >= 1
 		if(self->paused) ret = GST_BASE_SINK_CLASS(parent_class)->event(sink, event);
+#endif
 		break;
 	case GST_EVENT_FLUSH_STOP:
 		if (self->fd >= 0) ioctl(self->fd, AUDIO_CLEAR_BUFFER);
@@ -793,7 +801,9 @@ static gboolean gst_dvbaudiosink_event(GstBaseSink *sink, GstEvent *event)
 			self->cache = NULL;
 		}
 		GST_OBJECT_UNLOCK(self);
+#if GST_VERSION_MAJOR >= 1
 		if(self->paused) ret = GST_BASE_SINK_CLASS(parent_class)->event(sink, event);
+#endif
 		break;
 	case GST_EVENT_EOS:
 	{
@@ -828,7 +838,9 @@ static gboolean gst_dvbaudiosink_event(GstBaseSink *sink, GstEvent *event)
 			if (pfd[1].revents & POLLIN)
 			{
 				GST_DEBUG_OBJECT(self, "got buffer empty from driver!\n");
+#if GST_VERSION_MAJOR >= 1
 				ret = GST_BASE_SINK_CLASS(parent_class)->event(sink, event);
+#endif
 				break;
 			}
 
@@ -899,6 +911,7 @@ static gboolean gst_dvbaudiosink_event(GstBaseSink *sink, GstEvent *event)
 		}
 		break;
 	}
+#if GST_VERSION_MAJOR >= 1
 	case GST_EVENT_CAPS:
 	{
 		GstCaps *caps;
@@ -913,9 +926,12 @@ static gboolean gst_dvbaudiosink_event(GstBaseSink *sink, GstEvent *event)
 			}
 		}
 	}
+#endif
 
 	default:
+#if GST_VERSION_MAJOR >= 1
 		ret = GST_BASE_SINK_CLASS(parent_class)->event(sink, event);
+#endif
 		break;
 	}
 
diff --git a/gstdvbvideosink.c b/gstdvbvideosink.c
index a6b0a10..903432c 100644
--- a/gstdvbvideosink.c
+++ b/gstdvbvideosink.c
@@ -299,8 +299,9 @@ static void gst_dvbvideosink_class_init(GstDVBVideoSinkClass *self)
 	gstbasesink_class->event = GST_DEBUG_FUNCPTR (gst_dvbvideosink_event);
 	gstbasesink_class->unlock = GST_DEBUG_FUNCPTR (gst_dvbvideosink_unlock);
 	gstbasesink_class->unlock_stop = GST_DEBUG_FUNCPTR (gst_dvbvideosink_unlock_stop);
+#if GST_VERSION_MAJOR < 1
 	gstbasesink_class->set_caps = GST_DEBUG_FUNCPTR (gst_dvbvideosink_set_caps);
-
+#endif
 	element_class->change_state = GST_DEBUG_FUNCPTR (gst_dvbvideosink_change_state);
 
 	gst_dvb_videosink_signals[SIGNAL_GET_DECODER_TIME] =
@@ -402,7 +403,9 @@ static gboolean gst_dvbvideosink_event(GstBaseSink *sink, GstEvent *event)
 		self->flushing = TRUE;
 		/* wakeup the poll */
 		write(self->unlockfd[1], "\x01", 1);
+#if GST_VERSION_MAJOR >= 1
 		if(self->paused) ret = GST_BASE_SINK_CLASS(parent_class)->event(sink, event);
+#endif
 		break;
 	case GST_EVENT_FLUSH_STOP:
 		if (self->fd >= 0) ioctl(self->fd, VIDEO_CLEAR_BUFFER);
@@ -414,7 +417,9 @@ static gboolean gst_dvbvideosink_event(GstBaseSink *sink, GstEvent *event)
 		}
 		self->flushing = FALSE;
 		GST_OBJECT_UNLOCK(self);
+#if GST_VERSION_MAJOR >= 1
 		if(self->paused) ret = GST_BASE_SINK_CLASS(parent_class)->event(sink, event);
+#endif
 		break;
 	case GST_EVENT_EOS:
 	{
@@ -449,7 +454,9 @@ static gboolean gst_dvbvideosink_event(GstBaseSink *sink, GstEvent *event)
 			if (pfd[1].revents & POLLIN)
 			{
 				GST_DEBUG_OBJECT (self, "got buffer empty from driver!\n");
+#if GST_VERSION_MAJOR >= 1
 				ret = GST_BASE_SINK_CLASS(parent_class)->event(sink, event);
+#endif
 				break;
 			}
 
@@ -513,6 +520,7 @@ static gboolean gst_dvbvideosink_event(GstBaseSink *sink, GstEvent *event)
 		}
 		break;
 	}
+#if GST_VERSION_MAJOR >= 1
 	case GST_EVENT_CAPS:
 	{
 		GstCaps *caps;
@@ -524,8 +532,11 @@ static gboolean gst_dvbvideosink_event(GstBaseSink *sink, GstEvent *event)
 		}
 		break;
 	}
+#endif
 	default:
+#if GST_VERSION_MAJOR >= 1
 		ret = GST_BASE_SINK_CLASS(parent_class)->event(sink, event);
+#endif
 		break;
 	}
 
@@ -1557,6 +1572,10 @@ static gboolean gst_dvbvideosink_set_caps(GstBaseSink *basesink, GstCaps *caps)
 					gst_buffer_ref (self->codec_data);
 				}
 				GST_INFO_OBJECT (self, "MIMETYPE video/x-divx vers. 4 -> STREAMTYPE_MPEG4_Part2");
+#if GST_VERSION_MAJOR >= 1
+				self->use_dts = TRUE;
+#endif
+
 			break;
 			case 6:
 			case 5: