static void
gst_dvbsrc_set_pids (GstDvbSrc * dvbsrc, const gchar * pid_string)
{
+ int pid = 0;
+ int pid_count;
+ gchar **pids;
+ char **tmp;
+
if (!strcmp (pid_string, "8192")) {
/* get the whole TS */
dvbsrc->pids[0] = 8192;
dvbsrc->pids[1] = G_MAXUINT16;
- } else {
- int pid = 0;
- int pid_count;
- gchar **pids;
- char **tmp;
-
- tmp = pids = g_strsplit (pid_string, ":", MAX_FILTERS);
-
- /* always add the PAT and CAT pids */
- dvbsrc->pids[0] = 0;
- dvbsrc->pids[1] = 1;
-
- pid_count = 2;
- while (*pids != NULL && pid_count < MAX_FILTERS) {
- pid = strtol (*pids, NULL, 0);
- if (pid > 1 && pid <= 8192) {
- GST_INFO_OBJECT (dvbsrc, "Parsed PID: %d", pid);
- dvbsrc->pids[pid_count] = pid;
- pid_count++;
- }
- pids++;
- }
+ goto done;
+ }
- if (pid_count < MAX_FILTERS)
- dvbsrc->pids[pid_count] = G_MAXUINT16;
+ /* always add the PAT and CAT pids */
+ dvbsrc->pids[0] = 0;
+ dvbsrc->pids[1] = 1;
+ pid_count = 2;
- g_strfreev (tmp);
+ tmp = pids = g_strsplit (pid_string, ":", MAX_FILTERS);
+
+ while (*pids != NULL && pid_count < MAX_FILTERS) {
+ pid = strtol (*pids, NULL, 0);
+ if (pid > 1 && pid <= 8192) {
+ GST_INFO_OBJECT (dvbsrc, "Parsed PID: %d", pid);
+ dvbsrc->pids[pid_count] = pid;
+ pid_count++;
+ }
+ pids++;
}
- GST_INFO_OBJECT (dvbsrc, "checking if playing for setting PES filters");
- if (GST_ELEMENT (dvbsrc)->current_state == GST_STATE_PLAYING ||
- GST_ELEMENT (dvbsrc)->current_state == GST_STATE_PAUSED) {
+ g_strfreev (tmp);
+
+ if (pid_count < MAX_FILTERS)
+ dvbsrc->pids[pid_count] = G_MAXUINT16;
+
+done:
+ if (GST_ELEMENT (dvbsrc)->current_state > GST_STATE_READY) {
GST_INFO_OBJECT (dvbsrc, "Setting PES filters now");
gst_dvbsrc_set_pes_filters (dvbsrc);
- }
+ } else
+ GST_INFO_OBJECT (dvbsrc, "Not setting PES filters because state < PAUSED");
}
static void