zu '1.: die fehlenden PMT/PAT beim direkt streaming unter Neutrino.' gibt es etwas von einem 'body' der natuerlich nix dagegen hat wenn's ins CVS wandert....ob's funktioniert weiss ich leider nicht, aber ich wuerde mich sehr freuen wenn dass mal einer der Experten hier testen, kommentieren und uU. einchecken koennte...ist ein diff:
Code: Alles auswählen
diff -Naur cvs/apps/dvb/zapit/include/zapit/client/zapitclient.h cvs_/apps/dvb/zapit/include/zapit/client/zapitclient.h
--- cvs/apps/dvb/zapit/include/zapit/client/zapitclient.h	2004-11-17 21:38:06.000000000 +0100
+++ cvs_/apps/dvb/zapit/include/zapit/client/zapitclient.h	2004-11-18 13:29:09.000000000 +0100
@@ -186,6 +186,7 @@
 			unsigned int	tsfrequency;
 			unsigned char	polarisation;
 			unsigned char	diseqc;
+			unsigned short	pmtpid;
 		};
 
 	struct responseGetPIDs
diff -Naur cvs/apps/dvb/zapit/src/zapit.cpp cvs_/apps/dvb/zapit/src/zapit.cpp
--- cvs/apps/dvb/zapit/src/zapit.cpp	2004-11-17 21:38:10.000000000 +0100
+++ cvs_/apps/dvb/zapit/src/zapit.cpp	2004-11-18 13:29:09.000000000 +0100
@@ -656,6 +656,7 @@
 		msgCurrentServiceInfo.vpid = channel->getVideoPid();
 		msgCurrentServiceInfo.apid = channel->getAudioPid();
 		msgCurrentServiceInfo.vtxtpid = channel->getTeletextPid();
+		msgCurrentServiceInfo.pmtpid = channel->getPmtPid();
 		msgCurrentServiceInfo.pcrpid = channel->getPcrPid();
 		msgCurrentServiceInfo.tsfrequency = frontend->getFrequency();
 		if (frontend->getInfo()->type == FE_QPSK)
diff -Naur cvs/apps/tuxbox/neutrino/data/locale/deutsch.locale cvs_/apps/tuxbox/neutrino/data/locale/deutsch.locale
--- cvs/apps/tuxbox/neutrino/data/locale/deutsch.locale	2004-11-17 21:38:14.000000000 +0100
+++ cvs_/apps/tuxbox/neutrino/data/locale/deutsch.locale	2004-11-18 13:29:09.000000000 +0100
@@ -664,6 +664,7 @@
 recordingmenu.stopplayback Playback anhalten
 recordingmenu.stopsectionsd Sectionsd anhalten
 recordingmenu.stream_all_audio_pids Alle Audiopids aufzeichnen
+recordingmenu.stream_pmt_pid PMT pid aufzeichnen
 recordingmenu.stream_vtxt_pid Videotext aufzeichnen
 recordingmenu.use_fdatasync Synchrones Schreiben (fdatasync)
 recordingmenu.use_o_sync Synchrones Schreiben (O_SYNC)
diff -Naur cvs/apps/tuxbox/neutrino/data/locale/english.locale cvs_/apps/tuxbox/neutrino/data/locale/english.locale
--- cvs/apps/tuxbox/neutrino/data/locale/english.locale	2004-11-17 21:38:14.000000000 +0100
+++ cvs_/apps/tuxbox/neutrino/data/locale/english.locale	2004-11-18 13:29:09.000000000 +0100
@@ -626,6 +626,7 @@
 recordingmenu.stopplayback stop playback
 recordingmenu.stopsectionsd stop sectionsd
 recordingmenu.stream_all_audio_pids record all audio pids
+recordingmenu.stream_pmt_pid record pmt pid
 recordingmenu.stream_vtxt_pid record videotext
 recordingmenu.use_fdatasync write synchronous (fdatasync)
 recordingmenu.use_o_sync write synchronous (O_SYNC)
