Move from net, speak freely understands VAT/RTP well

This commit is contained in:
Andrey A. Chernov 1996-11-11 23:17:44 +00:00
parent c5b7b8c6aa
commit 8ac8c0f883
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=4405
18 changed files with 962 additions and 0 deletions

View File

@ -0,0 +1,50 @@
# New ports collection makefile for: speak_freely
# Original WWW site: http://www.fourmilab.ch/speakfree/unix/index.html
# Version required: 6.1b
# Date created: 18 Apr 1996
# Whom: ache
#
# $Id: Makefile,v 1.5 1996/10/25 16:49:22 ache Exp $
#
DISTNAME= speak_freely-6.1b
CATEGORIES+= net audio security
MASTER_SITES= http://www.fourmilab.ch/speakfree/unix/
MAINTAINER= ache@FreeBSD.ORG
LIB_DEPENDS= gsm\\.1\\.0:${PORTSDIR}/audio/gsm
UTILS= sfspeaker sfmike sflwl
DEMNS= sfecho sflwld
DDEMNS= sfvod
SFLIB= ${PREFIX}/lib/speak_freely
do-install:
if [ ! -d ${SFLIB} ]; then \
install -d -o ${BINOWN} -g ${BINGRP} -m 755 ${SFLIB}; \
fi
cd ${WRKSRC}; \
$(INSTALL_DATA) ring.au ${SFLIB}
cd ${WRKSRC}; \
for p in ${UTILS}; do \
$(INSTALL_PROGRAM) $$p ${PREFIX}/bin; \
$(INSTALL_MAN) $$p.1 ${PREFIX}/man/man1; \
done;
cd ${WRKSRC}; \
for p in ${DEMNS}; do \
$(INSTALL_PROGRAM) $$p ${PREFIX}/sbin; \
$(INSTALL_MAN) $$p.1 ${PREFIX}/man/man1; \
done;
cd ${WRKSRC}; \
for p in ${DDEMNS}; do \
$(INSTALL_SCRIPT) $$p ${PREFIX}/sbin; \
$(INSTALL_MAN) $$p.1 ${PREFIX}/man/man1; \
done;
.if !defined(NOMANCOMPRESS)
for p in ${UTILS} ${DEMNS} ${DDEMNS}; do \
gzip -9nf ${PREFIX}/man/man1/$$p.1; \
done
.endif
.include <bsd.port.mk>

View File

@ -0,0 +1 @@
MD5 (speak_freely-6.1b.tar.gz) = 366b66297186dc7e02afbb5227a33ec8

View File

