Project

General

Profile

Actions

Support Request #14520

closed

How to send byte arrays / memory buffers within samples

Added by hidden almost 3 years ago. Updated over 2 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 10 64bit
Topic:
ADTF::StreamingSDK
FAQ Links:

Description

Supportanfrage

Um Byte Arrays über pins zu verschicken habe ich folgende Implementierungsbeispiele gefunden.

https://support.digitalwerk.net/adtf/v3/adtf_html/page_streaming_architecture.html#sec_sample

Was ist der Unterschied zwischen folgenden Beispielen
"Set a memory buffer to the sample"
"Write a memory buffer to the samples buffer"

Aus Quellcode und Beschreibung ist es mir direkt nicht ersichtlich.

Lösung

Beide Möglichkeiten machen am Ende genau dasselbe, es gibt quasi keinen Unterschied. Der einzige Unterschied besteht darin, dass
  • mit "Set a memory buffer to the sample" wird die Methode ISample::Set gerufen (daher das "Set a memory buffer... ")
  • mit Write a memory buffer to the samples Buffer wird erst der Buffer "geholt" mit ISample::WriteLock und dann mit ISampleBuffer::Write beschrieben (daher der Name "Write a memory buffer...")

Das ISample::Set macht in seiner Umsetzung genau dasselbe intern, d.h. es holt sich den Sample Buffer, Macht einen WriteLock darauf, Kopiert den Memory Blcok mit Write und released den Lock wieder. Solange ein WriteLock auf dem SampleBuffer ist, kann kein ReadLock gemacht werden. Der SampleBuffer ist somit gegen ein gleichzeitiges beschreiben und lesen abgesichert.
Grund für die Absicherung ist, dass ISampleBuffer ein Interface ist, wie ISample auch und es verschiedene Implementierungen geben kann (normalerweise verwenden alle immer die Default-Implemetierung, aber man weiß ja nie).

Actions #1

Updated by hidden almost 3 years ago

  • Status changed from New to In Progress
  • Private changed from No to Yes
  • Topic set to ADTF::StreamingSDK
Actions #2

Updated by hidden almost 3 years ago

  • Status changed from In Progress to Customer Feedback Required

Hallo Thomas,

Beide Möglichkeiten machen am Ende genau dasselbe, es gibt quasi keinen Unterschied. Der einzige Unterschied besteht darin, dass
(1) mit "Set a memory buffer to the sample" wird die Methode ISample::Set gerufen (daher das "Set a memory buffer... ")
(2) mit Write a memory buffer to the samples Buffer wird erst der Buffer "geholt" mit ISample::WriteLock und dann mit ISampleBuffer::Write beschrieben (daher der Name "Write a memory buffer...")

Gern ändere ich die Formulierung, wenn das nicht eindeutig und schwer verständlich ist.

Viele Grüße Pierre

Actions #3

Updated by hidden almost 3 years ago

Hallo Pierre,
bei dem Beispiel 1 wird kein "WriteLock" auf dem sample durchgeführt wie im Beispiel 2.
Ist es im Beispiel 1 dann nicht notwendig für eine sichere Ausführung ?
Was sind die Gründe für das Ausführen eines WriteLock ?
Gruß Thomas

Actions #4

Updated by hidden almost 3 years ago

Hallo Thomas,

Das ISample::Set macht in seiner Umsetzung genau dasselbe intern, d.h. es holt sich den Sample Buffer, Macht einen WriteLock darauf, Kopiert den Memory Blcok mit Write und released den Lock wieder. Solange ein WriteLock auf dem SampleBuffer ist, kann kein ReadLock gemacht werden. Der SampleBuffer ist somit gegen ein gleichzeitiges beschreiben und lesen abgesichert.
Grund für die Absicherung ist, dass ISampleBuffer ein Interface ist, wie ISample auch und es verschiedene Implementierungen geben kann (normalerweise verwenden alle immer die Default-Implemetierung, aber man weiß ja nie).

Grüße Pierre

Actions #5

Updated by hidden almost 3 years ago

Hallo Pierre,
danke. Diese Erklärung hat mir gefehlt.

es macht mich immer ein bisschen vorsichtig / stutzig, wenn in einem Beispiel Elemente enthalten sind und in einem anderen nicht.

Meine Fragen sind beantwortet, von meiner Seite kann das Ticket geschlossen werden.
Gruß Thomas

Actions #6

Updated by hidden almost 3 years ago

  • Status changed from Customer Feedback Required to To Be Closed
  • Resolution set to Solved Issue
Actions #7

Updated by hidden almost 3 years ago

  • Project changed from 5 to Public Support
  • Subject changed from Memory Buffer über Samples verschicken. to How to send byte arrays / memory buffers within samples
  • Description updated (diff)
  • Private changed from Yes to No
Actions #8

Updated by hidden over 2 years ago

  • Status changed from To Be Closed to Closed
Actions

Also available in: Atom PDF