Hallo Community, ich möchte in C (Betriebssystem unabhänig, auf einem Mikrocontroller) soetwas wie einen Bitstream erzeugen. Beispiel: uint8_t streamArray[100]; Nun möchte ich in dieses Array bits "streamen..." Ich stelle mir das so vor, dass ich an die Zugriffsfuntion immer 1 Byte übergebe zusammen mit der anzahl der Bits die aus diesem Byte gespeichert werden sollen. Die Funktion hängt die beschriebenen Bits dann an den Stream an. Die Umsetzung dürfte nicht so kompliziert sein, wenn man dann aber noch Funtionalitäten wie padding, kompression usw. haben möchte wirds aber doch schnell komplexer im Umfang. So etwas wie Streamobjekte wären super. Ich wollte einfach mal fragen ob jemand vielleicht ne fertige Klasse hierzu hat. Eigentlich bin ich mir sicher, dass fast jeder Audiocodec soetwas beinhalten müsste und da gibt es doch viele die open Source sind, vielleicht schau ich auch mal da rein... Ich bin für Tipps dankbar!
Ah sorry, ich meinte nicht "Klasse" (brauch das nicht in C++) sondern Modul oder Lib.
@Nico 22: Also das soll quasi an eine Speicherstelle die ich definiere, zB das byte array. Also ich hab inzwischen was gefunden: http://www.koders.com/c/fid46B07257984E46E374FBD93AED1146BADABE9BD3.aspx?s=search Ein Teil der Lib enthält genau das was ich brauche. Bin mir nicht ganz sicher wie das mit der Lizenz ist, oben steht LGPL, im Copyright vermerk steht dann nix mehr dazu. Aber ich glaub für nen Studienprojekt sollte ich das schon nehmen dürfen, oder? Mich wundert es im übrigen dass es so schwer war solche Funktionen zu finden, scheint mir kein übermässiger Spezialfall zu sein.
Rainer K. schrieb: > @Nico 22: Also das soll quasi an eine Speicherstelle die ich definiere, > zB das byte array. Wenn du es allgmein haben willst, dann verfügt dein Stream-Modul über einen Funktionspointer. Jedesmal wenn es ein Byte fertig zusammengesetzt hat, setzt es dieses Byte über diesen Funktionspointer ab. Das kann man dann auch weiter treiben. Ein 2-tes Modul, welches über eine Funktion ein Byte entgegennimmt und es durch die Kompression jagt und seinerseits wieder über einen Funktionspointer verfügt, über welchen es ein Byte aus dem Kommpressionsergebnis loswird. (sofern das Komressionsverfahren so aufgebaut ist, dass man nicht auf ältere Bytes rückgreifen muss) Jubelt man daher dem Stream Modul die Input Funktion des Kompressions-Modul als Ausgabefunktion unter, dann hat man ein Kombinationsobjekt geschaffen, welches man als einen Stream ansehen kann, der auch kompremiert. Dazu dann noch eine Funktion, die eintreffende Bytes einfach nacheinander im Speicher ablegt. Und diese Funktion jubelt man dann wiederrum dem Kompressionsmodul als Ausgabefunktion unter. (Oder eine Funktion die ein Byte auf ein File schreibt oder eine Funktion die das Byte in einen Netzwerksocket stopft oder ....) > Mich wundert es im übrigen dass es so schwer war solche Funktionen zu > finden, scheint mir kein übermässiger Spezialfall zu sein. Keine Ahnung. Bits in einem Byte sammeln und das Byte auf eine Ausgabestrecke zu bringen klingt jetzt nicht so übermässig kompliziert als das ich da lange danach suchen würde.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.