Объяснение:
Мой ADTF-фильтр получает в качестве входных данных два двойных значения, а на выходе представляет собой структуру. Структура содержит несколько двойных значений.
typedef struct {
double ValueX;
double ValueY;
double ValueZ;
} tStruct;
Моя проблема:
Я хотел увидеть свои значения в «Просмотре сигналов». Но я получаю эту ошибку:
warning | 00:00:15:015 | Media Description Service: No Media Description found for struct type '' on pin 'Filter/ValueX/'. This pin will not be available in SignalView! | media_description_signal_provider.cpp(158) | 12736/8516 | C:\tools\ADTF\2.14.2\bin\adtf_devenv.exe | OK | No error | cMediaManager_plugin
Что я пробовал
Я немного поиграл с редактором MediaDescription Editor и попытался посмотреть, как это делается в примерах, предоставленных adtf. Но пока ничего не работает.
Предупреждение (без ошибок) точно описывает, чего не хватает: для выходного контакта, который вы используете в своей структуре, не задано описание носителя.
Я предполагаю, что вы используете что-то подобное в своем методе Init:
m_oOutputPin.Create("output", cObjectPtr<IMediaType>(new cMediaType(0, 0)), static_cast<IPinEventSink*> (this));
Итак, вам нужно расширить создание типа носителя с помощью вашей структуры:
m_oOutputPin.Create("output", cObjectPtr<IMediaType>(new cMediaType(0, 0, 0, "tStruct")), static_cast<IPinEventSink*> (this));
Затем он будет установлен, а также сгенерирован из вашей структуры.
Посмотрите также демо https://support.digitalwerk.net/adtf/v2/adtf_sdk_html_docs/page_demo_media_desc_coder.html и структуру tSimpleStruct_BE, например.