Autor Beitrag
Matthias
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 121



BeitragVerfasst: Do 30.01.03 14:43 
Hallo Leute,

ich gebe eine Wave-Dateien über die Kommandos WaveOutWrite u.s.w aus, und stell diese grsfisch dar. Während des Playback läuft ein Cursor mit und zeigt die aktuell gespielte Position an (mit WaveOutGetPosition realisert). Die Position des Cursors kann ich mit der Maus verschieben. Jetzt möchte ich erreichen, dass das Playback an der neuen Position weitergeht.

Ich suche also eine Möglichkeit die Position der Ausgabe festzulegen.

ciao
Matthias
tommie-lie
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 4373

Ubuntu 7.10 "Gutsy Gibbon"

BeitragVerfasst: Do 30.01.03 19:10 
Na, einfach die Bytezahl berechnen, im Stream entsprechend suchen und von da an weiterlesen. Vorher natürlich Ausgabe stoppen, resetten, damit der aktuelle Block nicht weitergespielt wird (ich kenn' deine Block-Size nicht). Wenn du es Sekunden/Frame-Weise machen willst, müsstest du aus der Align berechnen, welches Byte welchem Frame entspricht. Dafür müsstest du den Header abziehen, also die reinen Daten nehmen, und dann immer in 4-Byte-Schritten (16bit * 2 Kanäle (Stereo) - also immer eine Zahl im Datenbereich, die ganzzahlig durch 4 Teilbar ist, bei anderen Formaten natürlich entsprechend anders). Die 4 Byte entsprechen einem Frame. Wenn du's Sekundenweise machen willst, musst dann auch noch mit der Samplerate rechnen, denn 44.1k Samples sind eine Sekunde. Also alle 44100*4 Bytes ist eine neue Sekunde.

_________________
Your computer is designed to become slower and more unreliable over time, so you have to upgrade. But if you'd like some false hope, I can tell you how to defragment your disk. - Dilbert
Matthias Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 121



BeitragVerfasst: Do 30.01.03 22:55 
Hallo,

vielen Dank für Deine Antwort. Ich habe es eben umgesetzt und es funktioniert schon (bis auf Fehlerbehandlung u.s.w.). Der Rest ist schon klar, schließlich zeichne ich ja die Inhalt der Wave und dafür muß der Waveheader ausgewertet werden.

ciao
Matthias
tommie-lie
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 4373

Ubuntu 7.10 "Gutsy Gibbon"

BeitragVerfasst: Fr 31.01.03 12:19 
könntest du mir dann auch noch sagen, ob es bei dir am Anfang und am Ende auch einen kleinen Knackser gibt (ich glaube nur auf dem rechten Kanal), auch wenn die Header korrekt überpsrungen wurden? Oder funktioniert das Write perfekt? Wenn ja, könntest du mir dann vielleicht den Code deiner Header-Vorbereitung und des Schreibens und des anschließenden Header-Freigebens mal schicken (webmaster@tommie-lie.net)?

_________________
Your computer is designed to become slower and more unreliable over time, so you have to upgrade. But if you'd like some false hope, I can tell you how to defragment your disk. - Dilbert