Automatischer Wechsel nach SPTS Mode vor einer Aufnahme

Wünsche, Anträge, Fehlermeldungen
Torsten73
Erleuchteter
Erleuchteter
Beiträge: 547
Registriert: Mittwoch 30. Juni 2004, 16:06

Automatischer Wechsel nach SPTS Mode vor einer Aufnahme

Beitrag von Torsten73 »

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 :D Was haltet Ihr davon?

Cu
Torsten
fernsehass
Einsteiger
Einsteiger
Beiträge: 297
Registriert: Sonntag 13. Oktober 2002, 22:02

Beitrag von fernsehass »

mhhhh , das wäre ne feine sache :)
i
MOhlmann
Einsteiger
Einsteiger
Beiträge: 205
Registriert: Montag 19. April 2004, 21:09

Beitrag von MOhlmann »

Das halte ich auch für eine gute idee. Vieleicht könnte man dann auch gleich das Zapping unterbinden, wenn eine Aufnahme läuft, und eine meldung ausgeben.

"Achtung Aufnahme läuft! Kein umschalten möglich!"

Das ganze nartülich als Option

Gruß Michael
bronco
Neugieriger
Neugieriger
Beiträge: 5
Registriert: Mittwoch 9. Februar 2005, 16:57

Beitrag von bronco »

Ließe sich das möglicherweise mit einer "recording.start", analog zur "recording.end" lösen?
Das wäre ohnehin nicht schlecht, wenn man ein Möglichkeit hätte, ein Script vor Beginn einer Aufnahme auszuführen (z.B. um noch mal sicherzugehen, dass eine NFS-Freigabe gemountet ist).

B.
fernsehass
Einsteiger
Einsteiger
Beiträge: 297
Registriert: Sonntag 13. Oktober 2002, 22:02

Beitrag von fernsehass »

wenn ich wüsste, welche quelldatei für die aufnahme zuständig ist, könnte man das mit recording.start schon lösen.
Evtl. könnte man auch den spts mode treiber laden.
Wie kann man das im telnet oder so umschalten ??
Mit welchen befehl kann man spts->pes->spts ???
Spooky
Einsteiger
Einsteiger
Beiträge: 338
Registriert: Sonntag 24. Februar 2002, 10:43

Beitrag von Spooky »

@fernsehass

SPTS on
aviaext --avia-spts

SPTS off
aviaext --avia-dualpes

Status
aviaext --playback-mode-state

Spooky

PS: Hab das mal noch korrigiert...
Zuletzt geändert von Spooky am Mittwoch 9. Februar 2005, 21:48, insgesamt 1-mal geändert.
fernsehass
Einsteiger
Einsteiger
Beiträge: 297
Registriert: Sonntag 13. Oktober 2002, 22:02

Beitrag von fernsehass »

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
fernsehass
Einsteiger
Einsteiger
Beiträge: 297
Registriert: Sonntag 13. Oktober 2002, 22:02

Beitrag von fernsehass »

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)
[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.
fernsehass
Einsteiger
Einsteiger
Beiträge: 297
Registriert: Sonntag 13. Oktober 2002, 22:02

Beitrag von fernsehass »

Ich hab grad mal in den dateien gestöbert :)
Da hab ich in vcrcontrol.cpp das gefunden
.
.
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);
.
Wenn ich da nun das draus mache ???. Könnte da die automatische umschaltung funzen ??? oder liege ich da falsch
bool 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);
Das ist bestimmt nicht schön :)
Aber ist der ansatz richtig
fernsehass
Einsteiger
Einsteiger
Beiträge: 297
Registriert: Sonntag 13. Oktober 2002, 22:02

Beitrag von fernsehass »

hat denn keiner ne bemerkung dazu ???????
DieMade
Oberlamer, Administrator & Supernanny
Beiträge: 10532
Registriert: Samstag 13. Juli 2002, 10:49

Beitrag von DieMade »

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();
There are 10 types of people in the world: those who know binary and those who don't
fernsehass
Einsteiger
Einsteiger
Beiträge: 297
Registriert: Sonntag 13. Oktober 2002, 22:02

Beitrag von fernsehass »

ok ich werds mal einbauen und testen
bronco
Neugieriger
Neugieriger
Beiträge: 5
Registriert: Mittwoch 9. Februar 2005, 16:57

Beitrag von bronco »

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.
fernsehass
Einsteiger
Einsteiger
Beiträge: 297
Registriert: Sonntag 13. Oktober 2002, 22:02

Beitrag von fernsehass »

hast du auch mal die "unsaubere" methode probiert. ich bin grad am kompilieren, mal sehn was rauskommt :)
bronco
Neugieriger
Neugieriger
Beiträge: 5
Registriert: Mittwoch 9. Februar 2005, 16:57

Beitrag von bronco »

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.
DieMade
Oberlamer, Administrator & Supernanny
Beiträge: 10532
Registriert: Samstag 13. Juli 2002, 10:49

Beitrag von DieMade »

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
fernsehass
Einsteiger
Einsteiger
Beiträge: 297
Registriert: Sonntag 13. Oktober 2002, 22:02

Beitrag von fernsehass »

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);
DieMade
Oberlamer, Administrator & Supernanny
Beiträge: 10532
Registriert: Samstag 13. Juli 2002, 10:49

Beitrag von DieMade »

Waren beim Zurückschalten nach PES sollte nicht nötig sein (muß dann auch auf 0 abgeprüft werden).
There are 10 types of people in the world: those who know binary and those who don't
fernsehass
Einsteiger
Einsteiger
Beiträge: 297
Registriert: Sonntag 13. Oktober 2002, 22:02

Beitrag von fernsehass »

ich werd dass dann mal heute abend einbauen, und berichten :)
THX
bronco
Neugieriger
Neugieriger
Beiträge: 5
Registriert: Mittwoch 9. Februar 2005, 16:57

Beitrag von bronco »

Bei mir klappt es leider auch so nicht. Dasselbe Ergebnis wie zuvor... Vielleicht hat fernsehass ja mehr Erfolg.

B.
DieMade
Oberlamer, Administrator & Supernanny
Beiträge: 10532
Registriert: Samstag 13. Juli 2002, 10:49

Beitrag von DieMade »

Ist im cvs.
There are 10 types of people in the world: those who know binary and those who don't
MOhlmann
Einsteiger
Einsteiger
Beiträge: 205
Registriert: Montag 19. April 2004, 21:09

Beitrag von MOhlmann »

@DieMade

Danke !!!! :lol: :lol:

Sobald JTG-Riker einen neuen Snap macht werde ich den gleich mal testen :D

Gruß Michael
jmittelst
Tuxboxer
Tuxboxer
Beiträge: 6044
Registriert: Montag 17. November 2003, 06:48

Beitrag von jmittelst »

@MOhlmann - Na dann mal los ;)
cu
Jens
yarish
Interessierter
Interessierter
Beiträge: 45
Registriert: Donnerstag 4. November 2004, 17:45

Beitrag von yarish »

Wäre es möglich die Option in den allgemeinen Aufnahme-Optionen unterzubringen und nicht nur bei der Direktaufnahme ? Hintergrund: TS-Aufnahmen mit udrec als Streaming-Server.
DieMade
Oberlamer, Administrator & Supernanny
Beiträge: 10532
Registriert: Samstag 13. Juli 2002, 10:49

Beitrag von DieMade »

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.
There are 10 types of people in the world: those who know binary and those who don't