diff -Naur cvs/apps/tuxbox/neutrino/src/driver/vcrcontrol.cpp cvs_/apps/tuxbox/neutrino/src/driver/vcrcontrol.cpp
--- cvs/apps/tuxbox/neutrino/src/driver/vcrcontrol.cpp	2004-11-17 21:38:15.000000000 +0100
+++ cvs_/apps/tuxbox/neutrino/src/driver/vcrcontrol.cpp	2004-11-18 14:25:23.457606776 +0100
@@ -405,6 +405,11 @@
 	extMessage += tmp;
 	extMessage +=
 		"</vtxtpid>\n"
+		"\t\t<pmtpid>";
+	sprintf(tmp, "%u", si.pmtpid);
+	extMessage += tmp;
+	extMessage +=
+		"</pmtpid>\n"
 		"\t</record>\n"
 		"</neutrino>\n";
 
@@ -499,6 +504,11 @@
 	{
 		pids[numpids++] = si.vtxtpid;
 	}
+	if ((StreamPMTPid) && (si.pmtpid != 0))
+	{
+		pids[numpids++] = si.pmtpid;
+		pids[numpids++] =0;
+	}
 
 	char filename[512]; // UTF-8
 
diff -Naur cvs/apps/tuxbox/neutrino/src/driver/vcrcontrol.h cvs_/apps/tuxbox/neutrino/src/driver/vcrcontrol.h
--- cvs/apps/tuxbox/neutrino/src/driver/vcrcontrol.h	2004-11-17 21:38:15.000000000 +0100
+++ cvs_/apps/tuxbox/neutrino/src/driver/vcrcontrol.h	2004-11-18 13:29:09.000000000 +0100
@@ -130,6 +130,7 @@
 			bool         Use_Fdatasync;
 			bool         StreamAllAudioPids;
 			bool         StreamVTxtPid;
