Automatischer Wechsel nach SPTS Mode vor einer Aufnahme
-
- Erleuchteter
- Beiträge: 547
- Registriert: Mittwoch 30. Juni 2004, 16:06
Automatischer Wechsel nach SPTS Mode vor einer Aufnahme
Hi,
da ja mittlerweile es möglich ist, ohne Neustarten in den SPTS Mode zu wechseln, wäre es doch nur ein kleiner Schritt dazu automatisch vor der Aufnahme in den SPTS zu wechseln und hinterher wieder zurück.
Das ganze sollte in den Aufnahmeoptionen aktivierbar sein, es soll ja manche geben, die noch PES benötigen.
Oder geht die Überlegung schon in diese Richtung?
Dann wären wir endlich das Knacksen beim Umschalten los Was haltet Ihr davon?
Cu
Torsten
da ja mittlerweile es möglich ist, ohne Neustarten in den SPTS Mode zu wechseln, wäre es doch nur ein kleiner Schritt dazu automatisch vor der Aufnahme in den SPTS zu wechseln und hinterher wieder zurück.
Das ganze sollte in den Aufnahmeoptionen aktivierbar sein, es soll ja manche geben, die noch PES benötigen.
Oder geht die Überlegung schon in diese Richtung?
Dann wären wir endlich das Knacksen beim Umschalten los Was haltet Ihr davon?
Cu
Torsten
-
- Einsteiger
- Beiträge: 297
- Registriert: Sonntag 13. Oktober 2002, 22:02
-
- Einsteiger
- Beiträge: 205
- Registriert: Montag 19. April 2004, 21:09
-
- Neugieriger
- Beiträge: 5
- Registriert: Mittwoch 9. Februar 2005, 16:57
-
- Einsteiger
- Beiträge: 297
- Registriert: Sonntag 13. Oktober 2002, 22:02
-
- Einsteiger
- Beiträge: 338
- Registriert: Sonntag 24. Februar 2002, 10:43
-
- Einsteiger
- Beiträge: 297
- Registriert: Sonntag 13. Oktober 2002, 22:02
thx
muss man erst drauf kommen
Usage: aviaext <command>
Commands:
--help : displays this text
--iec-on : turn optical output on
--iec-off : turn optical output off
--iec-state : returns state of IEC
--avia-dualpes : sets Avia to DualPES mode
--avia-spts : sets Avia to SPTS mode
--avia-playback-mode-state : returns current Avia playback mode
muss man erst drauf kommen
Usage: aviaext <command>
Commands:
--help : displays this text
--iec-on : turn optical output on
--iec-off : turn optical output off
--iec-state : returns state of IEC
--avia-dualpes : sets Avia to DualPES mode
--avia-spts : sets Avia to SPTS mode
--avia-playback-mode-state : returns current Avia playback mode
-
- Einsteiger
- Beiträge: 297
- Registriert: Sonntag 13. Oktober 2002, 22:02
vielleicht erbarmt sich "chakazulu" und baut das ein ???
die datei müsste die stream2file.cpp sein ????
also beim movieplayer funktioniert die spts umschaltung
hier mal ein log (spts aus)
die datei müsste die stream2file.cpp sein ????
also beim movieplayer funktioniert die spts umschaltung
hier mal ein log (spts aus)
[movieplayer.cpp] actionKey=tsplayback
[mp] Startplay
[mp] PlayFileThread starts
[mp] found pida[0]: 0x0021, ac3=0
[mp] plain TS file with vpid=(0x0022) apid=(0x0021) ac3=(0)
[mp] entering player loop
SPTS, queue 0 extended.
[controld] VIDEO_EVENT_SIZE_CHANGED 352x288 (4:3 -> 4:3)
[mp] leaving reader loop
[mp] mp_playFileThread terminated
PES, queue 0 normal.
-
- Einsteiger
- Beiträge: 297
- Registriert: Sonntag 13. Oktober 2002, 22:02
Ich hab grad mal in den dateien gestöbert
Da hab ich in vcrcontrol.cpp das gefunden
Aber ist der ansatz richtig
Da hab ich in vcrcontrol.cpp das gefunden
Wenn ich da nun das draus mache ???. Könnte da die automatische umschaltung funzen ??? oder liege ich da falsch.
.
bool CVCRControl::CFileDevice::Stop()
{
printf("Stop\n");
bool return_value = (::stop_recording() == STREAM2FILE_OK);
RestoreNeutrino();
deviceState = CMD_VCR_STOP;
return return_value;
}
bool CVCRControl::CFileDevice::Record(const t_channel_id channel_id, int mode, const event_id_t epgid, const std::string & apids)
{
printf("Record channel_id: "
PRINTF_CHANNEL_ID_TYPE_NO_LEADING_ZEROS
" epg: %llx, apids %s mode %d\n",
channel_id,
epgid,
apids.c_str(),
mode);
CutBackNeutrino(channel_id, mode);
.
Das ist bestimmt nicht schönbool CVCRControl::CFileDevice::Stop()
{
system("aviaext --avia-dualpes");
printf("Stop\n");
bool return_value = (::stop_recording() == STREAM2FILE_OK);
RestoreNeutrino();
deviceState = CMD_VCR_STOP;
return return_value;
}
bool CVCRControl::CFileDevice::Record(const t_channel_id channel_id, int mode, const event_id_t epgid, const std::string & apids)
{
system("aviaext --avia-spts");
printf("Record channel_id: "
PRINTF_CHANNEL_ID_TYPE_NO_LEADING_ZEROS
" epg: %llx, apids %s mode %d\n",
channel_id,
epgid,
apids.c_str(),
mode);
CutBackNeutrino(channel_id, mode);
Aber ist der ansatz richtig
-
- Einsteiger
- Beiträge: 297
- Registriert: Sonntag 13. Oktober 2002, 22:02
-
- Oberlamer, Administrator & Supernanny
- Beiträge: 10532
- Registriert: Samstag 13. Juli 2002, 10:49
Hast Du es mal so gebaut und getestet?
Vom Prinzip her richtig, nur ein system-Aufruf an der Stelle ist überflüssig und unsauber.
in SPTS-Modus schalten: g_Zapit->PlaybackSPTS();
in PES-Modus schalten: g_Zapit->PlaybackPES();
Vom Prinzip her richtig, nur ein system-Aufruf an der Stelle ist überflüssig und unsauber.
in SPTS-Modus schalten: g_Zapit->PlaybackSPTS();
in PES-Modus schalten: g_Zapit->PlaybackPES();
There are 10 types of people in the world: those who know binary and those who don't
-
- Einsteiger
- Beiträge: 297
- Registriert: Sonntag 13. Oktober 2002, 22:02
-
- Neugieriger
- Beiträge: 5
- Registriert: Mittwoch 9. Februar 2005, 16:57
Bei mir klappt es nicht - die Umschaltung erfolgt zwar bei Aufnahme-Start und -Ende (überprüft mit "aviaext --avia-playback-mode-state), jedoch wird keine TS-Datei geschrieben, sondern zwei getrennte Dateien.
Meine Vermutung war, dass die Umschaltung mehr Zeit braucht, bevor mit der Aufnahme begonnen werden kann. Also habe ich nach jedem "g_Zapit"-Aufruf ein "system("sleep 3");" eingeschoben. Erfolglos, das Ergebnis bleibt dasselbe.
War meine Vermutung überhaupt richtig, und die Wartezeit zu gering? Oder bringt ein "sleep" an dieser Stelle garnichts?
B.
Meine Vermutung war, dass die Umschaltung mehr Zeit braucht, bevor mit der Aufnahme begonnen werden kann. Also habe ich nach jedem "g_Zapit"-Aufruf ein "system("sleep 3");" eingeschoben. Erfolglos, das Ergebnis bleibt dasselbe.
War meine Vermutung überhaupt richtig, und die Wartezeit zu gering? Oder bringt ein "sleep" an dieser Stelle garnichts?
B.
-
- Einsteiger
- Beiträge: 297
- Registriert: Sonntag 13. Oktober 2002, 22:02
-
- Neugieriger
- Beiträge: 5
- Registriert: Mittwoch 9. Februar 2005, 16:57
Die "unsaubere" Methode funktioniert noch weniger als die andere, bei meinen Tests. Schaltet man die Modi per system-Aufruf, dann erfolgt (bei mir) die Umschaltung in den jeweils anderen Modus erst nach einem manuellen Umschalten. Die Aufnahme startet natürlich schon davor, und natürlich wird die Aufnahme in getrennten Dateien gespeichert.
Das macht so, glaube ich, nicht viel Sinn. Hattest du mehr Erfolg?
Bei meinem ersten Test heute Nachmittag, mit der "sauberen" Methode, hatte ich ja lediglich den Eindruck, dass Neutrino mit der Aufnahme noch hätte warten müssen, bis die Umschaltung des Modus abgeschlossen ist - was Neutrino aber anscheinend nicht tat, die Aufnahme wurde *sofort* gestartet, noch bevor der Modus vollständig gewechselt wurde.
Vielleicht sollte man hier ansetzen? Das scheint mir zumindest der bessere Weg zu sein.
B.
Das macht so, glaube ich, nicht viel Sinn. Hattest du mehr Erfolg?
Bei meinem ersten Test heute Nachmittag, mit der "sauberen" Methode, hatte ich ja lediglich den Eindruck, dass Neutrino mit der Aufnahme noch hätte warten müssen, bis die Umschaltung des Modus abgeschlossen ist - was Neutrino aber anscheinend nicht tat, die Aufnahme wurde *sofort* gestartet, noch bevor der Modus vollständig gewechselt wurde.
Vielleicht sollte man hier ansetzen? Das scheint mir zumindest der bessere Weg zu sein.
B.
-
- Oberlamer, Administrator & Supernanny
- Beiträge: 10532
- Registriert: Samstag 13. Juli 2002, 10:49
Ich würde in einer Schleife warten, bis die Umschaltung erfolgt ist (zeitlich begrenzt, falls aviaEXT nicht geladen ist z.B.).
Code: Alles auswählen
int repeatcount=0;
while ((repeatcount++ < 10) && (g_Zapit->PlaybackState() != 1)) {
sleep(1);
}
There are 10 types of people in the world: those who know binary and those who don't
-
- Einsteiger
- Beiträge: 297
- Registriert: Sonntag 13. Oktober 2002, 22:02
Du meinst, das es so sollte aussehen ??
bool CVCRControl::CFileDevice::Stop()
{
g_Zapit->PlaybackPES();
int repeatcount=0;
while ((repeatcount++ < 10) && (g_Zapit->PlaybackState() != 1)) {
sleep(1);
}printf("Stop\n");
bool return_value = (::stop_recording() == STREAM2FILE_OK);
RestoreNeutrino();
deviceState = CMD_VCR_STOP;
return return_value;
}
bool CVCRControl::CFileDevice::Record(const t_channel_id channel_id, int mode, const event_id_t epgid, const std::string & apids)
{
g_Zapit->PlaybackSPTS();
int repeatcount=0;
while ((repeatcount++ < 10) && (g_Zapit->PlaybackState() != 1)) {
sleep(1);
printf("Record channel_id: "
PRINTF_CHANNEL_ID_TYPE_NO_LEADING_ZEROS
" epg: %llx, apids %s mode %d\n",
channel_id,
epgid,
apids.c_str(),
mode);
CutBackNeutrino(channel_id, mode);
-
- Oberlamer, Administrator & Supernanny
- Beiträge: 10532
- Registriert: Samstag 13. Juli 2002, 10:49
-
- Einsteiger
- Beiträge: 297
- Registriert: Sonntag 13. Oktober 2002, 22:02
-
- Neugieriger
- Beiträge: 5
- Registriert: Mittwoch 9. Februar 2005, 16:57
-
- Oberlamer, Administrator & Supernanny
- Beiträge: 10532
- Registriert: Samstag 13. Juli 2002, 10:49
-
- Einsteiger
- Beiträge: 205
- Registriert: Montag 19. April 2004, 21:09
-
- Tuxboxer
- Beiträge: 6044
- Registriert: Montag 17. November 2003, 06:48
-
- Interessierter
- Beiträge: 45
- Registriert: Donnerstag 4. November 2004, 17:45
-
- Oberlamer, Administrator & Supernanny
- Beiträge: 10532
- Registriert: Samstag 13. Juli 2002, 10:49
Die Option alleine bringt nix, auch Start und Stop des Streamings müssen angepasst werden (sofern das bei Netzwerkstreaming überhaupt geht/Sinn macht).
Ich nutze das nicht, von daher sollte es sich jemand ansehen der es auch testen kann.
Ich nutze das nicht, von daher sollte es sich jemand ansehen der es auch testen kann.
There are 10 types of people in the world: those who know binary and those who don't