On Sat, Dec 19, 2009 at 14:29:31 +0600, Alexandre Ratchov wrote: > ok, beside a small nit: > >> > ++ >> > ++ if ((par.bits == 16 && par.le != askpar.le) || > it's not necessary to check whether ``par.bits == 16'' > because below you already check if ``par.bits != 16''. > >> > ++ par.bits != askpar.bits || >> > ++ par.sig != askpar.sig || >> > ++ par.pchan != askpar.pchan || >> > ++ ((par.rate * 1000 < askpar.rate * 995) || >> > ++ (par.rate * 1000 > askpar.rate * 1005))) >> > ++ throw error("Parameters not supported"); >> > ++ > -- Alexandre > > oops, fixed also regen PLIST
-- Alexandr Shadchin
Index: bonk/Makefile =================================================================== RCS file: /cvs/ports/audio/bonk/Makefile,v retrieving revision 1.12 diff -N -u -p bonk/Makefile --- bonk/Makefile 15 Sep 2007 21:26:00 -0000 1.12 +++ bonk/Makefile 19 Dec 2009 09:44:26 -0000 @@ -3,6 +3,7 @@ COMMENT= lossy/lossless audio coder DISTNAME= bonk-0.6 +PKGNAME= ${DISTNAME}p0 CATEGORIES= audio HOMEPAGE= http://www.logarithmic.net/pfh/bonk @@ -13,11 +14,11 @@ PERMIT_PACKAGE_CDROM= Yes PERMIT_PACKAGE_FTP= Yes PERMIT_DISTFILES_CDROM= Yes PERMIT_DISTFILES_FTP= Yes -WANTLIB= c m ossaudio stdc++ +WANTLIB= c m sndio stdc++ MASTER_SITES= http://www.logarithmic.net/pfh-files/bonk/ -MAKE_FLAGS= CXX='${CXX}' CXXFLAGS='${CXXFLAGS}' LIBS=-lossaudio +MAKE_FLAGS= CXX='${CXX}' CXXFLAGS='${CXXFLAGS}' LIBS=-lsndio FAKE_FLAGS= PREFIX='${WRKINST}${PREFIX}' INSTALL='${INSTALL_PROGRAM}' NO_REGRESS= Yes Index: bonk/patches/patch-bonk_cc =================================================================== RCS file: /cvs/ports/audio/bonk/patches/Attic/patch-bonk_cc,v diff -N -u -p bonk/patches/patch-bonk_cc --- /dev/null 19 Dec 2009 09:44:26 -0000 +++ bonk/patches/patch-bonk_cc 19 Dec 2009 09:44:26 -0000 @@ -0,0 +1,115 @@ +$OpenBSD$ +--- bonk.cc.orig Sun Jun 23 09:58:57 2002 ++++ bonk.cc Sat Dec 19 03:40:21 2009 +@@ -56,14 +56,21 @@ using namespace std; + # define AFMT_S16_NE AFMT_S16_BE + # endif + # endif +-#elif defined(__NetBSD__) || defined(__OpenBSD__) ++#elif defined(__NetBSD__) + # define dsp_device "/dev/sound" + # include <soundcard.h> ++#elif defined(__OpenBSD__) ++# define USE_SNDIO ++# include <sndio.h> + #endif + + #include "utility.h" + #include "wav.h" + ++#ifdef USE_SNDIO ++static struct sio_hdl *hdl; ++#endif ++ + //Accuracy of fixed point calculations + const int lattice_shift = 10, + sample_shift = 4, +@@ -540,6 +547,7 @@ struct decoder { + } + }; + ++#ifndef USE_SNDIO + FILE *open_dsp(int rate,bool stereo) { + int device = open(dsp_device,O_WRONLY); + if (device < 0) +@@ -558,6 +566,7 @@ FILE *open_dsp(int rate,bool stereo) { + + return fdopen(device,"wb"); + } ++#endif + + bool has_parameter(int &argc,char **&argv,char *name,char *&value) { + for(int i=1;i<argc-1;i++) { +@@ -597,10 +606,41 @@ void play_file(char *name) { + + deco.begin(f_in); + ++#ifdef USE_SNDIO ++ struct sio_par par, askpar; ++ ++ hdl = sio_open(NULL, SIO_PLAY, 0); ++ if (hdl == NULL) ++ throw error("Failed to open audio device"); ++ ++ sio_initpar (&par); ++ par.pchan = deco.channels; ++ par.rate = deco.rate; ++ par.bits = 16; ++ par.sig = 1; ++ par.le = SIO_LE_NATIVE; ++ par.appbufsz = par.rate / 4; ++ ++ askpar = par; ++ if (!sio_setpar(hdl, &par) || !sio_getpar(hdl, &par)) ++ throw error("Failed to set parameters"); ++ ++ if (par.le != askpar.le || ++ par.bits != askpar.bits || ++ par.sig != askpar.sig || ++ par.pchan != askpar.pchan || ++ ((par.rate * 1000 < askpar.rate * 995) || ++ (par.rate * 1000 > askpar.rate * 1005))) ++ throw error("Parameters not supported"); ++ ++ if (!sio_start(hdl)) ++ throw error("Failed to start audio device"); ++#else + if (deco.channels > 2) + throw error("Don't know how to play more than 2 channels"); + + FILE *f_out = open_dsp(deco.rate,deco.channels>1); ++#endif + + while(deco.length_remaining) { + vector<int> samples; +@@ -615,12 +655,20 @@ void play_file(char *name) { + else + little_samples[i] = samples[i]; + } ++#ifdef USE_SNDIO ++ sio_write(hdl, &(little_samples[0]), 2 * little_samples.size()); ++#else + fwrite(&(little_samples[0]),2,little_samples.size(),f_out); + fflush(f_out); ++#endif + } + + fclose(f_in); ++#ifdef USE_SNDIO ++ sio_close(hdl); ++#else + fclose(f_out); ++#endif + } + + void do_play(int argc,char **argv) { +@@ -929,6 +977,9 @@ int main(int argc,char **argv) { + } + + } catch(error e) { ++#ifdef USE_SNDIO ++ sio_close(hdl); ++#endif + fprintf(stderr,"\nError: %s\n",e.message); + return 1; + } Index: bonk/pkg/PLIST =================================================================== RCS file: /cvs/ports/audio/bonk/pkg/PLIST,v retrieving revision 1.1.1.1 diff -N -u -p bonk/pkg/PLIST --- bonk/pkg/PLIST 12 Jul 2001 20:45:10 -0000 1.1.1.1 +++ bonk/pkg/PLIST 19 Dec 2009 09:44:26 -0000 @@ -1,2 +1,2 @@ @comment $OpenBSD: PLIST,v 1.1.1.1 2001/07/12 20:45:10 naddy Exp $ -bin/bonk +...@bin bin/bonk