+			bool         StreamPMTPid;
 				
 			virtual CVCRDevices getDeviceType(void) const
 				{
@@ -139,7 +140,7 @@
 			virtual bool Stop(); 
 			virtual bool Record(const t_channel_id channel_id = 0, int mode=1, const event_id_t epgid = 0, const std::string & apids = "");	
 
-			CFileDevice(const bool stopplayback, const bool stopsectionsd, const char * const directory, const unsigned int splitsize, const bool use_o_sync, const bool use_fdatasync, const bool stream_all_audio_pids, const bool stream_vtxt_pid)
+			CFileDevice(const bool stopplayback, const bool stopsectionsd, const char * const directory, const unsigned int splitsize, const bool use_o_sync, const bool use_fdatasync, const bool stream_all_audio_pids, const bool stream_vtxt_pid, const bool stream_pmt_pid)
 				{
 					StopPlayBack       = stopplayback;
 					StopSectionsd      = stopsectionsd;
@@ -149,6 +150,7 @@
 					Use_Fdatasync      = use_fdatasync;
 					StreamAllAudioPids = stream_all_audio_pids;
 					StreamVTxtPid      = stream_vtxt_pid;
+					StreamPMTPid      = stream_pmt_pid;
 				};
 			virtual ~CFileDevice()
 				{
diff -Naur cvs/apps/tuxbox/neutrino/src/gui/streaminfo2.cpp cvs_/apps/tuxbox/neutrino/src/gui/streaminfo2.cpp
--- cvs/apps/tuxbox/neutrino/src/gui/streaminfo2.cpp	2004-06-13 15:42:44.000000000 +0200
+++ cvs_/apps/tuxbox/neutrino/src/gui/streaminfo2.cpp	2004-11-18 13:29:09.000000000 +0100
@@ -476,6 +476,11 @@
 			(si.polarisation == HORIZONTAL) ? 'h' : 'v');
 	g_Font[font_small]->RenderString(xpos, ypos, width-10, buf, COL_MENUCONTENT, 0, true); // UTF-8
 
+	//pmtpid
+	ypos+= sheight;
+	sprintf((char*) buf, "%s: 0x%04x", "PMTpid", si.pmtpid);
+	g_Font[font_small]->RenderString(xpos, ypos, width-10, buf, COL_MENUCONTENT, 0, true); // UTF-8
+
 	//vpid
 	ypos+= sheight;
 	if ( g_RemoteControl->current_PIDs.PIDs.vpid == 0 )
diff -Naur cvs/apps/tuxbox/neutrino/src/neutrino.cpp cvs_/apps/tuxbox/neutrino/src/neutrino.cpp
--- cvs/apps/tuxbox/neutrino/src/neutrino.cpp	2004-11-17 21:38:15.000000000 +0100
+++ cvs_/apps/tuxbox/neutrino/src/neutrino.cpp	2004-11-18 13:29:09.000000000 +0100
@@ -651,6 +651,7 @@
 	g_settings.recording_use_fdatasync         = configfile.getBool("recordingmenu.use_fdatasync"        , false);
 	g_settings.recording_stream_all_audio_pids = configfile.getBool("recordingmenu.stream_all_audio_pids", true );
 	g_settings.recording_stream_vtxt_pid       = configfile.getBool("recordingmenu.stream_vtxt_pid"      , false);
+	g_settings.recording_stream_pmt_pid       = configfile.getBool("recordingmenu.stream_pmt_pid"      , false);
 
 	//streaming (server)
 	g_settings.streaming_type = configfile.getInt32( "streaming_type", 0 );
@@ -969,6 +970,7 @@
 	configfile.setBool  ("recordingmenu.use_fdatasync"        , g_settings.recording_use_fdatasync        );
 	configfile.setBool  ("recordingmenu.stream_all_audio_pids", g_settings.recording_stream_all_audio_pids);
 	configfile.setBool  ("recordingmenu.stream_vtxt_pid"      , g_settings.recording_stream_vtxt_pid      );
+	configfile.setBool  ("recordingmenu.stream_pmt_pid"      , g_settings.recording_stream_pmt_pid      );
 
 	//streaming
 	configfile.setInt32 ( "streaming_type", g_settings.streaming_type );
@@ -2102,8 +2104,10 @@
 	CMenuOptionChooser* oj8 = new CMenuOptionChooser(LOCALE_RECORDINGMENU_STREAM_ALL_AUDIO_PIDS, &g_settings.recording_stream_all_audio_pids, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, (g_settings.recording_type == RECORDING_FILE));
 
 	CMenuOptionChooser* oj9 = new CMenuOptionChooser(LOCALE_RECORDINGMENU_STREAM_VTXT_PID, &g_settings.recording_stream_vtxt_pid, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, (g_settings.recording_type == RECORDING_FILE));
-	
-	CRecordingNotifier *RecordingNotifier = new CRecordingNotifier(mf1,mf2,oj2,mf3,oj3,oj4,oj5,mf7,mf8,oj6, oj7, oj8, oj9);
+
+	CMenuOptionChooser* oj10 = new CMenuOptionChooser(LOCALE_RECORDINGMENU_STREAM_PMT_PID, &g_settings.recording_stream_pmt_pid, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, (g_settings.recording_type == RECORDING_FILE));
+
+	CRecordingNotifier *RecordingNotifier = new CRecordingNotifier(mf1,mf2,oj2,mf3,oj3,oj4,oj5,mf7,mf8,oj6, oj7, oj8, oj9,oj10);
 
 	CMenuOptionChooser* oj1 = new CMenuOptionChooser(LOCALE_RECORDINGMENU_RECORDING_TYPE, &g_settings.recording_type, RECORDINGMENU_RECORDING_TYPE_OPTIONS, RECORDINGMENU_RECORDING_TYPE_OPTION_COUNT, true, RecordingNotifier);
 
@@ -2132,6 +2136,7 @@
 	recordingSettings.addItem(oj7);
 	recordingSettings.addItem(oj8);
 	recordingSettings.addItem(oj9);
+	recordingSettings.addItem(oj10);
 
 	recordingstatus = 0;
 }
