2016-05-11 22 views
0

Ich schreibe einen Code, der Beispiele von Windows Media Foundation an live555 weiterleitet. Während MF seine 100 ns Zeitstempel verwendet, verwendet Live555 "Echtzeit" in Form von struct timeval. Ich weiß, wie man Letzteres aus GetSystemTime() vortäuscht, aber ich frage mich, ob es möglich ist, die "Echtzeit" von der MF-Abtastzeit abzuleiten und die Daten an IMFClockStateSink::OnClockStart weitergegeben zu werden?Kann ich MFTIME auf die reale Systemzeit beziehen?

Antwort

0

Media Foundation bietet auch eine Präsentationszeitquelle basierend auf der Systemuhr.

Während dieser Präsentation Quelle auf Systemuhr Zeitstempel basierte Bereitstellung von (vermutlich mit oder mit gemeinsamer Quelle mit timeGetTime aber ich nicht überprüfen), ist diese Quelle nicht die einzige Option.

Sie sollten also grundsätzlich keine Annahmen über die Korrelation zwischen Uhrzeit und aktueller "absoluter" Zeit des Systems treffen. Zeitstempel sollen nur relative Zeitinkremente bei einer Rate von 10 MHz liefern.

If the presentation clock uses some other time source, ...

+0

Ich brauche aber für LIVE555 eine Art absolute Zeit zu erzeugen. Die Frage ist: Wie würde ich das tun? Meine beste Schätzung atm würde das 'MESessionStarted'-Ereignis erfassen, die Systemzeit im Handler abrufen und annehmen, dass die relative Zeit, die als' hnsSystemTime 'an' IMFClockStateSink :: OnClockStart 'weitergegeben wurde, ungefähr die relative Zeit ist, zu der 'MESessionStarted' generiert wurde. Ist das sinnvoll? – Christoph

+0

Warum speichern Sie nicht beide Uhrwerte beim Start der Sitzung und berechnen Sie dann die absolute Zeit als absolute Absolutzeit für den Sitzungsstart und die Differenz der Medientakte. Ich nehme an, dass Sie daran gedacht haben - ja, es macht Sinn. –

+0

Das war die Idee - die Frage ist, ob es einen "besseren" Weg gibt (offensichtlich nicht, wenn ich dich richtig verstehe) und ob das 'MESessionStarted' Ereignis der richtige Ort dafür ist. – Christoph