Suchergebnisse
Suchergebnisse 1-20 von insgesamt 49.
Zitat RFC3550 If an audio application reads blocks covering 160 sampling periods from the input device, the timestamp would be increased by 160 for each such block, regardless of whether the block is transmitted in a packet or dropped as silent. The initial value of the timestamp SHOULD be random, as for the sequence number. Genauso mach ich es. Ein Zufallswert initialisiert den zeitstempel und für jedes neue Paket wird 160(20ms) aufgerechnet. Ebensogroß wie der zu übertragende Payload ist. Als...
Aber du weißt nicht zufällig warum wenn ich RTP Pakete versende und zwar VOIP technisch über einen Gateway(Asterisk) wie so dann die Ausgabe an einem IP Phone viel zu schnell ist. Mache ich bei nach jedem Senden eine Pause von 15ms rein wird halbwegs normal abgespielt. Setze ich die Pause auf 10ms ist das Abspielen zu schnell und setze ich auf 20ms dann leiert die Ausgabe wie eine langsam abgespielte Schallplatte. Timestamp und SequenceNummer werden korrekt übertragen.
Hallo an alle, vorab mal die Frage kennt sich hier jemand mit dem RTP Protokoll aus? Gruß CrazyPlaya
Vllt. kurz zu Veranschaulichung. Ich habe mein sample in einem short* mit der größe 160. Meine Frage ist nun wie iteriere ich durch das array und wie komme ich an die 13 bits? Dann shifte ich nach links(vermutlich) oder nach rechts. oder so? C-/C++-Quelltext 1 2 3 4 for (int i = 0; i < 160; i++) { myarray[i] = myarray[i] << 3; } Versteh ich das so richtig?
Ja das hab ich gerade schon mal gehört mit dem Bitshift um 3. Allerdings weiß ich noch nicht genau wie das funktioniert. Hab noch nie mit Bitoperationen gearbeitet.
Hallo an alle, ich bekomme von einem GSM Decoder ein 160byte großes 13bit aufgelöstes PCM Sample zurück. Mein Player braucht dieses Sample aber in 16bit. Wenn ich das 13bit sample abspiele habe ich Klirrgeräusche dabei. Wie kann ich von 13 auf 16bit erhöhen? Gruß Karsten
Hi PCShadow, könntest du das etwas näher erklären? Hätte da noch eine grundlegende Frage. Die Werte, die im Samplebuffer vorhanden sind ist doch die Bandbreite richtig?
Hi an alle, ich würde gerne die Lautstärke einer Aufnahme von einem Mikrofon automatisch regeln. Sprich ich möchte erreichen das die Lautstärke immer zwischen einem Min- und Maxwert liegt. Wenn Min unterschritten wird soll auf den Min Wert hochgepuscht und wenn max überschritten wird auf den Max Wert runtergepuscht werden. Was genau muss ich tun um dies zu erreichen? Gruß Karsten
Ok Problem gelöst. Lag daran, dass Unlock keinen LPVOID* verlangt. Die Derefenzierung rausgenommen und jetzt klappt es Gruß
Hi an alle, ich möchte einen Wave Sound mit DSound abspielen. Dieser Sound ist als Wave Resource eingebunden. Also lade ich zuerst die Resource. Das funzt auch. Dann Initialisiere ich directsound, lese die Wave Information aus, kreiere den Buffer und möchte den Sound dann abspielen. Locken tut er noch, Speicher kopieren ebenfalls aber bei Unlock halt ausgang mit E_INVALIDARG. Hier mal mein Code: C-/C++-Quelltext 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 ...
Hi an alle, ich zeichne Sprache vom Mikrofon auf. Diese wird in einem Ringbuffer festgehalten. Ab einer bestimmten Größe wird ein Teilbuffer an eine Methode weitergeleitet. Dort wird da ganze runtergesampelt von 16000 auf 8000hz. Vorher läuft ein FIR Filter darüber. Das ganze wird dann uLaw encodiert und via RTP an ein IP Telephone gesendet. Die Ausgabe am Telefon beinhaltet aber ein sehr störendes Knistern. Der FIR Filter scheint in Ordnung zu sein. Könnte es am Buffer oder am Offset liegen? Hi...
Hi an alle, ich zeichne Sprache vom Mikrofon mit DirectSound in einem RingBuffer auf. Und zwar mit 48kHz 16bit PCM. Dabei fange ich alle 20ms aufgezeichnetes ab. Dieses 20ms Sample nehme ich nun und sample es auf 8kHz runter. C-/C++-Quelltext 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 int CAudioOut::Reduce48to8kHz(short* pBuffer, int nBytesToReduce) { ASSERT((nBytesToReduce % 6) == 0); short* pSrc = pBuffer; short* pDst = pBuffer; for(int i = 0; i < (nBytesToReduce / 6); i++) { long val = 0; v...
Problem gelöst, Für Mikrofone benutze ich DirectSoundCaptureEnumerate und für Lautsprecher DirectSoundEnumerate
Guten Morgen allerseits, gibt es über DirectX die Möglichkeit alle angeschlossenen Mikrofon bzw. Lautsprecher aufzulisten und diese dann über eine ID für die Aufzeichnung bzw. das Abspielen von Sounds zu nutzen? Also z.B. habe ich einmal ein Mikro im Laptop eingebaut und normaler Lautsprecherboxen angeschlossen und zum 2.ten habe ich gleichzeitig ein USB Headset angeschlossen. etzt möchte ich als Nutzer halt auswählen können über welches Mikro ich aufzeichne und über welche lautsprecher ich absp...
Ok das sich Thread und Programm den Speicher teilen war mir schon bewusst. Allerdings muss ich ja auch ehrlich gestehen dass ich das erste Mal in der Art mit Threads in Berührung komme. Ich habe zwar schon mal ein bisserl damit rumgetestet allerdings noch nie so intensiv. Und das ist ja doch ein ziemlich komplexes Thema. Soweit habe ich das bisher verstanden. Also erstmal danke für die vielen Infos und Hilfen, versuch jetzt erstmal wieder alleine damit klar zu kommen. Falls ich dennoch Fragen ha...
@knivil: ich weiß nicht recht ob select für mein vorhaben einen Sinn macht, da der Server der mir was schickt immer der gleiche ist.
@dot: Im Moment für Windows soll aber später auch unter Linux laufen. @knivil: Verstehe ich das richtig? bot_done ist praktisch mein queue und die Schleife wird im Thread ausgeführt? Könntest du das Snippet kurz erläutern? Ich muss gestehen jetzt wird es etwas schwierig für mich.
Ja klar habe ich mich schon ein wenig mit Multithreading auseinander gesetzt aber zu sowas speziellen nichts finden können. Die Tutorials die ich finden konnten behandeln im Thread eine Sache und dann wird er wieder beendet.
Und wie macht man das? Entschuldige meine Unwissenheit Vllt. ein beispiel dazu. Wenn die Anwendung jetzt eine Art Messenger wäre dann empfange ich eine Message vom Gegenüber. Darüber möchte ich Informiert werden und diese soll mir im Hauptprozess ausgegeben werden. Darauf möchte ich dann ebenfalls eine Antwort schreiben und das ganze Spiel bis die Sitzung beendet ist. Aber der thread muss dennoch offen bleiben da mir ja auch jemand anderes schreiben könnte. Lassen wir jetzt erst mal weg das mich...
Na ja ich wüde das evtl über den ExitCode machen, also z.B. über return xxx bei bestimmten Nachrichten. Oder wenn es mehrere Daten wären evtl. eine Struktur als Parameter mitgeben und die Werte dann dort reinschreiben. Oder muss ich die zwangsläufig die Reaktion auf die Nachrichten dem thread überlassen?