Wenn man beim Modul Stream Recorder von DVBDream v1.4i p1 die Aufzeichnung mit Start Record startet läuft die Aufzeichnung bis man auf eine anderen Kanal umschaltet, danach nicht mehr. Woran liegt das?
Wie muss man den Sourcecode DVBDreamModuleSDKv17 ändern, damit die Aufzeichnung auch nach den Umschalten auf einen anderen Kanal weiter läuft?
Warum werden während der Aufzeichnung im DVBDream-Fenster die Packet Losses und im Logfile die Continuity Errors hochgezählt? Im aufgezeichneten Transportstream sind keine Continuity Errors erkennbar.
Wie du ja weißt, musst du einen Stream-Filter mit einer eigenen CallBack-Funktion bei DD setzen, damit du die Daten-Pakete bekommst und die auf die Platte schreiben kannst.
Wenn du das Programm wechselst, verwirft DD diesen Filter und sendet keine Daten mehr.
Warum ? Keine Ahnung, aber ich könnte mir da so einige Gründe vorstellen.
ACHTUNG JETZT KOMMT WAS PROGRAMMIER-TECHNISCHES IN DELPHI !!!
--->>> Nur für Programmier-Insider !!!
Gehört hier eigentlich nicht hin, aber mal ne Ausnahme ...
Damit du auch nach Umschalten weiter aufzeichnen kannst musst du folgendes machen:
In der Delphi-Projekt-Datei für das Modul (also die ???.DPR, hier die DLL) must du die folgenden Funktionen einfügen:
Zitat
function BeforeChannelChange(pChannelInfo: PChannelInfo): BOOL; stdcall; export;
begin
// hier den Code für das Erkennen V O R einer Programm-Umschaltung
// ggf. die laufende Aufnahme stoppen
// ACHTUNG: Diese Funktion kann mehrfach aufgerufen werden !!!
result := false; // Must be false !
end;
function AfterChannelChange(pChannelInfo: PChannelInfo): BOOL; stdcall; export;
begin
// hier den Code für das Erkennen N A C H einer Programm-Umschaltung
// ggf. neue Aufnahme starten
// ACHTUNG: Diese Funktion kann mehrfach aufgerufen werden !!!
result := true;
end;
Dazu gehört noch am Ende nach dem Schlüsselwort EXPORTS die Angabe der Funktionen:
Die beiden Funktionen oben werden von DD angestoßen und du must darin entsprechend reagieren.
Noch mal ACHTUNG: Die func's können mehrfach aufgerufen werden !
Da kann man sich behelfen, in dem man globale Var's (Boolean) jeweils einmal setzt, prüft und wechselseitig in den jeweiligen func's wieder zurücksetzt.
In der jeweils übergebenen Variablen 'pChannelInfo' stehen alle Daten für das neue Programm.
Siehe auch MODULEAPI.PAS
Vergessene Pakete und Kontinuitäts-Fehler stammen in erster Linie vom Empfangsteil und werden durch den Demodulator (NICHT der Demultiplexer) erzeugt.
Wenn der Demod (im Tuner) die fehlenden Daten auf dem MPEG-Daten-Strom wieder herstellen kann (sind nur wenige), fällt das nicht auf und alles bleibt flüssig.
Fehlen viele oder wichtige Pakete / Frames, kommt es zu 'Glitches' oder kleinen Rucklern.
In der Aufnahme ist das dann so 'gewollt', bzw. es gibt ja keinen Demod in der Form, so das dass nicht angezeigt wird / werden kann.
Ruckelt dann doch was und / oder es ruckelt 'live', dann liegt das eher daran, das der Graph keine 'Kontinuität' hat -> Daten kommen zu langsam (Platte, unwahrscheinlich) oder irgendwas blockiert die Task-Verteilung / -Priorität im System (z. B. ein Virenscanner).
Der Beitrag wurde 4 mal editiert, zuletzt von ScanMan am 09.07.2010 - 20:21.
ACHTUNG JETZT KOMMT WAS PROGRAMMIER-TECHNISCHES IN DELPHI !!!
--->>> Nur für Programmier-Insider !!!
Gehört hier eigentlich nicht hin, aber mal ne Ausnahme ...
Damit du auch nach Umschalten weiter aufzeichnen kannst musst du folgendes machen:
In der Delphi-Projekt-Datei für das Modul (also die ???.DPR, hier die DLL) must du die folgenden Funktionen einfügen:
Danke, das wars.
Zitat
Vergessene Pakete und Kontinuitäts-Fehler stammen in erster Linie vom Empfangsteil und werden durch den Demodulator (NICHT der Demultiplexer) erzeugt.
Es ist kein Empfangsteil im Einsatz, der Transportstream wird mit dem File-Device aus einer fehlerfreien Datei (ohne Contiunity Errors und ohne TEI Errors) gelesen. Inzwischen habe ich herausgefunden was passiert. Wenn im Transportstream, der gelesen wird, nur eine PID drin ist werden keine Continuity Errors angezeigt. Sind mehrere PIDs drin kommen Continuity Errors.
DD müsste den Continuity Check für jede PID getrennt durchführen, tut dies aber offensichtlich nicht bei sfp.wPID := $2000 (kompletter Transportstream).
Dies führt dazu, dass während laufender Aufzeichnung mit dem StreamRecorder durch schlechten Empfang verursachte Continuity Errors durch die hohe Anzahl falscher Continuity Errors nicht oder nur schwer erkennbar sind.
Es ist / sind gerade 1 registrierte(r) Benutzer und 35 Gäste online. Neuester Benutzer: redking201
Mit 580 Besuchern waren am 06.01.2010 - 18:31 die meisten Besucher gleichzeitig online.
Registrierte Benutzer online: redking201AdministratorModeratorMemberUser