@ -0,0 +1,219 @@
*** Makefile.orig Mon Aug 12 15:52:16 1996
--- Makefile Fri Oct 25 17:50:11 1996
***************
*** 11,18 ****
#LFLAGS = -laudio -lcurses -lm
# SunOS 4.1.x
! CC = cc -fsingle -DOLDCC
! LFLAGS = -lcurses -ltermcap -lm
# Solaris 2.x courtesy of Hans Werner Strube (strube@physik3.gwdg.de)
# (-fsingle is needed for pre-4.0 compilers and is ignored by 4.0 in
--- 11,18 ----
#LFLAGS = -laudio -lcurses -lm
# SunOS 4.1.x
! #CC = cc -fsingle -DOLDCC
! #LFLAGS = -lcurses -ltermcap -lm
# Solaris 2.x courtesy of Hans Werner Strube (strube@physik3.gwdg.de)
# (-fsingle is needed for pre-4.0 compilers and is ignored by 4.0 in
***************
*** 35,42 ****
# Depending on how your driver handles non-blocking I/O,
# you may also have to add -DAUDIO_BLOCKING to the
# CCFLAGS line.
! #CCFLAGS = -DM_LITTLE_ENDIAN
! #LFLAGS = -lcurses -ltermcap -lcompat -lm
# Linux 1.x, courtesy of KeyJ Phade (phade@powerweb.de)
#
--- 35,42 ----
# Depending on how your driver handles non-blocking I/O,
# you may also have to add -DAUDIO_BLOCKING to the
# CCFLAGS line.
! CCFLAGS = -DM_LITTLE_ENDIAN
! LFLAGS = -lcurses -ltermcap -lcompat -lm
# Linux 1.x, courtesy of KeyJ Phade (phade@powerweb.de)
#
***************
*** 62,73 ****
#CCFLAGS = -DHEWLETT_PACKARD -DOLDCC
#LFLAGS = -lAlib -lcurses -ltermcap -lm
# Where Perl is located on your system. This is used to make
# a directly-executable version of sfvod.
! PERL = /usr/local/bin/perl
# If your audio hardware is half duplex, uncomment the next line
! #DUPLEX = -DHALF_DUPLEX
# If your getdomainname() does not return the DNS domainname, define:
#DOMAIN=-DMYDOMAIN=\"somedomain.net\"
--- 62,75 ----
#CCFLAGS = -DHEWLETT_PACKARD -DOLDCC
#LFLAGS = -lAlib -lcurses -ltermcap -lm
+ PREFIX=/usr/local
+
# Where Perl is located on your system. This is used to make
# a directly-executable version of sfvod.
! PERL = /usr/bin/perl
# If your audio hardware is half duplex, uncomment the next line
! DUPLEX = -DHALF_DUPLEX
# If your getdomainname() does not return the DNS domainname, define:
#DOMAIN=-DMYDOMAIN=\"somedomain.net\"
***************
*** 96,106 ****
CARGS = -DInternet_Port=$(INTERNET_PORT)
#DEBUG = -g -DHEXDUMP
! DEBUG = -O
# Compiler flags
! CFLAGS = $(DEBUG) -Iadpcm -Ilpc -Igsm/inc -Imd5 -Iidea -Ilibdes $(CARGS) -DRelno=$(REL) $(DUPLEX) $(CCFLAGS) $(DOMAIN)
PROGRAMS = sfspeaker sfmike sflwld sflwl sfecho sfvod
--- 98,116 ----
CARGS = -DInternet_Port=$(INTERNET_PORT)
#DEBUG = -g -DHEXDUMP
! DEBUG =
!
! .if exists(/usr/lib/libdes.a)
! LDES=-ldes
! IDES=
! .else
! LDES=libdes/libdes.a
! IDES=-Ilibdes
! .endif
# Compiler flags
! CFLAGS += $(DEBUG) -Iadpcm -Ilpc -Iidea $(IDES) -I/usr/include -I${PREFIX}/include $(CARGS) -DRelno=$(REL) $(DUPLEX) $(CCFLAGS) $(DOMAIN)
PROGRAMS = sfspeaker sfmike sflwld sflwl sfecho sfvod
***************
*** 108,120 ****
SPKROBJS = speaker.o codecs.o deskey.o g711.o rate.o rtpacket.o soundbyte.o ulaw.o usleep.o vatpkt.o vox.o hp_audio.o
! sfspeaker: $(SPKROBJS) adpcmlib.o lpclib.o lpc10lib.o gsmlib.o deslib.o md5lib.o idealib.o libdes.o xdsub.o
! $(CC) $(SPKROBJS) adpcm/adpcm-u.o des/des.o md5/md5.o idea/idea.o lpc10/liblpc10.a gsm/lib/libgsm.a lpc/lpc.o xdsub.o libdes/libdes.a $(LFLAGS) -o sfspeaker
MIKEOBJS = mike.o codecs.o deskey.o g711.o rate.o rtpacket.o soundbyte.o ulaw.o usleep.o vatpkt.o xdsub.o hp_audio.o
! sfmike: $(MIKEOBJS) adpcmlib.o lpclib.o lpc10lib.o gsmlib.o deslib.o md5lib.o idealib.o libdes.o
! $(CC) $(MIKEOBJS) adpcm/adpcm-u.o des/des.o md5/md5.o idea/idea.o -lm lpc10/liblpc10.a gsm/lib/libgsm.a lpc/lpc.o libdes/libdes.a $(LFLAGS) -o sfmike
LWLDOBJS = lwld.o xdsub.o
--- 118,130 ----
SPKROBJS = speaker.o codecs.o deskey.o g711.o rate.o rtpacket.o soundbyte.o ulaw.o usleep.o vatpkt.o vox.o hp_audio.o
! sfspeaker: $(SPKROBJS) adpcmlib.o lpclib.o lpc10lib.o deslib.o idealib.o libdes.o xdsub.o
! $(CC) $(SPKROBJS) adpcm/adpcm-u.o des/des.o idea/idea.o lpc10/liblpc10.a -L${PREFIX}/lib -lgsm lpc/lpc.o xdsub.o -lmd $(LDES) $(LFLAGS) -o sfspeaker
MIKEOBJS = mike.o codecs.o deskey.o g711.o rate.o rtpacket.o soundbyte.o ulaw.o usleep.o vatpkt.o xdsub.o hp_audio.o
! sfmike: $(MIKEOBJS) adpcmlib.o lpclib.o lpc10lib.o deslib.o idealib.o libdes.o
! $(CC) $(MIKEOBJS) adpcm/adpcm-u.o des/des.o idea/idea.o lpc10/liblpc10.a -lm -L${PREFIX}/lib -lgsm lpc/lpc.o -lmd $(LDES) $(LFLAGS) -o sfmike
LWLDOBJS = lwld.o xdsub.o
***************
*** 128,135 ****
ECHOOBJS = echo.o codecs.o g711.o rtpacket.o ulaw.o xdsub.o
! sfecho: $(ECHOOBJS) md5lib.o
! $(CC) $(ECHOOBJS) md5/md5.o adpcm/adpcm-u.o lpc/lpc.o $(LFLAGS) -o sfecho
sfvod: sfvod.pl
echo \#\! $(PERL) >sfvod
--- 138,145 ----
ECHOOBJS = echo.o codecs.o g711.o rtpacket.o ulaw.o xdsub.o
! sfecho: $(ECHOOBJS)
! $(CC) $(ECHOOBJS) adpcm/adpcm-u.o lpc/lpc.o -lmd $(LFLAGS) -o sfecho
sfvod: sfvod.pl
echo \#\! $(PERL) >sfvod
***************
*** 145,155 ****
chmod 755 sfvod
adpcmlib.o:
! ( echo "Building ADPCM library."; cd adpcm ; make CC="$(CC)" )
echo "ADPCM" >adpcmlib.o
libdes.o:
( echo "Building LIBDES library."; cd libdes ; make -f Makefile.sf CC="$(CC) $(CCFLAGS) $(DEBUG)" )
echo "LIBDES" >libdes.o
lpclib.o:
--- 155,167 ----
chmod 755 sfvod
adpcmlib.o:
! ( echo "Building ADPCM library."; cd adpcm ; make CC="$(CC) $(CCFLAGS)" )
echo "ADPCM" >adpcmlib.o
libdes.o:
+ .if !exists(/usr/lib/libdes.a)
( echo "Building LIBDES library."; cd libdes ; make -f Makefile.sf CC="$(CC) $(CCFLAGS) $(DEBUG)" )
+ .endif
echo "LIBDES" >libdes.o
lpclib.o:
***************
*** 161,167 ****
echo "LPC" >lpc10lib.o
gsmlib.o:
! ( echo "Building GSM library."; cd gsm ; make CC="$(CC)" )
echo "GSM" >gsmlib.o
deslib.o:
--- 173,179 ----
echo "LPC" >lpc10lib.o
gsmlib.o:
! ( echo "Building GSM library."; cd gsm ; make CC="$(CC) $(CCFLAGS)" )
echo "GSM" >gsmlib.o
deslib.o:
***************
*** 169,179 ****
echo "DES" >deslib.o
md5lib.o:
! ( echo "Building MD5 library."; cd md5 ; make CC="$(CC)" )
echo "MD5" >md5lib.o
idealib.o:
! ( echo "Building IDEA library."; cd idea ; make CC="$(CC)" )
echo "IDEA" >idealib.o
codecs.o: codecs.c speakfree.h
--- 181,191 ----
echo "DES" >deslib.o
md5lib.o:
! ( echo "Building MD5 library."; cd md5 ; make CC="$(CC) $(CCFLAGS)" )
echo "MD5" >md5lib.o
idealib.o:
! ( echo "Building IDEA library."; cd idea ; make CC="$(CC) $(CCFLAGS)" )
echo "IDEA" >idealib.o
codecs.o: codecs.c speakfree.h

