/dev/dsp buffer beállítása

 ( stage81 | 2007. március 2., péntek - 13:01 )

Sziasztok!

Van egy kis problémám... egy hanglejátszó programocskát készítek, mely - ebben a pillanatban még csak - beolvas egy wav file-t, beállítja a /dev/dsp-t ioctl segítségével, majd rálöki a nyers hangot.
Ezzel nincs semmi problémám, a gondom a hangkártya buffer beállításánál van, ugyanis a hangkari kb 3 mp-nyi hanganyagot elbufferel, ami azt jelenti, hogy a lejátszás után még 3 mp-ig zenél a drága...
Tud abban nekem valaki segíteni, hogy c alatt hogyan lehet beállítani egy file bufferelését?

Előre is köszi

S81

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

Van valami indokod hogy OSS-t hasznalj? (kb. 2004 ota obsolate a Linuxban)
amugy a bufferre lehetsz hatassal pl. a SNDCTL_DSP_SETFRAGMENT-el.

A nativ OSS 64k DMA buffert hasznal amugy, de te valoszinuleg az ALSA OSS emulaciojat hasznalod. Ott pedig nagy valoszinuseg szerint nem nagyon szolhatsz bele errol az oldalrol az buffer meretbe :-(...

Zsiraf

p.s.: nem sok koze van a file buffereleshez :-)
p.s.: www.alsa-project.org

Köszi a válaszod, befutó vagy ;-) ... Én az SNDCTL_DSP_SETBLKSIZE -ra gyanakodtam, ezek szerint rosszul :-)
Natív oss-t használok, mert nem szeretném, ha a lejátszó programomon kívűl más is tudná használni a hangkarit ;-)
Tényleg köszi

Stage81

Én az SNDCTL_DSP_SETBLKSIZE -ra gyanakodtam, ezek szerint rosszul :-)
Hat, mivel nem letezik... :-(

Zsiraf

Most csak ezt talaltam hirtelen, de talan tudod hasznalni...
http://manuals.opensound.com/developer/SNDCTL_DSP_SETFRAGMENT.html

Zsiraf

> Van valami indokod hogy OSS-t hasznalj? (kb. 2004 ota obsolate a Linuxban)

Esetleg azert jo, mert igy egy normalisan megirt program meg elmukodik jo nehany egyeb oprendszer alatt is. Az ALSA pedig gyakorlatilag Linux-only (viszont az altalad is emlegetett OSS-emulacioval 2 legyet ut egy csapasra.)

... beállítja a /dev/dsp-t ioctl segítségével, ...
Mely "oprendszeren" lehet /dev/dsp-t beallitani a Linux-on kivul?

Zsiraf

No...
Köszi a linkeket, már megoldotta szaszq a problémám :-) SETBLKSIZE valóban nincs, csak gugli dobott fel nekem néhány nem létező megoldást, néztem is nagyokat...
A progi csak linuxra készül ;-)

Üdv mindenkinek
Stage81

Hát OSS (kompatibilis?) van Solarisra, *BSD-re. És akár az is elképzelhető, hogy pl. aki kompatibilitásra is ad, az akár az IOCTL-eket is implementálja. Speciel mintha FreeBSD-n lenne jó pár IOCTL az OSS-hez.
(Ha már - miért is ennyire _fontos_, hogy Linuxra legyen? Miért baj az, ha megy máson is?)