Datenstrom effizienter aufteilen

Meldur

Erfahrenes Mitglied
Hallo,

ich habe einen IntPtr auf einen Datenstrom mit dieser Folge:
ABAC ABAC ABAC

Nun möchte ich daraus

AA AA AA
BB BB BB
CC CC CC

erzeuge. Also drei Arrays wobei das erste alle A beinhaltet und die anderen beiden jeweils gedoppelt B und C. Es wäre auch folgende Variante möglich:

AAAA
BB
CC

Hat jemad eine Idee, wie ich das effizienter mache, als mit drei FOR-Schleifen, welche durch den Pointer gehen und die Daten einsammeln?

Danke,
Meldur
 
Eine For-Schleife dürfte doch schon reichen. Du weißt ja, dass jedes erste, dritte, fünfte usw. Element ein A ist, alle anderen sind abwechselnd ein B bzw. C. Also iterierst du einmal über "ABAC ABAC ABAC" und fügst das aktuelle Element entweder in das A-Array, B-Array oder C-Array ein, je nach dem welchen Index das Element hat.
 
Ich weiß, aber ich habe gehofft, dass man irgendwas Cooles mit Bitshiften oder Unsafe-Code bewerkstelligen könnte. Da ich den Spaß sehr oft in der Sekunde abarbeiten muss, zählt jede noch so kleine Zeitersparnis.
 
Musst du denn überhaupt Arrays erstellen? Vielleicht kannst du direkt mit deinem IntPtr arbeiten?
 
Gern - ich weiß nur nicht wie? Ich muss jedenfalls immer ein Tripel auslesen und zu einem Wert zusammen fassen. Hier ein Beispiel:
A1a B1 A1b C1 muss zu A1aB1C1 und A1bB1C1 werden. Wäre ein Arbeiten per Pointer da effizienter?
 
Was ich fragen wollte: warum musst du Tripel erstellen? Ohne zu wissen wie du die Daten weiter verarbeitest lässt sich schlecht sagen, ob du irgendwas performanter gestalten kannst.
 
Ok - ich dachte, ich halte es erst einmal einfacher um mich ranzutasten. Was ich konkret vor habe, ist ein YCbCR-Videosignal darzustellen. Dazu müßte ich es in RGB convertieren und dann irgendwie in die Grafikarte geben.
Das YCbCr liegt im 4:2:2 vor - bedeutet, dass ich aus der Folge Y1CbY2Cr (was ABAC entspricht) genau zwei RGB-Pixel bauen kann (Y1CbCr und Y2CbCr). Das muss natürlich entsprechend schnell vonstatten gehen.
Wie ich das dann möglichst performant in die Darstellung bekomme (WPF ist das Ziel), weiß ich noch nicht.
 

Neue Beiträge

Zurück