View File

@ -0,0 +1,14 @@
*** mike.c.orig Tue Apr 23 14:45:52 1996
--- mike.c Fri Oct 25 19:11:15 1996
***************
*** 687,692 ****
--- 687,695 ----
(sb->buffer.buffer_len > 16)) {
pktlen += sizeof(sb->sendinghost);
}
+ /* must stay in network order for debugging output */
+ sb->compression = htonl(sb->compression);
+ sb->buffer.buffer_len = htonl(sb->buffer.buffer_len);
}
}
}

View File

@ -0,0 +1,74 @@
*** adpcm/Makefile.bak Fri Sep 1 14:58:19 1995
--- adpcm/Makefile Fri Oct 25 18:55:46 1996
***************
*** 1,7 ****
#
# Makefile for adpcm and test programs
# -------------------
! CFLAGS=-O -I..
# May need this on a sun:
#CFLAGS=-O -I/usr/demo/SOUND
--- 1,7 ----
#
# Makefile for adpcm and test programs
# -------------------
! CFLAGS+=-I..
# May need this on a sun:
#CFLAGS=-O -I/usr/demo/SOUND
*** des/Makefile.bak Thu Nov 2 22:38:58 1995
--- des/Makefile Fri Oct 25 18:55:46 1996
***************
*** 1,4 ****
! CFLAGS=-O
all: des.o
--- 1,4 ----
! #CFLAGS=-O
all: des.o
*** idea/Makefile.bak Wed Aug 2 22:39:19 1995
--- idea/Makefile Fri Oct 25 18:55:46 1996
***************
*** 6,13 ****
# Compiler flags
! CC = cc
! CFLAGS = -O
all: idea.o
--- 6,13 ----
# Compiler flags
! #CC = cc
! #CFLAGS = -O
all: idea.o
*** libdes/Makefile.bak Wed Apr 17 23:49:33 1996
--- libdes/Makefile Fri Oct 25 18:55:46 1996
***************
*** 30,37 ****
OPTS= $(OPTS0) $(OPTS1) $(OPTS2)
! CC=cc
! CFLAGS= -O $(OPTS) $(CFLAG)
#CC=gcc
#CFLAGS= -O3 -fomit-frame-pointer $(OPTS) $(CFLAG)
--- 30,37 ----
OPTS= $(OPTS0) $(OPTS1) $(OPTS2)
! #CC=cc
! CFLAGS+= $(OPTS) $(CFLAG)
#CC=gcc
#CFLAGS= -O3 -fomit-frame-pointer $(OPTS) $(CFLAG)

