diff mbox

Help request: switching multiple TS stream audio PIDs on the fly with xine-ui and mplayer

Message ID 1258734750.11079.2.camel@brian.bconsult.de (mailing list archive)
State Not Applicable
Headers show

Commit Message

Chicken Shack Nov. 20, 2009, 4:32 p.m. UTC
None
diff mbox

Patch

--- a/scan.patch
+++ b/scan.patch
@@ -0,0 +1,88 @@ 
--- a/util/scan/scan.c
+++ b/util/scan/scan.c
@@ -1260,7 +1260,7 @@ 
 static LIST_HEAD(running_filters);
 static LIST_HEAD(waiting_filters);
 static int n_running;
-#define MAX_RUNNING 27
+#define MAX_RUNNING 10
 static struct pollfd poll_fds[MAX_RUNNING];
 static struct section_buf* poll_section_bufs[MAX_RUNNING];

@@ -2035,6 +2035,8 @@ 
 						    sat_number(t),
 						    s->video_pid,
 						    s->audio_pid,
+						    s->audio_lang,
+						    s->audio_num,
 						    s->service_id);
 			  default:
 				break;
--- a/util/scan/dump-zap.c
+++ b/util/scan/dump-zap.c
@@ -75,7 +75,6 @@ 
 		fprintf (f, "%c:", polarity);
 		fprintf (f, "%d:", sat_number);
 		fprintf (f, "%i", p->u.qpsk.symbol_rate / 1000); /* channels.conf
wants kBaud */
-		/*fprintf (f, "%s", fec_name[p->u.qpsk.fec_inner]);*/
 		break;

 	case FE_QAM:
@@ -114,12 +113,27 @@ 
 				 struct dvb_frontend_parameters *p,
 				 char polarity,
 				 int sat_number,
-				 uint16_t video_pid,
+				 int video_pid,
 				 uint16_t *audio_pid,
-				 uint16_t service_id)
+				 char audio_lang[][4],
+				 int audio_num,
+				 int service_id)
 {
+	int i;
+	if (video_pid || audio_pid[0]) {
 	fprintf (f, "%s:", service_name);
 	zap_dump_dvb_parameters (f, type, p, polarity, sat_number);
+		fprintf (f, ":%i:", video_pid);
+		fprintf (f, "%i", audio_pid[0]);
+		if (audio_lang && audio_lang[0][0])
+			fprintf (f, "=%.4s", audio_lang[0]);
+	        for (i = 1; i < audio_num; i++)
+	        {
+			fprintf (f, ",%i", audio_pid[i]);
+			if (audio_lang && audio_lang[i][0])
+				fprintf (f, "=%.4s", audio_lang[i]);
+		}
+		fprintf (f, ":%d", service_id);
-	fprintf (f, ":%i:%i:%i", video_pid, audio_pid[0], service_id);
 	fprintf (f, "\n");
 }
+}
--- a/util/scan/dump-zap.h
+++ b/util/scan/dump-zap.h
@@ -1,19 +1,17 @@ 
 #ifndef __DUMP_ZAP_H__
 #define __DUMP_ZAP_H__
-
 #include <stdint.h>
 #include <linux/dvb/frontend.h>
-
 extern void zap_dump_dvb_parameters (FILE *f, fe_type_t type,
 		struct dvb_frontend_parameters *t, char polarity, int sat);
-
 extern void zap_dump_service_parameter_set (FILE *f,
 				 const char *service_name,
 				 fe_type_t type,
-				 struct dvb_frontend_parameters *t,
+				 struct dvb_frontend_parameters *p,
 				 char polarity, int sat,
-				 uint16_t video_pid,
+				 int video_pid,
 				 uint16_t *audio_pid,
-				 uint16_t service_id);
+				 char audio_lang[][4],
+				 int audio_num,
+				 int service_id);
-
 #endif

5. Your contribution?

Who can give me hints about how and where patching xine-ui and gmplayer
appropriately so that multiple audio TS PIDS can be changed on the fly?
Who can offer appropriate patches?

Thanks


--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html