Support Request #2704
closed
ADTF2 tAdditonalDataInfoIndex
Added by hidden almost 6 years ago.
Updated almost 6 years ago.
Requester's Priority:
Normal
Description
Supportanfrage
habt Ihr ein internes Beispiel oder eine kurze Anleitung wie man enum tAdditonalDataInfoIndex { MSAI_DeviceOriginalTime = 0, MSAI_Counter = 1, MSAI_InfoUserOffset = 200 } für MSAI_InfoUSerOffset verwendet?
Ich möchte zu dem Bildsample eine Check Summe übertragen und möchte dafür nicht MSAI_DeviceOriginalTime missbrauchen wenn möglich.
Lösung
Du musst einfach nur wissen, dass 0 (=MSAI_DeviceOriginalTime) bis 199 (=MSAI_InfoUserOffset - 1) reserved ist, ab 200 (=MSAI_InfoUserOffset) kannst du machen was du willst.
ucom::cObjectPtr<IMediaSampleInfo> pSampleInfo;
if (IS_OK(pMediaSample->GetInterface(IID_ADTF_MEDIA_SAMPLE_INFO, (tVoid**)&pSampleInfo)))
{
pSampleInfo->SetInfoInt(IMediaSampleInfo::MSAI_InfoUserOffset, 0x05ADFACE);
pSampleInfo->SetInfoInt(IMediaSampleInfo::MSAI_InfoUserOffset + 1, 0xCAFEBABE);
// ...
}
- Status changed from New to In Progress
- Topic set to ADTF::Streaming
Hi Bane,
folgendes Snippet sollte dir dabei helfen:
ucom::cObjectPtr<IMediaSampleInfo> pSampleInfo;
if (IS_OK(pMediaSample->GetInterface(IID_ADTF_MEDIA_SAMPLE_INFO, (tVoid**)&pSampleInfo)))
{
tmHardwareTime = pSampleInfo->SetInfoStr(IMediaSampleInfo::MSAI_InfoUserOffset, strChecksum);
}
- Status changed from In Progress to Customer Feedback Required
Florian Roth wrote:
Hi Bane,
folgendes Snippet sollte dir dabei helfen:
[...]
Hallo Florian,
Meine eigentliche Frage war die konkrete Bedeutung von
MSAI_InfoUserOffset, und ob man das auch erweitern und beliebige Typen
nutzen kann, wie z.B.:
tUint32 offset = IMediaSampleInfo::MSAI_InfoUserOffset;
pSampleInfo->SetInfoInt(offset + 1, 0x05ADFACE);
pSampleInfo->SetInfoInt(offset + 2, 0xCAFEBABE);
Danke im Voraus!
VG Bane
- Status changed from Customer Feedback Required to In Progress
Puh, das ist so alter nicht dokumentierter Code, das einzige was ich beitragen kann, in der Doku steht, dass explizit diese Werte verwendet werden.
So wie ich es verstehe, betrifft es vorgefertigte Stellen im Indexed File, heißt du kannst ihn zwar ändern, was aber die Interpretation/Zuordnung betrifft, habe ich meine Zweifel (ausgwertet wird das imho nirgens).
Deshalb die vorgegebenen Werte.
@Martin, hast du Input ?
Bane hat es genau richtig vermutet: Alles kleiner als IMediaSampleInfo::MSAI_InfoUserOffset ist reserviert, alles drüber steht für eigene Definitionen zur Verfügung.
Ich nehme an die Checksumme ist ein Integer, oder? In Hinblick auf ADTF3 Kompatibilität und Performance würde ich keine Strings (so wie von Flo oben angedeutet) in IMediaSampleInfo ablegen.
Genau ein Integer benötigen wir. Was ist die empfohlene Vorgehensweise hier?
Ansonsten würde ich dafür MSAI_DeviceOriginalTime missbrauchen.
- Status changed from In Progress to Customer Feedback Required
In Hinblick auf ADTF3 Kompatibilität und Performance würde ich keine Strings (so wie von Flo oben angedeutet) in IMediaSampleInfo ablegen.
Das hab ich total überlesen... natürlich keinen String sondern Integer...
Genau ein Integer benötigen wir. Was ist die empfohlene Vorgehensweise hier?
ucom::cObjectPtr<IMediaSampleInfo> pSampleInfo;
if (IS_OK(pMediaSample->GetInterface(IID_ADTF_MEDIA_SAMPLE_INFO, (tVoid**)&pSampleInfo)))
{
pSampleInfo->SetInfoInt(IMediaSampleInfo::MSAI_InfoUserOffset, 0x05ADFACE);
pSampleInfo->SetInfoInt(IMediaSampleInfo::MSAI_InfoUserOffset + 1, 0xCAFEBABE);
// ...
}
Ansonsten würde ich dafür MSAI_DeviceOriginalTime missbrauchen.
Nein, das ist reserviert, siehe Martins Antwort.
- "Alles kleiner als IMediaSampleInfo::MSAI_InfoUserOffset ist reserviert, alles drüber steht für eigene Definitionen zur Verfügung."
Arbeitet hierfür mit >= MSAI_InfoUserOffset
@Martin: Einwände ?
D.h. das muss so laufen?
ucom::cObjectPtr<IMediaSampleInfo> pSampleInfo;
if (IS_OK(pMediaSample->GetInterface(IID_ADTF_MEDIA_SAMPLE_INFO, (tVoid**)&pSampleInfo)))
{
pSampleInfo->SetInfoInt(IMediaSampleInfo::MSAI_InfoUserOffset + 1, 0xCAFEBABE);
// ...
}
Ja, das Code Snippet ist ja bis auf den Index gleich.
Meins startet bei MSAI_InfoUserOffset (=200=), deins bei MSAI_InfoUserOffset + 1 (=201)
-> Du musst einfach nur wissen, dass 0 (=MSAI_DeviceOriginalTime) bis 199 (=MSAI_InfoUserOffset - 1) reserved ist, ab 200 (=MSAI_InfoUserOffset) kannst du machen was du willst.
- Project changed from 5 to Public Support
- Description updated (diff)
- Status changed from Customer Feedback Required to To Be Closed
- Private changed from Yes to No
- Resolution set to Solved Issue
- Subject changed from ADTF2 tAdditonalDataInfoIndex to ADTF2 tAdditonalDataInfoIndex
- Status changed from To Be Closed to Closed
Also available in: Atom
PDF