View File

@ -0,0 +1,101 @@
*** soundbyte.c.orig Mon Apr 8 17:39:41 1996
--- soundbyte.c Fri Oct 25 20:36:06 1996
***************
*** 96,101 ****
--- 96,106 ----
}
#endif
+ #ifndef sun
+ #ifdef HALF_DUPLEX
+ static int oldvol = -1;
+ #endif
+ #endif
/* SOUNDINIT -- Open the sound peripheral and initialise for
access. Return TRUE if successful, FALSE
***************
*** 145,150 ****
--- 150,170 ----
}
ioctl(Audio_fd, AUDIO_SETINFO, &Audio_info);
#endif
+ #ifndef sun
+ #ifdef HALF_DUPLEX
+ if (iomode == O_RDONLY) {
+ if (oldvol == -1)
+ oldvol = soundgetvol();
+ soundplayvol(0);
+ } else if ( iomode == O_WRONLY
+ && oldvol != -1
+ ) {
+ if (soundgetvol() == 0)
+ soundplayvol(oldvol);
+ oldvol = -1;
+ }
+ #endif
+ #endif
return TRUE;
}
if (errno != EINTR) {
***************
*** 160,165 ****
--- 180,194 ----
void soundterm()
{
if (audiof >= 0) {
+ #ifndef sun
+ #ifdef HALF_DUPLEX
+ if (oldvol != -1) {
+ if (soundgetvol() == 0)
+ soundplayvol(oldvol);
+ oldvol = -1;
+ }
+ #endif
+ #endif
if (close(audiof) < 0) {
perror("closing audio device");
}
***************
*** 210,219 ****
arg = (value << 8) | value;
! if (ioctl(Audio_fd, MIXER_WRITE(SOUND_MIXER_PCM), &arg) < 0)
! perror("SOUND_MIXER_PCM");
#endif
}
/* SOUNDRECGAIN -- Set recording gain from 0 (minimum) to 100 (maximum). */
--- 239,268 ----
arg = (value << 8) | value;
! if (ioctl(Audio_fd, SOUND_MIXER_WRITE_PCM, &arg) < 0)
! perror("SOUND_MIXER_WRITE_PCM");
#endif
}
+
+ #ifndef sun
+ #ifdef HALF_DUPLEX
+
+ /* SOUNDGETVOL -- Get current playback volume. */
+
+ int soundgetvol()
+ {
+ int arg, v1, v2;
+
+ if (ioctl(Audio_fd, SOUND_MIXER_READ_PCM, &arg) < 0) {
+ perror("SOUND_MIXER_READ_PCM");
+ return -1;
+ }
+ v1 = arg & 0xFF;
+ v2 = (arg >> 8) & 0xFF;
+ return (v1 > v2) ? v1 : v2;
+ }
+ #endif
+ #endif
/* SOUNDRECGAIN -- Set recording gain from 0 (minimum) to 100 (maximum). */

View File

@ -0,0 +1 @@
Voice Communication Over Data Networks.

View File

@ -0,0 +1,8 @@
Speak Freely allows users of a variety of Unix and Unix-
like workstations equipped with audio hardware connected
by a network to converse, using the audio input and output
facilities of the workstation to digitise and later recon-
struct the sound and the network to relay sound packets.
Optional compression is provided, allowing conversations
over relatively low-bandwidth Internet links as well as
local area networks.

View File

@ -0,0 +1,13 @@
bin/sfspeaker
bin/sfmike
bin/sflwl
sbin/sfecho
sbin/sflwld
sbin/sfvod
lib/speak_freely/ring.au
man/man1/sfspeaker.1.gz
man/man1/sfmike.1.gz
man/man1/sflwl.1.gz
man/man1/sfecho.1.gz
man/man1/sflwld.1.gz
man/man1/sfvod.1.gz

