Project

General

Profile

Actions

Support Request #2704

closed

ADTF2 tAdditonalDataInfoIndex

Added by hidden almost 6 years ago. Updated almost 6 years ago.

Status:
Closed
Priority:
Normal
Customer:
BOSCH
Department:
CC-DA/ETV
Requester's Priority:
Normal
Support Level:
2nd Level
Resolution:
Solved Issue
Product Issue Numbers:
Affected Products:
Platform:
Windows 7 64bit
Topic:
ADTF::Streaming
FAQ Links:

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);
    // ...
}
Actions #1

Updated by hidden almost 6 years ago

  • 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);
}
Actions #2

Updated by hidden almost 6 years ago

  • Status changed from In Progress to Customer Feedback Required
Actions #3

Updated by hidden almost 6 years ago

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

Actions #4

Updated by hidden almost 6 years ago

  • 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 ?

Actions #5

Updated by hidden almost 6 years ago

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.

Actions #6

Updated by hidden almost 6 years ago

Genau ein Integer benötigen wir. Was ist die empfohlene Vorgehensweise hier?
Ansonsten würde ich dafür MSAI_DeviceOriginalTime missbrauchen.

Actions #7

Updated by hidden almost 6 years ago

  • 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 ?

Actions #8

Updated by hidden almost 6 years ago

@Flo: Nein :-).

Actions #9

Updated by hidden almost 6 years ago

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);
    // ...
}
Actions #10

Updated by hidden almost 6 years ago

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.

Actions #11

Updated by hidden almost 6 years ago

  • 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
Actions #12

Updated by hidden almost 6 years ago

  • Subject changed from ADTF2 tAdditonalDataInfoIndex to ADTF2 tAdditonalDataInfoIndex
  • Status changed from To Be Closed to Closed
Actions

Also available in: Atom PDF