digitalwerk community: hiddenhttps://support.digitalwerk.net/https://support.digitalwerk.net/themes/digitalwerk_theme/favicon/dw.ico?16823609612022-01-20T12:28:27Zdigitalwerk community
Redmine Public Support - Support Request #16382: Clock handling for timer runner and playbackhttps://support.digitalwerk.net/issues/16382#change-767532022-01-20T12:28:27Zhidden
<p>Ok. Dann vielen Dank für den super Support!<br />Von mir aus kann das Ticket jetzt geschlossen werden.</p>
<p>Grüße<br />Sebastian</p> Public Support - Support Request #16382: Clock handling for timer runner and playbackhttps://support.digitalwerk.net/issues/16382#change-767512022-01-20T12:12:01Zhidden
<p>Hi Martin,</p>
<p>das bringt mich noch auf eine andere Frage. Ist die Bildung der timestamps in recorder und player noch prinzipiell so, wie bei ADTF2?:<br /><a class="external" href="https://support.digitalwerk.net/adtf/v2/adtf_sdk_html_docs/page_add_adtf_times.html">https://support.digitalwerk.net/adtf/v2/adtf_sdk_html_docs/page_add_adtf_times.html</a></p>
<p>Also werden die sampletimes nicht im recorder angefasst, sondern zusätzlich eine chunktime gespeichert, die dann als Zeitquelle für den playback service dient?</p>
<p>Grüße<br />Sebastian</p> Public Support - Support Request #16382: Clock handling for timer runner and playbackhttps://support.digitalwerk.net/issues/16382#change-766952022-01-19T13:15:06Zhidden
<p>Danke für die Antwort. Also hier nochmal um mein Verständnis zu verifizieren:</p>
<p>Im Playback Mode wird, solange man nicht eine eigene clock registriert, die Reference Clock durch die timestamps der Samples im DAT-File erzeugt.<br />Solange man nicht die Interpolation im Playback Service aktiviert hat, schreitet die Reference Clock also diskret mit den Zeitstempeln aus den samples fort.<br />Der „Default Timer Runner“ hat damit im Playback Mode maximal die Auflösung der Zeitstempel aus dem DAT file.</p>
<p>Wenn ich also z.b. einen Timer Runner habe, der mit 10ms triggern soll, aber alle Daten im DAT-File nur alle 100ms aufgezeichnet wurden, wird der runner nie diese Zykluszeit erreichen.<br />Mir ist klar das dieses Beispiel etwas konstruiert ist, weil man ja oft viele streams in einem DAT-File hat und die Reference Clock über alle samples hinweg gebildet wird, sodass dieses Scenario meist nicht auftreten kann.</p> Public Support - Support Request #16382 (Closed): Clock handling for timer runner and playbackhttps://support.digitalwerk.net/issues/163822022-01-14T11:15:06Zhidden
<p><strong>Supportanfrage</strong></p>
<p>Ich würde gerne wissen, auf welcher Zeitbasis der „Default Timer Runner“ läuft.<br /><a class="external" href="https://support.digitalwerk.net/adtf/v3/adtf_html/page_default_core_objects_plugin.html#section_default_timer_runner">https://support.digitalwerk.net/adtf/v3/adtf_html/page_default_core_objects_plugin.html#section_default_timer_runner</a></p>
<p>Ist das die „Stream Time“?</p>
<p><strong>Lösung</strong></p>
<p>Sämtliches Timing in ADTF wird von der Reference Clock übernommen, zur Laufzeit spricht man von der Stream Time, unabhängig davon, wer sich angemeldet hat, der Taktgeber zu sein für die Reference Clock zu sein.<br />Siehe auch <a class="external" href="https://support.digitalwerk.net/adtf/v3/adtf_html/page_clock_concept.html">https://support.digitalwerk.net/adtf/v3/adtf_html/page_clock_concept.html</a></p>
<p>Im Playback schreitet die Zeit diskret voran. Die Timer holen allerdings "verpasste" Takte geblockt beim ersten Sample nach der nächsten Deadline nach.<br />Das wird sich in einer der nächsten Versionen von ADTF verbessern, in dem die Timer die Möglichkeit bekommen über die Clock dem Player (und seiner Clock) mitzuteilen wann sie denn das nächste mal geweckt werden wollen.</p>
<p>Zusätzlich wurde im Player noch die "reset_recording_offset" Property im Vgl. zu ADTF 2.x entfernt. Heißt die Sample Timestamps und die Streamtime (basierend auf der Chunktime) werden nie mehr manipuliert und sind exakt die Selben wie bei der Aufzeichnung.</p> Public Support - Support Request #6936: adtf::util namespace is missing in the API documentationhttps://support.digitalwerk.net/issues/6936#change-298952019-04-25T14:30:03Zhidden
<p>Hallo Florian,</p>
<p>zurzeit entwickelt ein Student für mich. Daher hatte ich es noch nicht installiert.<br />Deine Antwort bzgl. Std::string stellt mich voll zufrieden.</p>
<p>Zu solchen Dingen würde ich mir mehr Dokumentation über das „große ganze“ wünschen. Mit der 3.5.0 und den neuen Beispielen ist es ja schon viel besser geworden.<br />Aber z.B. properties werden für meinen Geschmack noch zu wenig erklärt. Ich finde finde dort keinen Hinweis, ob sie auch zur Laufzeit ihren Wert ändern können und wie man sich auch change-Events registrieren kann, wie in ADTF2. Aber das wäre eher Stoff für ein neues Ticket...</p> Public Support - Support Request #6936: adtf::util namespace is missing in the API documentationhttps://support.digitalwerk.net/issues/6936#change-298922019-04-25T13:15:04Zhidden
<blockquote>
<p>Es gibt eigentlich nichts was man nicht auch mit Standard Library lösen könnte, z.B. std::string.</p>
</blockquote>
<p>Ich habe gerade kein ADTF3 zur Hand... Wäre es dann also möglich vorher von mir genannte Beispiel mit std::string zu implementieren?<br />Dann wären die utils tatsächlich für mich auch nicht nötig.</p>
<p>Also so:</p>
<pre><code class="cpp syntaxhl"><span class="k">struct</span> <span class="nc">foo</span>
<span class="p">{</span>
<span class="n">tResult</span> <span class="n">GetString</span><span class="p">(</span><span class="n">IString</span><span class="o">&&</span> <span class="n">strValue</span><span class="p">)</span>
<span class="p">{</span>
<span class="k">return</span> <span class="n">strValue</span><span class="p">.</span><span class="n">Set</span><span class="p">(</span><span class="s">"bar"</span><span class="p">);</span>
<span class="p">}</span>
<span class="p">};</span>
<span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">strMyValue</span> <span class="o">=</span> <span class="s">"foo"</span><span class="p">;</span>
<span class="n">foo</span> <span class="n">oFooInst</span><span class="p">;</span>
<span class="n">oFooInst</span><span class="p">.</span><span class="n">GetString</span><span class="p">(</span><span class="n">adtf_string_intf</span><span class="p">(</span><span class="n">strMyValue</span><span class="p">));</span>
</code></pre>
<p>Das Ticket kann von mir aus dann geschlossen werden...</p>
<p>Vielen Dank!<br />Sebastian Kratzert</p> Public Support - Support Request #6936: adtf::util namespace is missing in the API documentationhttps://support.digitalwerk.net/issues/6936#change-297812019-04-24T08:15:04Zhidden
<p>Hallo,</p>
<p>ich wollte eine Funktion benutzen, die eine rvalue referenz auf IString liefert. Um einen String damit zu füllen brauchte ich natürlich erst mal ein konkretes Objekt.<br />Erst nach längerer Suche in den Headern konnte ich ein Beispiel finden, in Form eines adtf::util::cString, weil in der API-Dokumentation nur Klassen verlinkt waren wie adtf_string< T > die nicht so einfach zu benutzen sind.</p>
<p>Heute habe ich jetzt auch noch ein Beispiel in der Dokumentation gefunden: <a class="external" href="https://support.digitalwerk.net/adtf/v3/adtf_html/string__intf_8h.html#a8be13bc6e1ac810e9b27b74c27eece0c">https://support.digitalwerk.net/adtf/v3/adtf_html/string__intf_8h.html#a8be13bc6e1ac810e9b27b74c27eece0c</a><br />Ich denke es wäre sehr hilfreich, wenn das in der description zu IString verlinkt werden könnte. Oder soll man die Utils nicht mehr benutzen. Ich verstehe den Sinn noch nicht so ganz ;-)</p>
<p>In welchem package befinden sich denn die Utils genau? Wenn ich zu <a class="external" href="https://support.digitalwerk.net/adtf/v3/adtf_html/page_delivered_sdk_packages.html">https://support.digitalwerk.net/adtf/v3/adtf_html/page_delivered_sdk_packages.html</a> gehe, sehe ich da nichts mit Utils.</p>
<p>Grüße<br />Sebastian Kratzert</p> Public Support - Support Request #6936 (Closed): adtf::util namespace is missing in the API docum...https://support.digitalwerk.net/issues/69362019-04-23T16:00:23Zhidden
<p><strong>Supportanfrage</strong></p>
<p>Today i tried to find <pre>adtf::util::cString</pre> in the documentation at: <a class="external" href="https://support.digitalwerk.net/adtf/v3/adtf_html/index.html">https://support.digitalwerk.net/adtf/v3/adtf_html/index.html</a><br />But the whole adtf::util:: is not visible there.</p>
<p><strong>Lösung</strong></p>
<p>Product issue ACORE-9994</p>
<p><strong>Workaround</strong></p>
<p>Use std::string</p>
<pre><code class="cpp syntaxhl"><span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">strMyValue</span><span class="p">;</span>
<span class="n">GetIStringFunctionThatYouWantToUse</span><span class="p">(</span><span class="n">adtf_string_intf</span><span class="p">(</span><span class="n">strMyValue</span><span class="p">));</span>
</code></pre>