View File

@ -0,0 +1,50 @@
# New ports collection makefile for: speak_freely
# Original WWW site: http://www.fourmilab.ch/speakfree/unix/index.html
# Version required: 6.1b
# Date created: 18 Apr 1996
# Whom: ache
#
# $Id: Makefile,v 1.5 1996/10/25 16:49:22 ache Exp $
#
DISTNAME= speak_freely-6.1b
CATEGORIES+= net audio security
MASTER_SITES= http://www.fourmilab.ch/speakfree/unix/
MAINTAINER= ache@FreeBSD.ORG
LIB_DEPENDS= gsm\\.1\\.0:${PORTSDIR}/audio/gsm
UTILS= sfspeaker sfmike sflwl
DEMNS= sfecho sflwld
DDEMNS= sfvod
SFLIB= ${PREFIX}/lib/speak_freely
do-install:
if [ ! -d ${SFLIB} ]; then \
install -d -o ${BINOWN} -g ${BINGRP} -m 755 ${SFLIB}; \
fi
cd ${WRKSRC}; \
$(INSTALL_DATA) ring.au ${SFLIB}
cd ${WRKSRC}; \
for p in ${UTILS}; do \
$(INSTALL_PROGRAM) $$p ${PREFIX}/bin; \
$(INSTALL_MAN) $$p.1 ${PREFIX}/man/man1; \
done;
cd ${WRKSRC}; \
for p in ${DEMNS}; do \
$(INSTALL_PROGRAM) $$p ${PREFIX}/sbin; \
$(INSTALL_MAN) $$p.1 ${PREFIX}/man/man1; \
done;
cd ${WRKSRC}; \
for p in ${DDEMNS}; do \
$(INSTALL_SCRIPT) $$p ${PREFIX}/sbin; \
$(INSTALL_MAN) $$p.1 ${PREFIX}/man/man1; \
done;
.if !defined(NOMANCOMPRESS)
for p in ${UTILS} ${DEMNS} ${DDEMNS}; do \
gzip -9nf ${PREFIX}/man/man1/$$p.1; \
done
.endif
.include <bsd.port.mk>

View File

@ -0,0 +1 @@
MD5 (speak_freely-6.1b.tar.gz) = 366b66297186dc7e02afbb5227a33ec8

View File

