Support Request #454
closedADTFS-46407 External Clock
Description
Supportanfrage:
Hintergrund:
"Demo Clock Filter" wird in einer Konfiguration mit einem HDRec verwendet. Laut Doku wird die Clock in dem DAT file "gespeichert", bzw. die tADTFClockRelation. Das DAT soll in einer neuen Konfiguration abgespielt werden, hier werden die Zeitstempel beider Uhren benötigt.
Daher:
a) Aus der Doku heraus fehlt mir die Vorstellung was mit der Clock Relation gemeint ist. Wird in dieser extension wirklich nur alle 5s so eine Relation abgespeichert? Wenn ja, sind 5s nicht ein ziemlich großer Abstand?
b) Bekommt man dann aus jedem MediaSample beide Clocks mit den entsprechenden Zeitstempeln? Oder muss man das immer "von Hand" mit der Clock Relation synchronisieren?
Viele Grüße,
Anja
Lösung:
In ADTF gibt es default mäßig zwei verschiedene Zeitgeber, die ADTF clock (ADTFTime) und die ADTF stream clock (StreamTime).
ADTFTime: Zeit seit ADTF Start
StreamTime: Zeit ab dem Zeitpunkt des RunLevels: Running.
a) Aus der Doku heraus fehlt mir die Vorstellung was mit der Clock Relation gemeint ist. Wird in dieser extension wirklich nur alle 5s so eine Relation abgespeichert? Wenn ja, sind 5s nicht ein ziemlich großer Abstand?
Die clock relation ist die Beziehung zwischen der StreamTime und dem jeweiligen Zeitgeber.
z.B. adtf_stream (StreamTime) & ADTFTime
oder für selbst implementierte Zeitgeber: StreamTime & MyClock
Da nur lediglich der Offset zwischen beiden Zeiten gespeichert wird, ist es egal das es "nur" alle ~5 Sekunden geschieht.
b) Bekommt man dann aus jedem MediaSample beide Clocks mit den entsprechenden Zeitstempeln? Oder muss man das immer "von Hand" mit der Clock Relation synchronisieren?
Jedes MediaSample bekommt bei der Aufnahme mit dem HDR alle zur Zeit der Aufnahme verfügbaren clocks.
adtf_clock_ext:
This extension contains an array of all recorded clocks stored in adtf::tADTFClockExtensionItem elements. The first element specifies the ADTFTime clock and the second element the StreamTime clock that have been used during recording. The remaining elements list all clocks. The amount of elements is defined by dividing the size of the extension by sizeof(adtf::tADTFClockExtensionItem).
Laut SDK doku werden alle clock extensions die aufgenommen wurden in einem array aus adtf::tADTFClockExtensionItem elementen gespeichert.
Ich hab leider kein code Beispiel, wie man an diese heran kommt.
Der Aufbau sieht so aus:
typedef struct { tChar strClockName[256]; // ADTF_MAX_EXTERNAL_CLOCK_NAME_LENGTH } tADTFClockExtensionItem;
Files