@@ -2828,7 +2833,7 @@
 		unsigned int splitsize;
 		sscanf(g_settings.recording_splitsize, "%u", &splitsize);
 		
-		recordingdevice = new CVCRControl::CFileDevice(g_settings.recording_stopplayback, g_settings.recording_stopsectionsd, g_settings.network_nfs_recordingdir, splitsize, g_settings.recording_use_o_sync, g_settings.recording_use_fdatasync, g_settings.recording_stream_all_audio_pids, g_settings.recording_stream_vtxt_pid);
+		recordingdevice = new CVCRControl::CFileDevice(g_settings.recording_stopplayback, g_settings.recording_stopsectionsd, g_settings.network_nfs_recordingdir, splitsize, g_settings.recording_use_o_sync, g_settings.recording_use_fdatasync, g_settings.recording_stream_all_audio_pids, g_settings.recording_stream_vtxt_pid,g_settings.recording_stream_pmt_pid);
 
 		CVCRControl::getInstance()->registerDevice(recordingdevice);
 	}
diff -Naur cvs/apps/tuxbox/neutrino/src/system/locals.h cvs_/apps/tuxbox/neutrino/src/system/locals.h
--- cvs/apps/tuxbox/neutrino/src/system/locals.h	2004-11-17 21:38:16.000000000 +0100
+++ cvs_/apps/tuxbox/neutrino/src/system/locals.h	2004-11-18 13:29:09.000000000 +0100
@@ -691,6 +691,7 @@
 	LOCALE_RECORDINGMENU_STOPPLAYBACK,
 	LOCALE_RECORDINGMENU_STOPSECTIONSD,
 	LOCALE_RECORDINGMENU_STREAM_ALL_AUDIO_PIDS,
+	LOCALE_RECORDINGMENU_STREAM_PMT_PID,
 	LOCALE_RECORDINGMENU_STREAM_VTXT_PID,
 	LOCALE_RECORDINGMENU_USE_FDATASYNC,
 	LOCALE_RECORDINGMENU_USE_O_SYNC,
diff -Naur cvs/apps/tuxbox/neutrino/src/system/locals_intern.h cvs_/apps/tuxbox/neutrino/src/system/locals_intern.h
--- cvs/apps/tuxbox/neutrino/src/system/locals_intern.h	2004-11-17 21:38:17.000000000 +0100
+++ cvs_/apps/tuxbox/neutrino/src/system/locals_intern.h	2004-11-18 13:29:09.000000000 +0100
@@ -691,6 +691,7 @@
 	"recordingmenu.stopplayback",
 	"recordingmenu.stopsectionsd",
 	"recordingmenu.stream_all_audio_pids",
+	"recordingmenu.stream_pmt_pid",
 	"recordingmenu.stream_vtxt_pid",
 	"recordingmenu.use_fdatasync",
 	"recordingmenu.use_o_sync",
diff -Naur cvs/apps/tuxbox/neutrino/src/system/setting_helpers.cpp cvs_/apps/tuxbox/neutrino/src/system/setting_helpers.cpp
--- cvs/apps/tuxbox/neutrino/src/system/setting_helpers.cpp	2004-11-17 21:38:17.000000000 +0100
+++ cvs_/apps/tuxbox/neutrino/src/system/setting_helpers.cpp	2004-11-18 13:29:09.000000000 +0100
@@ -138,7 +138,7 @@
                                        CMenuItem* i4 , CMenuItem* i5 , CMenuItem* i6 ,
                                        CMenuItem* i7 , CMenuItem* i8 , CMenuItem* i9 ,
 				       CMenuItem* i10, CMenuItem* i11, CMenuItem* i12,