@ -0,0 +1,219 @@
*** Makefile.orig Mon Aug 12 15:52:16 1996
--- Makefile Fri Oct 25 17:50:11 1996
***************
*** 11,18 ****
#LFLAGS = -laudio -lcurses -lm
# SunOS 4.1.x
! CC = cc -fsingle -DOLDCC
! LFLAGS = -lcurses -ltermcap -lm
# Solaris 2.x courtesy of Hans Werner Strube (strube@physik3.gwdg.de)
# (-fsingle is needed for pre-4.0 compilers and is ignored by 4.0 in
--- 11,18 ----
#LFLAGS = -laudio -lcurses -lm
# SunOS 4.1.x
! #CC = cc -fsingle -DOLDCC
! #LFLAGS = -lcurses -ltermcap -lm
# Solaris 2.x courtesy of Hans Werner Strube (strube@physik3.gwdg.de)
# (-fsingle is needed for pre-4.0 compilers and is ignored by 4.0 in
***************
*** 35,42 ****
# Depending on how your driver handles non-blocking I/O,
# you may also have to add -DAUDIO_BLOCKING to the
# CCFLAGS line.
! #CCFLAGS = -DM_LITTLE_ENDIAN
! #LFLAGS = -lcurses -ltermcap -lcompat -lm
# Linux 1.x, courtesy of KeyJ Phade (phade@powerweb.de)
#
--- 35,42 ----
# Depending on how your driver handles non-blocking I/O,
# you may also have to add -DAUDIO_BLOCKING to the
# CCFLAGS line.
! CCFLAGS = -DM_LITTLE_ENDIAN
! LFLAGS = -lcurses -ltermcap -lcompat -lm
# Linux 1.x, courtesy of KeyJ Phade (phade@powerweb.de)
#
***************
*** 62,73 ****
#CCFLAGS = -DHEWLETT_PACKARD -DOLDCC
#LFLAGS = -lAlib -lcurses -ltermcap -lm
# Where Perl is located on your system. This is used to make
# a directly-executable version of sfvod.
! PERL = /usr/local/bin/perl
# If your audio hardware is half duplex, uncomment the next line
! #DUPLEX = -DHALF_DUPLEX
# If your getdomainname() does not return the DNS domainname, define:
#DOMAIN=-DMYDOMAIN=\"somedomain.net\"
--- 62,75 ----
#CCFLAGS = -DHEWLETT_PACKARD -DOLDCC
#LFLAGS = -lAlib -lcurses -ltermcap -lm
+ PREFIX=/usr/local
+
# Where Perl is located on your system. This is used to make
# a directly-executable version of sfvod.
! PERL = /usr/bin/perl
# If your audio hardware is half duplex, uncomment the next line
! DUPLEX = -DHALF_DUPLEX
# If your getdomainname() does not return the DNS domainname, define:
#DOMAIN=-DMYDOMAIN=\"somedomain.net\"
***************
*** 96,106 ****
CARGS = -DInternet_Port=$(INTERNET_PORT)
#DEBUG = -g -DHEXDUMP
! DEBUG = -O
# Compiler flags
! CFLAGS = $(DEBUG) -Iadpcm -Ilpc -Igsm/inc -Imd5 -Iidea -Ilibdes $(CARGS) -DRelno=$(REL) $(DUPLEX) $(CCFLAGS) $(DOMAIN)
PROGRAMS = sfspeaker sfmike sflwld sflwl sfecho sfvod
--- 98,116 ----
CARGS = -DInternet_Port=$(INTERNET_PORT)
#DEBUG = -g -DHEXDUMP
! DEBUG =
!
! .if exists(/usr/lib/libdes.a)
! LDES=-ldes
! IDES=
! .else
! LDES=libdes/libdes.a
! IDES=-Ilibdes
! .endif
# Compiler flags
! CFLAGS += $(DEBUG) -Iadpcm -Ilpc -Iidea $(IDES) -I/usr/include -I${PREFIX}/include $(CARGS) -DRelno=$(REL) $(DUPLEX) $(CCFLAGS) $(DOMAIN)
PROGRAMS = sfspeaker sfmike sflwld sflwl sfecho sfvod
***************
*** 108,120 ****
SPKROBJS = speaker.o codecs.o deskey.o g711.o rate.o rtpacket.o soundbyte.o ulaw.o usleep.o vatpkt.o vox.o hp_audio.o
! sfspeaker: $(SPKROBJS) adpcmlib.o lpclib.o lpc10lib.o gsmlib.o deslib.o md5lib.o idealib.o libdes.o xdsub.o
! $(CC) $(SPKROBJS) adpcm/adpcm-u.o des/des.o md5/md5.o idea/idea.o lpc10/liblpc10.a gsm/lib/libgsm.a lpc/lpc.o xdsub.o libdes/libdes.a $(LFLAGS) -o sfspeaker
MIKEOBJS = mike.o codecs.o deskey.o g711.o rate.o rtpacket.o soundbyte.o ulaw.o usleep.o vatpkt.o xdsub.o hp_audio.o
! sfmike: $(MIKEOBJS) adpcmlib.o lpclib.o lpc10lib.o gsmlib.o deslib.o md5lib.o idealib.o libdes.o
! $(CC) $(MIKEOBJS) adpcm/adpcm-u.o des/des.o md5/md5.o idea/idea.o -lm lpc10/liblpc10.a gsm/lib/libgsm.a lpc/lpc.o libdes/libdes.a $(LFLAGS) -o sfmike
LWLDOBJS = lwld.o xdsub.o
--- 118,130 ----
SPKROBJS = speaker.o codecs.o deskey.o g711.o rate.o rtpacket.o soundbyte.o ulaw.o usleep.o vatpkt.o vox.o hp_audio.o
! sfspeaker: $(SPKROBJS) adpcmlib.o lpclib.o lpc10lib.o deslib.o idealib.o libdes.o xdsub.o
! $(CC) $(SPKROBJS) adpcm/adpcm-u.o des/des.o idea/idea.o lpc10/liblpc10.a -L${PREFIX}/lib -lgsm lpc/lpc.o xdsub.o -lmd $(LDES) $(LFLAGS) -o sfspeaker
MIKEOBJS = mike.o codecs.o deskey.o g711.o rate.o rtpacket.o soundbyte.o ulaw.o usleep.o vatpkt.o xdsub.o hp_audio.o
! sfmike: $(MIKEOBJS) adpcmlib.o lpclib.o lpc10lib.o deslib.o idealib.o libdes.o
! $(CC) $(MIKEOBJS) adpcm/adpcm-u.o des/des.o idea/idea.o lpc10/liblpc10.a -lm -L${PREFIX}/lib -lgsm lpc/lpc.o -lmd $(LDES) $(LFLAGS) -o sfmike
LWLDOBJS = lwld.o xdsub.o
***************
*** 128,135 ****
ECHOOBJS = echo.o codecs.o g711.o rtpacket.o ulaw.o xdsub.o
! sfecho: $(ECHOOBJS) md5lib.o
! $(CC) $(ECHOOBJS) md5/md5.o adpcm/adpcm-u.o lpc/lpc.o $(LFLAGS) -o sfecho
sfvod: sfvod.pl
echo \#\! $(PERL) >sfvod
--- 138,145 ----
ECHOOBJS = echo.o codecs.o g711.o rtpacket.o ulaw.o xdsub.o
! sfecho: $(ECHOOBJS)
! $(CC) $(ECHOOBJS) adpcm/adpcm-u.o lpc/lpc.o -lmd $(LFLAGS) -o sfecho
sfvod: sfvod.pl
echo \#\! $(PERL) >sfvod
***************
*** 145,155 ****
chmod 755 sfvod
adpcmlib.o:
! ( echo "Building ADPCM library."; cd adpcm ; make CC="$(CC)" )
echo "ADPCM" >adpcmlib.o
libdes.o:
( echo "Building LIBDES library."; cd libdes ; make -f Makefile.sf CC="$(CC) $(CCFLAGS) $(DEBUG)" )
echo "LIBDES" >libdes.o
lpclib.o:
--- 155,167 ----
chmod 755 sfvod
adpcmlib.o:
! ( echo "Building ADPCM library."; cd adpcm ; make CC="$(CC) $(CCFLAGS)" )
echo "ADPCM" >adpcmlib.o
libdes.o:
+ .if !exists(/usr/lib/libdes.a)
( echo "Building LIBDES library."; cd libdes ; make -f Makefile.sf CC="$(CC) $(CCFLAGS) $(DEBUG)" )
+ .endif
echo "LIBDES" >libdes.o
lpclib.o:
***************
*** 161,167 ****
echo "LPC" >lpc10lib.o
gsmlib.o:
! ( echo "Building GSM library."; cd gsm ; make CC="$(CC)" )
echo "GSM" >gsmlib.o
deslib.o:
--- 173,179 ----
echo "LPC" >lpc10lib.o
gsmlib.o:
! ( echo "Building GSM library."; cd gsm ; make CC="$(CC) $(CCFLAGS)" )
echo "GSM" >gsmlib.o
deslib.o:
***************
*** 169,179 ****
echo "DES" >deslib.o
md5lib.o:
! ( echo "Building MD5 library."; cd md5 ; make CC="$(CC)" )
echo "MD5" >md5lib.o
idealib.o:
! ( echo "Building IDEA library."; cd idea ; make CC="$(CC)" )
echo "IDEA" >idealib.o
codecs.o: codecs.c speakfree.h
--- 181,191 ----
echo "DES" >deslib.o
md5lib.o:
! ( echo "Building MD5 library."; cd md5 ; make CC="$(CC) $(CCFLAGS)" )
echo "MD5" >md5lib.o
idealib.o:
! ( echo "Building IDEA library."; cd idea ; make CC="$(CC) $(CCFLAGS)" )
echo "IDEA" >idealib.o
codecs.o: codecs.c speakfree.h

