Support Request #10261
closedGetting Media Description for Stream Type
Description
Supportanfrage
Ich muss derzeit einen Filter nach ADTF3 portieren. Dieser Filter nutzt die Funktionen cDDLImporter::SetXML und anschließend cDDLImporter::GetDDL.
Dadurch bekommt er eine cDDLDescription.
Gibt es in ADTF3 eine Möglichkeit, von einem Inputpin einen XML-String oder eine cDDLDescription zu erhalten?
Ich habe bereit versucht, adtf::services::IMediaDescriptionService::GetStructMediaDescription zu verwenden, allerdings funktioniert dies nur mit dem
ADTFDAT File Player, und auch nur dann, wenn es sich um ein *.dat file mit vorhandener *.description handelt. Bei einer *.adtfdat Datei sind keine
Informationen über den MediaDescriptionService verfügbar.
Lösung
Ist es ein Filter der Daten empfängt und diese mit der Description interpretieren soll? Dann überschreib die AcceptType() Methode und erstell dir gleich eine Codec Factory basierend auf dem Stream Type mit get_codec_factory_from_stream_type() https://support.digitalwerk.net/adtf/v3/adtf_html/namespaceadtf_1_1mediadescription_1_1ant.html#a0de561fb67896f55d71d7e0fe1a3b28b
Als Convenience gibts auch noch das decoding__sample__reader<> template (https://support.digitalwerk.net/adtf/v3/adtf_html/classadtf_1_1mediadescription_1_1flash_1_1decoding__sample__reader.html)
Wichtiger Unterschied zu ADTF2. Ein Stream Type ist immer self-contained. Heißt wenn er eine Media Description enthält, ist die vollständig und man muss sich nichts vom Service holen. Um direkt an die XML Strings ranzukommen gibt es erst ab 3.7 Komfortfunktionen. Im Moment musst Du dir die "md_definitions" und "md_struct" Properties selbst mit get_property<cString>(*pType, "md_definitions") rausholen (https://support.digitalwerk.net/adtf/v3/adtf_html/structadtf_1_1mediadescription_1_1ant_1_1stream__meta__type__default.html).
Da ich deinen Use-case nicht genau kenne, sie dir bitte unbedingt auch die Code Generierung an: https://support.digitalwerk.net/adtf/v3/adtf_html/page_media_description_code_generation.html und https://support.digitalwerk.net/adtf/v3/adtf_html/classadtf_1_1mediadescription_1_1flash_1_1md__sample__data.html
Vielleicht ist auch die DDL Reflection API für Dich an der Stelle interessant um von einem C-Struct eine DDL zu erstellen: https://support.digitalwerk.net/adtf/v3/adtf_html/classadtf_1_1mediadescription_1_1flash_1_1structure.html
Updated by hidden about 4 years ago
- Project changed from Public Support to 11
- Topic set to ADTF::Common
- Customer set to AUDI
- Department set to AST
- Platform Windows 10 64bit added
Updated by hidden about 4 years ago
Hi Alexander,
ganz verstehe ich noch nicht was der Filter mit der Description machen soll.
Ist es ein Filter der Daten empfängt und diese mit der Description interpretieren soll? Dann überschreib die AcceptType() Methode und erstell dir gleich eine Codec Factory basierend auf dem Stream Type mit get_codec_factory_from_stream_type() https://support.digitalwerk.net/adtf/v3/adtf_html/namespaceadtf_1_1mediadescription_1_1ant.html#a0de561fb67896f55d71d7e0fe1a3b28b
Als Convenience gibts auch noch das decoding__sample__reader<> template (https://support.digitalwerk.net/adtf/v3/adtf_html/classadtf_1_1mediadescription_1_1flash_1_1decoding__sample__reader.html)
Wichtiger Unterschied zu ADTF2. Ein Stream Type ist immer self-contained. Heißt wenn er eine Media Description enthält, ist die vollständig und man muss sich nichts vom Service holen. Um direkt an die XML Strings ranzukommen gibt es erst ab 3.7 Komfortfunktionen. Im Moment musst Du dir die "md_definitions" und "md_struct" Properties selbst mit get_property<cString>(*pType, "md_definitions") rausholen (https://support.digitalwerk.net/adtf/v3/adtf_html/structadtf_1_1mediadescription_1_1ant_1_1stream__meta__type__default.html).
Da ich deinen Use-case nicht genau kenne, sie dir bitte unbedingt auch die Code Generierung an: https://support.digitalwerk.net/adtf/v3/adtf_html/page_media_description_code_generation.html und https://support.digitalwerk.net/adtf/v3/adtf_html/classadtf_1_1mediadescription_1_1flash_1_1md__sample__data.html
Vielleicht ist auch die DDL Reflection API für Dich an der Stelle interessant um von einem C-Struct eine DDL zu erstellen: https://support.digitalwerk.net/adtf/v3/adtf_html/classadtf_1_1mediadescription_1_1flash_1_1structure.html
Grüße,
Martin
Updated by hidden about 4 years ago
Hi Martin,
danke, es hat geklappt mit get_property<cString>(*pType, "md_definitions").
Das Problem war, dass eine Funktion den XML-String erwartet hat, um daraus Matlab Daten zu erzeugen.
Außerdem hat der Decoder char-arrays immer als int8-arrays gekennzeichnet, weshalb die Unterscheidung
Problematisch war (im tVariantType gibt’s kein char).
Mit dem XML-String funktioniert es jetzt.
Mit freundlichen Grüßen,
Alexander Fischer
Updated by hidden about 4 years ago
- Project changed from 11 to Public Support
- Subject changed from Portierung ADTF3 to Getting Media Description for Stream Type
- Description updated (diff)
- Status changed from In Progress to To Be Closed
- Private changed from Yes to No
- Topic changed from ADTF::Common to ADTF::MediaDescription
- Resolution set to Solved Issue