-				       CMenuItem* i13)
+				       CMenuItem* i13,CMenuItem* i14)
 {
 	toDisable[ 0] = i1;
 	toDisable[ 1] = i2;
@@ -153,13 +153,14 @@
 	toDisable[10] = i11;
 	toDisable[11] = i12;
 	toDisable[12] = i13;
+	toDisable[13] = i14;
 }
 bool CRecordingNotifier::changeNotify(const neutrino_locale_t, void *)
 {
    if ((g_settings.recording_type == CNeutrinoApp::RECORDING_OFF) ||
        (g_settings.recording_type == CNeutrinoApp::RECORDING_FILE))
    {
-	   for(int i = 0; i < 13; i++)
+	   for(int i = 0; i < 14; i++)
 		   toDisable[i]->setActive(false);
 
 	   if (g_settings.recording_type == CNeutrinoApp::RECORDING_FILE)
@@ -170,6 +171,7 @@
 		   toDisable[10]->setActive(true);
 		   toDisable[11]->setActive(true);
 		   toDisable[12]->setActive(true);
+		   toDisable[13]->setActive(true);
 	   }
    }
    else if (g_settings.recording_type == CNeutrinoApp::RECORDING_SERVER)
@@ -187,6 +189,7 @@
 	   toDisable[10]->setActive(false);
 	   toDisable[11]->setActive(false);
 	   toDisable[12]->setActive(false);
+	   toDisable[13]->setActive(false);
    }
    else if (g_settings.recording_type == CNeutrinoApp::RECORDING_VCR)
    {
@@ -203,6 +206,7 @@
 	   toDisable[10]->setActive(false);
 	   toDisable[11]->setActive(false);
 	   toDisable[12]->setActive(false);
+	   toDisable[13]->setActive(false);
    }
    
    return true;
diff -Naur cvs/apps/tuxbox/neutrino/src/system/setting_helpers.h cvs_/apps/tuxbox/neutrino/src/system/setting_helpers.h
--- cvs/apps/tuxbox/neutrino/src/system/setting_helpers.h	2004-11-17 21:38:17.000000000 +0100
+++ cvs_/apps/tuxbox/neutrino/src/system/setting_helpers.h	2004-11-18 13:29:09.000000000 +0100
@@ -73,9 +73,9 @@
 class CRecordingNotifier : public CChangeObserver
 {
 	private:
-		CMenuItem* toDisable[13];
+		CMenuItem* toDisable[14];
 	public:
-		CRecordingNotifier(CMenuItem*, CMenuItem*, CMenuItem*, CMenuItem*, CMenuItem*, CMenuItem*, CMenuItem*, CMenuItem*, CMenuItem*, CMenuItem*, CMenuItem*, CMenuItem*, CMenuItem*);
+		CRecordingNotifier(CMenuItem*, CMenuItem*, CMenuItem*, CMenuItem*, CMenuItem*, CMenuItem*, CMenuItem*, CMenuItem*, CMenuItem*, CMenuItem*, CMenuItem*, CMenuItem*, CMenuItem*, CMenuItem*);
 		bool changeNotify(const neutrino_locale_t OptionName, void*);
 };
 
diff -Naur cvs/apps/tuxbox/neutrino/src/system/settings.h cvs_/apps/tuxbox/neutrino/src/system/settings.h
--- cvs/apps/tuxbox/neutrino/src/system/settings.h	2004-11-17 21:38:17.000000000 +0100
+++ cvs_/apps/tuxbox/neutrino/src/system/settings.h	2004-11-18 13:29:09.000000000 +0100
@@ -165,6 +165,7 @@
 	int  recording_use_fdatasync;
 	int  recording_stream_all_audio_pids;
 	int  recording_stream_vtxt_pid;
+	int  recording_stream_pmt_pid;
 
 	//streaming
 	int  streaming_type;Ich hoffe mal, dass es diesmal nicht wieder Monate dauert (so wie bei der Movieplayererweiterung von gmo18t) bis dass geprueft, eingecheckt oder verworfen wird...
cu,
peter
--
Um klar zu sehen, genügt oft ein Wechsel der Blickrichtung.
[Antoine de Saint-Exupéry]