View File

@ -0,0 +1,14 @@
*** mike.c.orig Tue Apr 23 14:45:52 1996
--- mike.c Fri Oct 25 19:11:15 1996
***************
*** 687,692 ****
--- 687,695 ----
(sb->buffer.buffer_len > 16)) {
pktlen += sizeof(sb->sendinghost);
}
+ /* must stay in network order for debugging output */
+ sb->compression = htonl(sb->compression);
+ sb->buffer.buffer_len = htonl(sb->buffer.buffer_len);
}
}
}

View File

@ -0,0 +1,74 @@
*** adpcm/Makefile.bak Fri Sep 1 14:58:19 1995
--- adpcm/Makefile Fri Oct 25 18:55:46 1996
***************
*** 1,7 ****
#
# Makefile for adpcm and test programs
# -------------------
! CFLAGS=-O -I..
# May need this on a sun:
#CFLAGS=-O -I/usr/demo/SOUND
--- 1,7 ----
#
# Makefile for adpcm and test programs
# -------------------
! CFLAGS+=-I..
# May need this on a sun:
#CFLAGS=-O -I/usr/demo/SOUND
*** des/Makefile.bak Thu Nov 2 22:38:58 1995
--- des/Makefile Fri Oct 25 18:55:46 1996
***************
*** 1,4 ****
! CFLAGS=-O
all: des.o
--- 1,4 ----
! #CFLAGS=-O
all: des.o
*** idea/Makefile.bak Wed Aug 2 22:39:19 1995
--- idea/Makefile Fri Oct 25 18:55:46 1996
***************
*** 6,13 ****
# Compiler flags
! CC = cc
! CFLAGS = -O
all: idea.o
--- 6,13 ----
# Compiler flags
! #CC = cc
! #CFLAGS = -O
all: idea.o
*** libdes/Makefile.bak Wed Apr 17 23:49:33 1996
--- libdes/Makefile Fri Oct 25 18:55:46 1996
***************
*** 30,37 ****
OPTS= $(OPTS0) $(OPTS1) $(OPTS2)
! CC=cc
! CFLAGS= -O $(OPTS) $(CFLAG)
#CC=gcc
#CFLAGS= -O3 -fomit-frame-pointer $(OPTS) $(CFLAG)
--- 30,37 ----
OPTS= $(OPTS0) $(OPTS1) $(OPTS2)
! #CC=cc
! CFLAGS+= $(OPTS) $(CFLAG)
#CC=gcc
#CFLAGS= -O3 -fomit-frame-pointer $(OPTS) $(CFLAG)

