tobiasm767 Posted March 7, 2007 Share Posted March 7, 2007 Hallo DVBViewer-Enterwickler, ich arbeite gerade an einem Schnittprogramm für das schneiden von h.264 TS. Und ich benutzte den DVBViewer gerne um die geschnittenen Transportstreams zu testen, da man sich im DVBSource-Filter die PTS/PCR-Werte anzeigen lassen kann. Da ich aber bei den geschnittenen TS ab und an immer noch Probleme beim abspielen haben, nun meine Frage: Welche (Zeitabhängigen)Werte nutzt ihr aus dem Stream um ihn abzuspielen? Im Moment berechne ich den PCR und PTS/DTS neu. Nutzt ihr noch was anderes oder habe ich evtl. nur einen Fehler in der Berechnung? mfg Tobias Quote Link to comment
Griga Posted March 7, 2007 Share Posted March 7, 2007 Da ich aber bei den geschnittenen TS ab und an immer noch Probleme beim abspielen habe Welche? Welche (Zeitabhängigen)Werte nutzt ihr aus dem Stream um ihn abzuspielen? Im wesentlichen die PTS, die für die DirectShow-Samples (-> IMediaSample.SetTime) auf einen streamtime-relativen Wert umgesetzt wird. Die Streamtime ist die DirectShow-Zeitbasis und beginnt nach einem Stop -> Run-Übergang des Filtergraphen mit 0. Basis der Umrechnung ist die Differenz der empfangenen PTS zur DirectShow-Streamtime. Sobald die erste verwertbare Zeitangabe eintrifft (wobei es sich um eine Audio-PTS oder PCR aus dem empfangenen TS handeln kann, je nach dem was zuerst eintrudelt), wird der Offset ermittelt und bleibt im folgenden konstant: Offset = erste empfangene Audio-PTS/PCR - aktuelle DirectShow Streamtime. Im folgenden wird von allen empfangenen DVB-PTS dieser Offset abgezogen, um die streamtime-relative DirectShow-PTS zu erhalten, und weiterhin der auf der Eigenschaftsseite des DVBViewer Filters einstellbare Latency-Wert hinzuaddiert: DirectShow PTS = DVB-PTS - Offset + Latency. Die PCR kommt also nur dann einmalig für die Berechnung des Offsets zum Einsatz, wenn zu dem Zeitpunkt noch keine Audio-PTS vorliegt. DTS wird ignoriert. So ungefähr... die Umrechnungs-Komplikationen, die sich daraus ergeben, dass DirectShow auf einer 10 MHz Clock basiert, die DVB-PTS auf 90 khz und die DVB-PCR auf 27 MHz lasse ich mal außen vor Quote Link to comment
tobiasm767 Posted March 8, 2007 Author Share Posted March 8, 2007 (edited) Welche? mal kein Bild, mal kein Ton, mal beides nicht hattes es auch schon hinbekommen, dass die neuen TS im DVBViewer liefen aber dann gingen sie nicht im VLC. Nun gehen sie dort aber nicht mehr im DVBV Also der PCR wird maximal einmal benutzt? Wie groß muss der Vorsprung vor dem PTS mindestens sein oder ist das egal? Was bedeutet die Fehlermeldung im DVBSource-Filter "Last Error: Graph too late(x)"? und danke für die schnelle Antwort! EDIT: also habs hin bekommen und die TS laufen nun auch wieder Aber die Fehlermeldung mit dem "Graph too late(x)" bleibt... Edited March 8, 2007 by tobiasm767 Quote Link to comment
Griga Posted March 8, 2007 Share Posted March 8, 2007 http://www.DVBViewer.info/forum/index.php?...ost&p=90027 Quote Link to comment
tobiasm767 Posted January 20, 2008 Author Share Posted January 20, 2008 hallo, noch mal eine kleine frage zum dvbsource filter. die pcr-anzeige in der dvbsource filteranzeige, nutzt diese nur die pcr program_clock_reference_base oder auch die program_clock_reference_extension? Quote Link to comment
Griga Posted January 21, 2008 Share Posted January 21, 2008 Intern wird natürlich auch die Extension erfasst. Die Anzeige rundet jedoch auf Millisekunden. Quote Link to comment
ASe Posted January 21, 2008 Share Posted January 21, 2008 Ich hätte auch noch eine (eher entwicklungstechnische) Frage zum DVBSource Filter. Kann man die Größe der an den nächsten DirectShow-Filter im Graphen übergebenen Media Samples im DVBSource-Filter beeinflussen (IMediaSample::GetBuffer, GetActualDataLength) und wenn ja, wie? Die momentane Größe liegt nach meinen Erfahrungen bei ca. 8192 Byte. Hintergrund: Ich arbeite momentan an einem Codec und nutze den DVBSource-Filter als Quellfilter. Mein Codec könnte durchschnittlich deutlich mehr Bytes pro Receive-Call verarbeiten. Danke für die Antwort. Quote Link to comment
tobiasm767 Posted January 21, 2008 Author Share Posted January 21, 2008 Intern wird natürlich auch die Extension erfasst. Die Anzeige rundet jedoch auf Millisekunden. danke für die schnelle antwort Quote Link to comment
Griga Posted January 21, 2008 Share Posted January 21, 2008 Kann man die Größe der an den nächsten DirectShow-Filter im Graphen übergebenen Media Samples im DVBSource-Filter beeinflussen Die Anwendung, die ihn verwendet, kann das konfigurieren. Ansonsten nicht. Quote Link to comment
ASe Posted February 7, 2008 Share Posted February 7, 2008 Die Anwendung, die ihn verwendet, kann das konfigurieren. Ansonsten nicht. Laut DirectShow kann man während der Verbindungsherstellung von Output und Input-Pin die Allocator-Requirements angeben. Bezogen auf meinen Filter habe ich also in meinen Input-Pin gesagt, ich möchte einen größeren Buffer vom DVBSource-Output Pin. Die Methode wird auch vom DVBSource Output Pin aufgerufen, nur haben meine Änderungen leider keine Wirkung auf die MediaSample-Größe. Meinst Du mit Anwendung diejenige, die den Filtergraphen aufbaut, also kein Bestandteil des Filtergraphen ist? Z.B. den DVBViewer? Quote Link to comment
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.