View File

@ -0,0 +1,101 @@
*** soundbyte.c.orig Mon Apr 8 17:39:41 1996
--- soundbyte.c Fri Oct 25 20:36:06 1996
***************
*** 96,101 ****
--- 96,106 ----
}
#endif
+ #ifndef sun
+ #ifdef HALF_DUPLEX
+ static int oldvol = -1;
+ #endif
+ #endif
/* SOUNDINIT -- Open the sound peripheral and initialise for
access. Return TRUE if successful, FALSE
***************
*** 145,150 ****
--- 150,170 ----
}
ioctl(Audio_fd, AUDIO_SETINFO, &Audio_info);
#endif
+ #ifndef sun
+ #ifdef HALF_DUPLEX
+ if (iomode == O_RDONLY) {
+ if (oldvol == -1)
+ oldvol = soundgetvol();
+ soundplayvol(0);
+ } else if ( iomode == O_WRONLY
+ && oldvol != -1
+ ) {
+ if (soundgetvol() == 0)
+ soundplayvol(oldvol);
+ oldvol = -1;
+ }
+ #endif
+ #endif
return TRUE;
}
if (errno != EINTR) {
***************
*** 160,165 ****
--- 180,194 ----
void soundterm()
{
if (audiof >= 0) {
+ #ifndef sun
+ #ifdef HALF_DUPLEX
+ if (oldvol != -1) {
+ if (soundgetvol() == 0)
+ soundplayvol(oldvol);
+ oldvol = -1;
+ }
+ #endif
+ #endif
if (close(audiof) < 0) {
perror("closing audio device");
}
***************
*** 210,219 ****
arg = (value << 8) | value;
! if (ioctl(Audio_fd, MIXER_WRITE(SOUND_MIXER_PCM), &arg) < 0)
! perror("SOUND_MIXER_PCM");
#endif
}
/* SOUNDRECGAIN -- Set recording gain from 0 (minimum) to 100 (maximum). */
--- 239,268 ----
arg = (value << 8) | value;
! if (ioctl(Audio_fd, SOUND_MIXER_WRITE_PCM, &arg) < 0)
! perror("SOUND_MIXER_WRITE_PCM");
#endif
}
+
+ #ifndef sun
+ #ifdef HALF_DUPLEX
+
+ /* SOUNDGETVOL -- Get current playback volume. */
+
+ int soundgetvol()
+ {
+ int arg, v1, v2;
+
+ if (ioctl(Audio_fd, SOUND_MIXER_READ_PCM, &arg) < 0) {
+ perror("SOUND_MIXER_READ_PCM");
+ return -1;
+ }
+ v1 = arg & 0xFF;
+ v2 = (arg >> 8) & 0xFF;
+ return (v1 > v2) ? v1 : v2;
+ }
+ #endif
+ #endif
/* SOUNDRECGAIN -- Set recording gain from 0 (minimum) to 100 (maximum). */

View File

@ -0,0 +1 @@
Voice Communication Over Data Networks.

View File

@ -0,0 +1,8 @@
Speak Freely allows users of a variety of Unix and Unix-
like workstations equipped with audio hardware connected
by a network to converse, using the audio input and output
facilities of the workstation to digitise and later recon-
struct the sound and the network to relay sound packets.
Optional compression is provided, allowing conversations
over relatively low-bandwidth Internet links as well as
local area networks.

View File

@ -0,0 +1,13 @@
bin/sfspeaker
bin/sfmike
bin/sflwl
sbin/sfecho
sbin/sflwld
sbin/sfvod
lib/speak_freely/ring.au
man/man1/sfspeaker.1.gz
man/man1/sfmike.1.gz
man/man1/sflwl.1.gz
man/man1/sfecho.1.gz
man/man1/sflwld.1.gz
man/man1/sfvod.1.gz