remove mediastreamer2 and add it as a submodule instead.

This commit is contained in:
Simon Morlat 2010-01-20 11:37:11 +01:00
parent 967779a28c
commit 4cb987ed5f
180 changed files with 4 additions and 51250 deletions

3
.gitmodules vendored
View file

@ -1,3 +1,6 @@
[submodule "linphone/oRTP"]
path = linphone/oRTP
url = git://git.linphone.org/ortp.git
[submodule "linphone/mediastreamer2"]
path = linphone/mediastreamer2
url = git://git.linphone.org/mediastreamer2.git

@ -0,0 +1 @@
Subproject commit d32cda04540a3a2b0604a3184a5fec8dbc6d7b18

View file

@ -1,30 +0,0 @@
*.la
*.lo
.deps
.libs
Makefile
Makefile.in
aclocal.m4
autom4te.cache
compile
config.guess
config.h
config.h.in
config.log
config.status
config.sub
configure
depcomp
install-sh
intltool-extract
intltool-merge
intltool-update
libtool
ltmain.sh
mediastreamer-config.h
mediastreamer-config.h.in
mediastreamer.pc
mediastreamer2.spec
missing
mkinstalldirs
stamp-h1

View file

@ -1,4 +0,0 @@
-kr
--use-tabs
--tab-size4

View file

@ -1 +0,0 @@
Simon MORLAT <simon dot morlat at linphone dot org>

View file

@ -1,340 +0,0 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.

View file

@ -1,54 +0,0 @@
EXTRA_DIST=mediastreamer-config.h.in pkg.list autogen.sh mediastreamer.pc.in mediastreamer2.spec.in mediastreamer2.spec Makefile.macosx
SUBDIRS=src build include tests help
pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = mediastreamer.pc
## oRTP packaging methods:
# `make rpm'
.phony: rpm
rpm:
$(MAKE) dist
# <https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=206841>
TAR_OPTIONS=--wildcards rpmbuild -ta --clean --rmsource --rmspec $(PACKAGE)-$(VERSION).tar.gz
# `make package'
if WITH_EPM
.PHONY: package
PKG_NAME = $(PACKAGE)-$(VERSION)-$(RELEASE)
BUILDROOT=`pwd`/epm-install
package: $(srcdir)/pkg.list $(srcdir)/configure
[ -n "$(BUILDROOT)" ] && rm -rf $(BUILDROOT)/*
[ -n "$(PKG_NAME).*" ] && rm -f $(PKG_NAME).*
$(MAKE) install DESTDIR=$(BUILDROOT)
$(MKEPMLIST) -u $(SYS_USER) -g $(SYS_GROUP) --prefix $(prefix) \
$(BUILDROOT)/$(prefix) > files.list
$(EPM) -v -f native -g -n -a $(ARCH) --keep-files --output-dir pkg \
srcdir=$(srcdir) \
top_srcdir=$(top_srcdir) \
top_builddir=$(top_builddir) \
PACKAGE=$(PACKAGE) \
SUMMARY="$(SUMMARY)" \
VERSION=$(ORTP_PKGCONFIG_VERSION) \
RELEASE=$(RELEASE) \
LICENSE="$(LICENSE)" \
VENDOR="$(VENDOR)" \
PACKAGER="$(PACKAGER)" \
$(PACKAGE) $(srcdir)/pkg.list
rm -rf $(BUILDROOT)
mv -f pkg/$(PACKAGE)-$(ORTP_PKGCONFIG_VERSION)-$(RELEASE).$(EPM_PKG_EXT) $(PKG_NAME).$(ARCH).$(EPM_PKG_EXT)
clean-local:
rm -rf pkg $(BUILDROOT)
rm -f files.list
endif WITH_EPM

View file

@ -1,76 +0,0 @@
# MacOS X Temporary make file
# H.M 2007.05.23
SPEEXDIR = ../../../speex-1.2beta1
GSMDIR = ../../../gsm-1.0-pl12
ORTPDIR = ../../oRTP
INCPATH = -I../include -I$(ORTPDIR)/include -I$(SPEEXDIR)/include -I$(GSMDIR)/inc/
LIBPATH = -L. -L../../../gsm-1.0-pl12/lib
FRAMEWORK = -framework CoreAudio -framework AudioToolbox -framework Carbon -framework AudioUnit
CFLUGS = -g $(INCPATH) -DWORDS_BIGENDIAN -DDEBUG
#CFLUGS = $(INCPATH) -DWORDS_BIGENDIAN
LIBOBJ = mscommon.o msqueue.o msfilerec.o msfilter.o msspeex.o mssndcard.o alaw.o ulaw.o msconf.o msjoin.o msrtp.o ice.o tee.o gsm.o speexec.o audiostream.o msticker.o macsnd.o msfileplayer.o
DYLIB = libms.dylib
all: echo
echo: ../tests/echo.c $(DYLIB)
cc -c $(CFLUGS) ../tests/echo.c
cc -o echo $(FRAMEWORK) $(LIBPATH) echo.o $(DYLIB) -lortp -lspeex -lgsm
clean:
rm -rf *.o *.dylib
$(DYLIB): $(LIBOBJ) libortp.dylib libspeex.dylib
cc -o $(DYLIB) $(FRAMEWORK) -dynamiclib -compatibility_version 1 -current_version 1 $(LIBOBJ) $(LIBPATH) -lortp -lspeex -lgsm
libortp.dylib:
cp $(ORTPDIR)/src/.libs/libortp.dylib .
install_name_tool -id @executable_path/libortp.dylib libortp.dylib
libspeex.dylib:
cp $(SPEEXDIR)/libspeex/.libs/libspeex.dylib .
install_name_tool -id @executable_path/libspeex.dylib libspeex.dylib
msfileplayer.o: msfileplayer.c
gcc -c $(CFLUGS) msfileplayer.c
msticker.o: msticker.c
gcc -c $(CFLUGS) msticker.c
audiostream.o: audiostream.c
gcc -c $(CFLUGS) audiostream.c
speexec.o: speexec.c
gcc -c $(CFLUGS) speexec.c
gsm.o: gsm.c
gcc -c $(CFLUGS) gsm.c
tee.o: tee.c
gcc -c $(CFLUGS) tee.c
ice.o: ice.c
gcc -c $(CFLUGS) ice.c
msrtp.o: msrtp.c
gcc -c $(CFLUGS) msrtp.c
msjoin.o: msjoin.c
gcc -c $(CFLUGS) msjoin.c
msconf.o: msconf.c
gcc -c $(CFLUGS) msconf.c
msfilter.o: msfilter.c
gcc -c $(CFLUGS) msfilter.c
alaw.o: alaw.c
gcc -c $(CFLUGS) alaw.c
ulaw.o: ulaw.c
gcc -c $(CFLUGS) ulaw.c
msfilerec.o: msfilerec.c
gcc -c $(CFLUGS) msfilerec.c
msspeex.o: msspeex.c
gcc -c $(CFLUGS) msspeex.c
mssndcard.o: mssndcard.c
gcc -c $(CFLUGS) mssndcard.c
msqueue.o: msqueue.c
gcc -c $(CFLUGS) msqueue.c
macsnd.o: macsnd.c
gcc -c $(CFLUGS) macsnd.c
mscommon.o: mscommon.c
gcc -c $(CFLUGS) -DPACKAGE_PLUGINS_DIR=\".\" mscommon.c

View file

@ -1,56 +0,0 @@
mediastreamer-2.3.2: ????????
* use libv4l2 when possible to benefit from hardware pixel conversion
* added jpeg over RTP support
mediastreamer-2.3.1: October 5, 2009
* preserve ratio in windows video display (not yet implemented for linux/SDL)
mediastreamer-2.3.0: September 17, 2009
* integrate directshow capture filter for mingw (was a plugin before)
* builds on windows with mingw/msys using ./configure && make (see linphone's README.mingw)
* new parametric equalizer filter (to modify gains per frequency bands), working with natural curves
* new noise-gate feature added to MSVolume
* list of soundcard dynamically updates on windows upon device plugs/unplugs
* MSVolume echo limiter feature improved
mediastreamer-2.2.4: May 4, 2009
* fix crash during video window resizing on windows
* improve documentation
* various little improvements
mediastreamer-2.2.3: 21, January 2009
* rfc3984 support improved
* webcam support on windows largely improved (vfw mode)
* support for configuring video size up to svga
* video output can automatically resize to the size of received video stream
* fix crash when resizing video window
* new MSWebcam object to provide Webcam management and MSFilter instantiation
* alsa bugfixes
mediastreamer-2.2.2: 6, october 2008
* new winsnd3.c file for support of soundcard under windows (seems to work a bit better)
* bugfixes
mediastreamer-2.2.1: 25, january 2008
* video output resizing
* 4CIF and VGA support
* bugfixes
* added snow codec (experimental)
* enable setting of max rtp payload size for all encoders
mediastreamer-2.2.0: 19, November 2007
* new "no webcam" screen
* bandwidth settings improvements
* new REQ_VFU command to request a video encoder to send an I-frame
(implemented for ffmpeg based encoders)
* contributed macosx sound support
* new MSVolume filter to make sound power measurements
* rate control of ffmpeg video codecs
mediastreamer-2.1.0: 23, January 2007
* add support for Video4Linux V2 cameras
* support for mpjeg cameras
* webcam support on windows operational
* video window display ok on windows
* fix bug with quickcam driver on linux
* bandwidth setting improvements.

View file

@ -1,99 +0,0 @@
Project : mediastreamer2 - a modular sound and video processing and streaming
Email : simon.morlat_at_linphone.org
License : GPL
Home Page : http://savannah.gnu.org/projects/linphone
Mediastreamer2 is a GPL licensed library to make audio and
video real-time streaming and processing. Written in pure C,
it is based upon the ortp library.
Design:
------
Using mediastreamer2 will allow you to chain filters in a graph. Each
filter will be responsible for doing some kind of processing and will
deliver data to the next filter. As an example, you could get some
data from network and unpack it in an RTP filter. This RTP filter will
deliver the data to a decoder (speex, G711...) which will deliver it
to a filter that is able to play the PCM data or record it into a .wav
file.
There is a doxygen documentation for more information.
Features:
--------
mediastreamer2 already provides a large set of filters.
Here is a complete list of built-in filters.
All supported platforms:
* RTP receiver
* RTP sender
* tee (duplicate data)
Audio Filters:
* audio capture
* audio playback
* mme API (windows)
* alsa API (linux)
* oss API (linux)
* arts API (linux)
* portaudio API (macosx and other)
* macsnd API (native macosx API -please do more testing...-)
* aq (audio queue, macos API too)
* several audio encoder/decoder: PCMU, PCMA, speex, gsm
* wav file reader.
* wav file recorder.
* resampler.
* conference bridge.
* volume analyser, gain control, and automatic gain control.
* acoustic echo canceller.
* dtmf generation filter.
* parametric equalizer, can be used to compensate the spectral response of a bad quality speaker or microphone
Video Filters:
* video capture
* v4w API (windows, deprecated)
* directshow API (windows)
* video4linux and video4linux2 APIs (linux)
* video display
* v4w API (windows)
* SDL API (linux, macosx...)
* several audio encoder/decoder: H263-1998, MP4V-ES, theora
* image resizer.
* format converter. (RBG24, I420...)
Plugin Filters:
* iLBC decoder/encoder.
* H264 codec, based on x264
Note that, you can build your own components/filters to do your
own processing or support other codecs.
Installation procedure:
-----------------------
The program is known to run on linux, but might work
on any unix and windows systems.
$> ./configure
$> make
$> su -c 'make install'
Contact information:
--------------------
For more information on mediastreamer2, any contributions, or any remarks,
you can contact me at <simon.morlat_at_linphone.org>.
Use the *linphone* mailing list for question about mediastreamer2.
<linphone-developers@nongnu.org>.
Subscribe by writing to:
<linphone-developers-request@nongnu.org> with a subject set to "subscribe".
Commercial support and licensing is provided by Belledonne Communications
http://www.belledonne-communications.com

View file

@ -1,180 +0,0 @@
dnl -*- autoconf -*-
AC_DEFUN([MS_CHECK_DEP],[
dnl $1=dependency description
dnl $2=dependency short name, will be suffixed with _CFLAGS and _LIBS
dnl $3=headers's place
dnl $4=lib's place
dnl $5=header to check
dnl $6=lib to check
dnl $7=function to check in library
dep_name=$2
dep_headersdir=$3
dep_libsdir=$4
dep_header=$5
dep_lib=$6
dep_funclib=$7
other_libs=$8
CPPFLAGS_save=$CPPFLAGS
LDFLAGS_save=$LDFLAGS
LIBS_save=$LIBS
case "$target_os" in
*mingw*)
ms_check_dep_mingw_found=yes
;;
esac
if test "$ms_check_dep_mingw_found" != "yes" ; then
CPPFLAGS=`echo "-I$dep_headersdir"|sed -e "s:-I/usr/include[\ ]*$::"`
LDFLAGS=`echo "-L$dep_libsdir"|sed -e "s:-L/usr/lib\(64\)*[\ ]*::"`
else
CPPFLAGS="-I$dep_headersdir"
LDFLAGS="-L$dep_libsdir"
fi
LIBS="-l$dep_lib"
$2_CFLAGS="$CPPFLAGS"
$2_LIBS="$LDFLAGS $LIBS"
AC_CHECK_HEADERS([$dep_header],[AC_CHECK_LIB([$dep_lib],[$dep_funclib],found=yes,found=no, [$other_libs])
],found=no)
if test "$found" = "yes" ; then
eval $2_found=yes
else
eval $2_found=no
eval $2_CFLAGS=
eval $2_LIBS=
fi
AC_SUBST($2_CFLAGS)
AC_SUBST($2_LIBS)
CPPFLAGS=$CPPFLAGS_save
LDFLAGS=$LDFLAGS_save
LIBS=$LIBS_save
])
AC_DEFUN([MS_CHECK_VIDEO],[
dnl conditionnal build of video support
AC_ARG_ENABLE(video,
[ --enable-video Turn on video support compiling],
[case "${enableval}" in
yes) video=true ;;
no) video=false ;;
*) AC_MSG_ERROR(bad value ${enableval} for --enable-video) ;;
esac],[video=true])
AC_ARG_WITH( ffmpeg,
[ --with-ffmpeg Sets the installation prefix of ffmpeg, needed for video support. [default=/usr] ],
[ ffmpegdir=${withval}],[ ffmpegdir=/usr ])
if test "$video" = "true"; then
dnl test for ffmpeg presence
PKG_CHECK_MODULES(FFMPEG, [libavcodec >= 51.0.0 ],ffmpeg_found=yes , ffmpeg_found=no)
if test x$ffmpeg_found = xno ; then
AC_MSG_ERROR([Could not find libavcodec (from ffmpeg) headers and library. This is mandatory for video support])
fi
PKG_CHECK_MODULES(SWSCALE, [libswscale >= 0.7.0 ],swscale_found=yes , swscale_found=no)
if test x$swscale_found = xno ; then
AC_MSG_ERROR([Could not find libswscale (from ffmpeg) headers and library. This is mandatory for video support])
fi
dnl check for new/old ffmpeg header file layout
CPPFLAGS_save=$CPPFLAGS
CPPFLAGS="$FFMPEG_CFLAGS $CPPFLAGS"
AC_CHECK_HEADERS(libavcodec/avcodec.h)
CPPFLAGS=$CPPFLAGS_save
dnl to workaround a bug on debian and ubuntu, check if libavcodec needs -lvorbisenc to compile
AC_CHECK_LIB(avcodec,avcodec_register_all, novorbis=yes , [
LIBS="$LIBS -lvorbisenc"
], $FFMPEG_LIBS )
dnl when swscale feature is not provided by
dnl libswscale, its features are swallowed by
dnl libavcodec, but without swscale.h and without any
dnl declaration into avcodec.h (this is to be
dnl considered as an ffmpeg bug).
dnl
dnl #if defined(HAVE_LIBAVCODEC_AVCODEC_H) && !defined(HAVE_LIBSWSCALE_SWSCALE_H)
dnl # include "swscale.h" // private linhone swscale.h
dnl #endif
CPPFLAGS_save=$CPPFLAGS
CPPFLAGS="$SWSCALE_CFLAGS $CPPFLAGS"
AC_CHECK_HEADERS(libswscale/swscale.h)
CPPFLAGS=$CPPFLAGS_save
AC_ARG_ENABLE(sdl,
[ --disable-sdl Disable SDL support],
[case "${enableval}" in
yes) enable_sdl=true ;;
no) enable_sdl=false ;;
*) AC_MSG_ERROR(bad value ${enableval} for --disable-sdl) ;;
esac],[enable_sdl=true])
sdl_found=no
if test "$enable_sdl" = "true"; then
PKG_CHECK_MODULES(SDL, [sdl >= 1.2.0 ],sdl_found=yes,sdl_found=no)
if test "$sdl_found" = "no" && test "$mingw_found" != "yes"; then
AC_MSG_ERROR([Could not find libsdl headers and library. This is mandatory for video support])
fi
fi
AC_ARG_ENABLE(theora,
[ --disable-theora Disable theora support],
[case "${enableval}" in
yes) theora=true ;;
no) theora=false ;;
*) AC_MSG_ERROR(bad value ${enableval} for --disable-theora) ;;
esac],[theora=true])
if test x$theora = xtrue; then
PKG_CHECK_MODULES(THEORA, [theora >= 1.0alpha7 ], [have_theora=yes],
[have_theora=no])
fi
AC_ARG_ENABLE(x11,
[ --disable-x11 Disable X11 support],
[case "${enableval}" in
yes) enable_x11=true ;;
no) enable_x11=false ;;
*) AC_MSG_ERROR(bad value ${enableval} for --disable-x11) ;;
esac],[enable_x11=true])
if test "$enable_x11" = "true"; then
AC_CHECK_HEADERS(X11/Xlib.h)
fi
VIDEO_CFLAGS=" $FFMPEG_CFLAGS -DVIDEO_ENABLED"
VIDEO_LIBS=" $FFMPEG_LIBS $SWSCALE_LIBS"
if test "$sdl_found" = "yes" ; then
VIDEO_CFLAGS="$VIDEO_CFLAGS $SDL_CFLAGS -DHAVE_SDL"
VIDEO_LIBS="$VIDEO_LIBS $SDL_LIBS"
fi
if test "${ac_cv_header_X11_Xlib_h}" = "yes" ; then
VIDEO_LIBS="$VIDEO_LIBS -lX11"
fi
if test "$mingw_found" = "yes" ; then
VIDEO_LIBS="$VIDEO_LIBS -lvfw32"
fi
case $target_os in
*darwin*)
LIBS="$LIBS -framework QuickTime"
;;
esac
fi
AC_SUBST(VIDEO_CFLAGS)
AC_SUBST(VIDEO_LIBS)
])

View file

@ -1,30 +0,0 @@
#!/bin/sh
AM_VERSION="1.10"
if ! type aclocal-$AM_VERSION 1>/dev/null 2>&1; then
# automake-1.10 (recommended) is not available on Fedora 8
AUTOMAKE=automake
ACLOCAL=aclocal
else
ACLOCAL=aclocal-${AM_VERSION}
AUTOMAKE=automake-${AM_VERSION}
fi
if test -f /opt/local/bin/glibtoolize ; then
# darwin
LIBTOOLIZE=/opt/local/bin/glibtoolize
else
LIBTOOLIZE=libtoolize
fi
if test -d /opt/local/share/aclocal ; then
ACLOCAL_ARGS="-I /opt/local/share/aclocal"
fi
echo "Generating build scripts in mediastreamer..."
set -x
$LIBTOOLIZE --copy --force
$ACLOCAL $ACLOCAL_ARGS
autoheader
$AUTOMAKE --force-missing --add-missing --copy
autoconf

View file

@ -1,2 +0,0 @@
Makefile.in
Makefile

View file

@ -1 +0,0 @@
SUBDIRS= win32native win32-novideo wince winmob

View file

@ -1,2 +0,0 @@
Makefile.in
Makefile

View file

@ -1,2 +0,0 @@
EXTRA_DIST=alldescs.h mediastreamer2.vcproj mediastream.vcproj mediastreamer2.def

View file

@ -1,70 +0,0 @@
#include "mediastreamer2/msfilter.h"
extern MSFilterDesc ms_alaw_dec_desc;
extern MSFilterDesc ms_alaw_enc_desc;
extern MSFilterDesc ms_ulaw_dec_desc;
extern MSFilterDesc ms_ulaw_enc_desc;
extern MSFilterDesc ms_file_player_desc;
extern MSFilterDesc ms_rtp_send_desc;
extern MSFilterDesc ms_rtp_recv_desc;
extern MSFilterDesc ms_dtmf_gen_desc;
extern MSFilterDesc ms_file_rec_desc;
extern MSFilterDesc ms_speex_dec_desc;
extern MSFilterDesc ms_speex_enc_desc;
extern MSFilterDesc ms_gsm_dec_desc;
extern MSFilterDesc ms_gsm_enc_desc;
extern MSFilterDesc ms_speex_ec_desc;
extern MSFilterDesc ms_tee_desc;
extern MSFilterDesc ms_conf_desc;
//extern MSFilterDesc alsa_write_desc;
//extern MSFilterDesc alsa_read_desc;
//extern MSFilterDesc oss_read_desc;
//extern MSFilterDesc oss_write_desc;
//extern MSFilterDesc ms_arts_read_desc;
//extern MSFilterDesc ms_arts_write_desc;
//extern MSFilterDesc ms_v4l_desc;
//extern MSFilterDesc ms_sdl_out_desc;
//extern MSFilterDesc ms_h263_enc_desc;
//extern MSFilterDesc ms_h263_dec_desc;
extern MSFilterDesc ms_join_desc;
extern MSFilterDesc ms_resample_desc;
extern MSFilterDesc ms_volume_desc;
extern MSFilterDesc ms_ice_desc;
extern MSFilterDesc ms_equalizer_desc;
MSFilterDesc * ms_filter_descs[]={
&ms_alaw_dec_desc,
&ms_alaw_enc_desc,
&ms_ulaw_dec_desc,
&ms_ulaw_enc_desc,
&ms_file_player_desc,
&ms_rtp_send_desc,
&ms_rtp_recv_desc,
&ms_dtmf_gen_desc,
&ms_file_rec_desc,
&ms_speex_dec_desc,
&ms_speex_enc_desc,
&ms_gsm_dec_desc,
&ms_gsm_enc_desc,
&ms_speex_ec_desc,
&ms_tee_desc,
&ms_conf_desc,
//&alsa_write_desc,
//&alsa_read_desc,
//&oss_read_desc,
//&oss_write_desc,
//&ms_arts_read_desc,
//&ms_arts_write_desc,
//&ms_v4l_desc,
//&ms_sdl_out_desc,
//&ms_h263_enc_desc,
//&ms_h263_dec_desc,
&ms_join_desc,
#ifndef DISABLE_RESAMPLE
&ms_resample_desc,
#endif
&ms_volume_desc,
&ms_ice_desc,
&ms_equalizer_desc,
NULL
};

View file

@ -1,143 +0,0 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="7.10"
Name="mediastream"
ProjectGUID="{92C82019-2DAC-4923-A05C-681AD5BDD04B}"
Keyword="Win32Proj">
<Platforms>
<Platform
Name="Win32"/>
</Platforms>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="Debug"
IntermediateDirectory="Debug"
ConfigurationType="1"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="&quot;..\..&quot;;&quot;..\..\..\oRTP\include&quot;"
PreprocessorDefinitions="ICE_TEST;ORTP_INET6;WIN32;_DEBUG;_CONSOLE"
MinimalRebuild="FALSE"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
BufferSecurityCheck="TRUE"
UsePrecompiledHeader="0"
ProgramDataBaseFileName="$(IntDir)/mediastream.pdb"
WarningLevel="3"
Detect64BitPortabilityProblems="TRUE"
DebugInformationFormat="4"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="Ws2_32.lib Winmm.lib ortp.lib mediastreamer2.lib"
OutputFile="$(OutDir)/mediastream.exe"
LinkIncremental="2"
AdditionalLibraryDirectories="&quot;$(IntDir)/&quot;;&quot;..\..\..\oRTP\build\win32native\debug&quot;"
GenerateDebugInformation="TRUE"
ProgramDatabaseFile="$(OutDir)/mediastream.pdb"
SubSystem="1"
TargetMachine="1"/>
<Tool
Name="VCMIDLTool"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
<Tool
Name="VCManagedWrapperGeneratorTool"/>
<Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="Release"
IntermediateDirectory="Release"
ConfigurationType="1"
CharacterSet="2">
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="&quot;.&quot;;&quot;..\..\..\oRTP\include&quot;"
PreprocessorDefinitions="ICE_TEST;ORTP_INET6;WIN32;NDEBUG;_CONSOLE"
MinimalRebuild="FALSE"
RuntimeLibrary="0"
EnableFunctionLevelLinking="TRUE"
UsePrecompiledHeader="0"
ProgramDataBaseFileName="$(IntDir)/mediastream.pdb"
WarningLevel="3"
Detect64BitPortabilityProblems="TRUE"
DebugInformationFormat="3"/>
<Tool
Name="VCCustomBuildTool"/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="Ws2_32.lib Winmm.lib ortp.lib mediastreamer2.lib"
OutputFile="$(OutDir)/mediastream.exe"
LinkIncremental="1"
AdditionalLibraryDirectories="&quot;$(IntDir)/&quot;;&quot;..\..\..\oRTP\build\win32native\debug&quot;"
GenerateDebugInformation="TRUE"
SubSystem="1"
OptimizeReferences="2"
EnableCOMDATFolding="2"
TargetMachine="1"/>
<Tool
Name="VCMIDLTool"/>
<Tool
Name="VCPostBuildEventTool"/>
<Tool
Name="VCPreBuildEventTool"/>
<Tool
Name="VCPreLinkEventTool"/>
<Tool
Name="VCResourceCompilerTool"/>
<Tool
Name="VCWebServiceProxyGeneratorTool"/>
<Tool
Name="VCXMLDataGeneratorTool"/>
<Tool
Name="VCWebDeploymentTool"/>
<Tool
Name="VCManagedWrapperGeneratorTool"/>
<Tool
Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}">
<File
RelativePath="..\..\tests\mediastream.c">
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}">
</Filter>
<Filter
Name="Resource Files"
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}">
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View file

@ -1,82 +0,0 @@
LIBRARY mediastreamer2
EXPORTS
ms_init
ms_exit
ms_filter_new
ms_filter_new_from_desc
ms_filter_destroy
ms_filter_create_encoder
ms_filter_create_decoder
ms_filter_call_method
ms_filter_call_method_noarg
ms_filter_link
ms_filter_unlink
ms_filter_preprocess
ms_filter_postprocess
ms_filter_codec_supported
ms_filter_register
ms_filter_new_from_name
ms_filter_set_notify_callback
ms_snd_card_new
ms_snd_card_manager_destroy
ms_snd_card_manager_reload
ms_snd_card_manager_add_card
ms_snd_card_manager_register_desc
ms_snd_card_create_reader
ms_snd_card_create_writer
ms_snd_card_get_name
ms_snd_card_get_string_id
ms_snd_card_manager_get
ms_snd_card_manager_get_default_card
ms_snd_card_manager_get_default_capture_card
ms_snd_card_manager_get_default_playback_card
ms_snd_card_manager_get_card
ms_snd_card_manager_get_list
ms_snd_card_dup
ms_snd_card_destroy
ms_snd_card_set_level
ms_snd_card_get_level
ms_snd_card_set_capture
ms_snd_card_set_control
ms_snd_card_get_control
ms_ticker_new
ms_ticker_set_name
ms_ticker_destroy
ms_ticker_attach
ms_ticker_detach
ms_ticker_set_time_func
ms_ticker_print_graphs
ms_bufferizer_init
ms_bufferizer_uninit
ms_bufferizer_read
ms_bufferizer_put
ms_bufferizer_put_from_queue
audio_stream_start
audio_stream_stop
audio_stream_free
create_duplex_rtpsession
ms_load_plugins
ms_is_ipv6
ms_sleep
ms_queue_init
ms_queue_flush
ms_list_free
ms_list_for_each
ms_list_append
ms_list_remove
ms_discover_mtu
ms_set_mtu

View file

@ -1,416 +0,0 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="8,00"
Name="mediastreamer2"
ProjectGUID="{4A07BB2B-F56E-4F1B-A729-D28B782AC128}"
RootNamespace="mediastreamer2"
Keyword="Win32Proj"
>
<Platforms>
<Platform
Name="Win32"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="Debug"
IntermediateDirectory="Debug"
ConfigurationType="2"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
CharacterSet="0"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\win32-bin\include,&quot;.&quot;;&quot;..\..\..\mediastreamer2\include&quot;;&quot;..\..\..\oRTP\include&quot;;..\..\..\codecs\speex\include;..\..\..\codecs\gsm\inc"
PreprocessorDefinitions="__DIRECTSOUND_ENABLED__;HAVE_SPEEXDSP;__VIDEO_DISABLED__;EMULATE_INTTYPES;AMD_HACK;CONF_GRAN_MAX=12;HAVE_SPEEX_NOISE;ICE_TEST;ORTP_INET6;WIN32;_DEBUG;_WINDOWS;_USRDLL;MEDIASTREAMER2_EXPORTS;WINDOW_NATIVE;_CRT_SECURE_NO_DEPRECATE"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
UsePrecompiledHeader="0"
ProgramDataBaseFileName="$(IntDir)/libmediastreamer2.pdb"
WarningLevel="3"
DebugInformationFormat="4"
CompileAs="2"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="strmiids.lib Ws2_32.lib Winmm.lib ortp.lib libspeexd.lib libspeexdspd.lib libcmtd.lib"
OutputFile="$(IntDir)/mediastreamer2.dll"
LinkIncremental="2"
AdditionalLibraryDirectories="&quot;..\..\..\oRTP\build\win32native\debug&quot;,..\..\..\codecs\speex\lib"
IgnoreAllDefaultLibraries="true"
ModuleDefinitionFile="mediastreamer2.def"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(OutDir)/mediastreamer2.pdb"
SubSystem="2"
ImportLibrary="$(IntDir)/mediastreamer2.lib"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="Release"
IntermediateDirectory="Release"
ConfigurationType="2"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="..\..\..\win32-bin\include,&quot;.&quot;;&quot;..\..\..\mediastreamer2\include&quot;;&quot;..\..\..\oRTP\include&quot;;..\..\..\codecs\speex\include;..\..\..\codecs\gsm\inc"
PreprocessorDefinitions="__DIRECTSOUND_ENABLED__;HAVE_SPEEXDSP;__VIDEO_DISABLED__;CONF_GRAN_MAX=12;AMD_HACK;HAVE_SPEEX_NOISE;ICE_TEST;ORTP_INET6;WIN32;NDEBUG;_WINDOWS;_USRDLL;MEDIASTREAMER2_EXPORTS;WINDOW_NATIVE;_CRT_SECURE_NO_DEPRECATE"
RuntimeLibrary="0"
UsePrecompiledHeader="0"
ProgramDataBaseFileName="$(IntDir)/libmediastreamer2.pdb"
WarningLevel="3"
DebugInformationFormat="3"
CallingConvention="0"
CompileAs="2"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="strmiids.lib Ws2_32.lib Winmm.lib ortp.lib libspeex.lib libspeexdsp.lib libcmt.lib"
OutputFile="$(IntDir)/mediastreamer2.dll"
LinkIncremental="1"
AdditionalLibraryDirectories="&quot;..\..\..\oRTP\build\win32native\release&quot;,..\..\..\codecs\speex\lib"
IgnoreAllDefaultLibraries="true"
ModuleDefinitionFile="mediastreamer2.def"
GenerateDebugInformation="true"
SubSystem="2"
OptimizeReferences="2"
EnableCOMDATFolding="2"
ImportLibrary="$(IntDir)/mediastreamer2.lib"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
>
<File
RelativePath="..\..\src\_kiss_fft_guts.h"
>
</File>
<File
RelativePath="..\..\src\alaw.c"
>
</File>
<File
RelativePath="..\..\src\audiostream.c"
>
</File>
<File
RelativePath="..\..\src\dsptools.c"
>
</File>
<File
RelativePath="..\..\src\dtmfgen.c"
>
</File>
<File
RelativePath="..\..\src\equalizer.c"
>
</File>
<File
RelativePath="..\..\src\gsm.c"
>
</File>
<File
RelativePath="..\..\src\ice.c"
>
</File>
<File
RelativePath="..\..\src\kiss_fft.c"
>
</File>
<File
RelativePath="..\..\src\kiss_fft.h"
>
</File>
<File
RelativePath="..\..\src\kiss_fftr.c"
>
</File>
<File
RelativePath="..\..\src\kiss_fftr.h"
>
</File>
<File
RelativePath="..\..\src\mscommon.c"
>
</File>
<File
RelativePath="..\..\src\msconf.c"
>
</File>
<File
RelativePath="..\..\src\msfileplayer_win.c"
>
</File>
<File
RelativePath="..\..\src\msfilerec_win.c"
>
</File>
<File
RelativePath="..\..\src\msfilter.c"
>
</File>
<File
RelativePath="..\..\src\msjoin.c"
>
</File>
<File
RelativePath="..\..\src\msqueue.c"
>
</File>
<File
RelativePath="..\..\src\msresample.c"
>
</File>
<File
RelativePath="..\..\src\msrtp.c"
>
</File>
<File
RelativePath="..\..\src\mssndcard.c"
>
</File>
<File
RelativePath="..\..\src\msspeex.c"
>
</File>
<File
RelativePath="..\..\src\msticker.c"
>
</File>
<File
RelativePath="..\..\src\msvolume.c"
>
</File>
<File
RelativePath="..\..\src\mtu.c"
>
</File>
<File
RelativePath="..\..\src\speexec.c"
>
</File>
<File
RelativePath="..\..\src\tee.c"
>
</File>
<File
RelativePath="..\..\src\ulaw.c"
>
</File>
<File
RelativePath="..\..\src\winsnd2.c"
>
</File>
<File
RelativePath="..\..\src\winsndds.cpp"
>
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
>
<File
RelativePath=".\alldescs.h"
>
</File>
<File
RelativePath="..\..\include\mediastreamer2\allfilters.h"
>
</File>
<File
RelativePath="..\..\include\mediastreamer2\dsptools.h"
>
</File>
<File
RelativePath="..\..\include\mediastreamer2\dtmfgen.h"
>
</File>
<File
RelativePath="..\..\include\mediastreamer2\g711common.h"
>
</File>
<File
RelativePath="..\..\include\mediastreamer2\ice.h"
>
</File>
<File
RelativePath="..\..\include\mediastreamer2\mediastream.h"
>
</File>
<File
RelativePath="..\..\include\mediastreamer2\mscommon.h"
>
</File>
<File
RelativePath="..\..\include\mediastreamer2\msequalizer.h"
>
</File>
<File
RelativePath="..\..\include\mediastreamer2\msfileplayer.h"
>
</File>
<File
RelativePath="..\..\include\mediastreamer2\msfilerec.h"
>
</File>
<File
RelativePath="..\..\include\mediastreamer2\msfilter.h"
>
</File>
<File
RelativePath="..\..\include\mediastreamer2\msqueue.h"
>
</File>
<File
RelativePath="..\..\include\mediastreamer2\msrtp.h"
>
</File>
<File
RelativePath="..\..\include\mediastreamer2\mssndcard.h"
>
</File>
<File
RelativePath="..\..\include\mediastreamer2\msticker.h"
>
</File>
<File
RelativePath="..\..\include\mediastreamer2\msvolume.h"
>
</File>
<File
RelativePath="..\..\include\mediastreamer2\rfc2429.h"
>
</File>
<File
RelativePath="..\..\include\mediastreamer2\waveheader.h"
>
</File>
</Filter>
<Filter
Name="Resource Files"
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
>
</Filter>
<File
RelativePath=".\mediastreamer2.def"
>
</File>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View file

@ -1,2 +0,0 @@
Makefile.in
Makefile

View file

@ -1,2 +0,0 @@
EXTRA_DIST=alldescs.h mediastreamer2.vcproj mediastream.vcproj videodisplay.vcproj mediastreamer2.def

View file

@ -1,90 +0,0 @@
#include "mediastreamer2/msfilter.h"
extern MSFilterDesc ms_alaw_dec_desc;
extern MSFilterDesc ms_alaw_enc_desc;
extern MSFilterDesc ms_ulaw_dec_desc;
extern MSFilterDesc ms_ulaw_enc_desc;
extern MSFilterDesc ms_file_player_desc;
extern MSFilterDesc ms_rtp_send_desc;
extern MSFilterDesc ms_rtp_recv_desc;
extern MSFilterDesc ms_dtmf_gen_desc;
extern MSFilterDesc ms_file_rec_desc;
extern MSFilterDesc ms_speex_dec_desc;
extern MSFilterDesc ms_speex_enc_desc;
extern MSFilterDesc ms_gsm_dec_desc;
extern MSFilterDesc ms_gsm_enc_desc;
extern MSFilterDesc ms_speex_ec_desc;
extern MSFilterDesc ms_tee_desc;
extern MSFilterDesc ms_void_sink_desc;
extern MSFilterDesc ms_conf_desc;
extern MSFilterDesc ms_v4w_desc;
extern MSFilterDesc ms_video_out_desc;
extern MSFilterDesc ms_h263_enc_desc;
extern MSFilterDesc ms_h263_dec_desc;
extern MSFilterDesc ms_h263_old_enc_desc;
extern MSFilterDesc ms_h263_old_dec_desc;
extern MSFilterDesc ms_mpeg4_enc_desc;
extern MSFilterDesc ms_mpeg4_dec_desc;
extern MSFilterDesc ms_snow_enc_desc;
extern MSFilterDesc ms_snow_dec_desc;
extern MSFilterDesc ms_theora_enc_desc;
extern MSFilterDesc ms_theora_dec_desc;
extern MSFilterDesc ms_mjpeg_enc_desc;
extern MSFilterDesc ms_mjpeg_dec_desc;
extern MSFilterDesc ms_size_conv_desc;
extern MSFilterDesc ms_pix_conv_desc;
extern MSFilterDesc ms_join_desc;
extern MSFilterDesc ms_resample_desc;
extern MSFilterDesc ms_volume_desc;
extern MSFilterDesc ms_static_image_desc;
extern MSFilterDesc ms_mire_desc;
extern MSFilterDesc ms_vfw_desc;
extern MSFilterDesc ms_ice_desc;
extern MSFilterDesc ms_equalizer_desc;
MSFilterDesc * ms_filter_descs[]={
&ms_alaw_dec_desc,
&ms_alaw_enc_desc,
&ms_ulaw_dec_desc,
&ms_ulaw_enc_desc,
&ms_file_player_desc,
&ms_rtp_send_desc,
&ms_rtp_recv_desc,
&ms_dtmf_gen_desc,
&ms_file_rec_desc,
&ms_speex_dec_desc,
&ms_speex_enc_desc,
&ms_gsm_dec_desc,
&ms_gsm_enc_desc,
&ms_speex_ec_desc,
&ms_tee_desc,
&ms_void_sink_desc,
&ms_conf_desc,
&ms_v4w_desc,
&ms_video_out_desc,
&ms_h263_old_enc_desc,
&ms_h263_old_dec_desc,
&ms_h263_enc_desc,
&ms_h263_dec_desc,
&ms_mpeg4_enc_desc,
&ms_mpeg4_dec_desc,
&ms_snow_enc_desc,
&ms_snow_dec_desc,
&ms_theora_enc_desc,
&ms_theora_dec_desc,
&ms_mjpeg_enc_desc,
&ms_mjpeg_dec_desc,
&ms_size_conv_desc,
&ms_pix_conv_desc,
&ms_join_desc,
#ifndef NORESAMPLE
&ms_resample_desc,
#endif
&ms_volume_desc,
&ms_static_image_desc,
&ms_mire_desc,
&ms_vfw_desc,
&ms_ice_desc,
&ms_equalizer_desc,
NULL
};

View file

@ -1,211 +0,0 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="8,00"
Name="mediastream"
ProjectGUID="{92C82019-2DAC-4923-A05C-681AD5BDD04B}"
Keyword="Win32Proj"
>
<Platforms>
<Platform
Name="Win32"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="Debug"
IntermediateDirectory="Debug"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="&quot;.&quot;;&quot;..\..\include&quot;;&quot;..\..\..\oRTP\include&quot;"
PreprocessorDefinitions="VIDEO_ENABLED;OSIP_MT;ICE_TEST;ORTP_INET6;_CRT_SECURE_NO_DEPRECATE;WIN32;_DEBUG;_CONSOLE"
MinimalRebuild="false"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
BufferSecurityCheck="true"
UsePrecompiledHeader="0"
ProgramDataBaseFileName="$(IntDir)/mediastream.pdb"
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="4"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="Ws2_32.lib Winmm.lib ortp.lib mediastreamer2.lib"
OutputFile="$(OutDir)/mediastream.exe"
LinkIncremental="2"
AdditionalLibraryDirectories="&quot;$(IntDir)/&quot;;&quot;..\..\..\oRTP\build\win32native\debug&quot;"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(OutDir)/mediastream.pdb"
SubSystem="1"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="Release"
IntermediateDirectory="Release"
ConfigurationType="1"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="&quot;.&quot;;&quot;..\..\include&quot;;&quot;..\..\..\oRTP\include&quot;"
PreprocessorDefinitions="OSIP_MT;ICE_TEST;ORTP_INET6;_CRT_SECURE_NO_DEPRECATE;WIN32;NDEBUG;_CONSOLE"
MinimalRebuild="false"
RuntimeLibrary="0"
EnableFunctionLevelLinking="true"
UsePrecompiledHeader="0"
ProgramDataBaseFileName="$(IntDir)/mediastream.pdb"
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="Ws2_32.lib Winmm.lib ortp.lib mediastreamer2.lib"
OutputFile="$(OutDir)/mediastream.exe"
LinkIncremental="1"
AdditionalLibraryDirectories="&quot;$(IntDir)/&quot;;&quot;..\..\..\oRTP\build\win32native\debug&quot;"
GenerateDebugInformation="true"
SubSystem="1"
OptimizeReferences="2"
EnableCOMDATFolding="2"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
>
<File
RelativePath="..\..\tests\mediastream.c"
>
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
>
</Filter>
<Filter
Name="Resource Files"
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
>
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View file

@ -1,117 +0,0 @@
LIBRARY mediastreamer2
EXPORTS
ms_init
ms_exit
ms_filter_new
ms_filter_new_from_desc
ms_filter_destroy
ms_filter_create_encoder
ms_filter_create_decoder
ms_filter_call_method
ms_filter_call_method_noarg
ms_filter_link
ms_filter_unlink
ms_filter_preprocess
ms_filter_postprocess
ms_filter_codec_supported
ms_filter_register
ms_filter_new_from_name
ms_filter_set_notify_callback
ms_snd_card_new
ms_snd_card_manager_destroy
ms_snd_card_manager_reload
ms_snd_card_manager_add_card
ms_snd_card_manager_register_desc
ms_snd_card_create_reader
ms_snd_card_create_writer
ms_snd_card_get_name
ms_snd_card_get_string_id
ms_snd_card_manager_get
ms_snd_card_manager_get_default_card
ms_snd_card_manager_get_default_capture_card
ms_snd_card_manager_get_default_playback_card
ms_snd_card_manager_get_card
ms_snd_card_manager_get_list
ms_snd_card_dup
ms_snd_card_destroy
ms_snd_card_set_level
ms_snd_card_get_level
ms_snd_card_set_capture
ms_snd_card_set_control
ms_snd_card_get_control
ms_ticker_new
ms_ticker_set_name
ms_ticker_destroy
ms_ticker_attach
ms_ticker_detach
ms_ticker_set_time_func
ms_ticker_print_graphs
ms_bufferizer_init
ms_bufferizer_uninit
ms_bufferizer_read
ms_bufferizer_put
ms_bufferizer_put_from_queue
audio_stream_start
audio_stream_stop
audio_stream_free
create_duplex_rtpsession
ms_load_plugins
ms_display_new
ms_display_set_window_id
ms_display_desc_set_default
ms_display_destroy
video_preview_stop
video_preview_start
video_stream_new
video_stream_start
video_stream_stop
video_stream_iterate
video_stream_set_sent_video_size
ms_is_ipv6
yuv_buf_alloc
yuv_buf_init_from_mblk
yuv_buf_init_from_mblk_with_size
ms_sleep
ms_queue_init
ms_queue_flush
rfc3984_init
rfc3984_uninit
rfc3984_pack
rfc3984_unpack
rfc3984_set_mode
ms_list_free
ms_list_for_each
ms_list_append
ms_list_remove
ms_discover_mtu
ms_set_mtu
ms_web_cam_new
ms_web_cam_manager_reload
ms_web_cam_manager_get_default_cam
ms_web_cam_manager_get
ms_web_cam_manager_get_list
ms_web_cam_manager_get_cam
ms_web_cam_manager_add_cam
ms_web_cam_manager_register_desc
ms_web_cam_create_reader
ms_web_cam_get_driver_type
ms_web_cam_get_name
ms_web_cam_get_string_id

View file

@ -1,504 +0,0 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="8,00"
Name="mediastreamer2"
ProjectGUID="{4A07BB2B-F56E-4F1B-A729-D28B782AC128}"
RootNamespace="mediastreamer2"
Keyword="Win32Proj"
>
<Platforms>
<Platform
Name="Win32"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="Debug"
IntermediateDirectory="Debug"
ConfigurationType="2"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
CharacterSet="0"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\portaudio\include;&quot;..\..\..\win32-bin\include\baseclasses&quot;;&quot;..\..\..\win32-bin\include&quot;;.;..\..\..\mediastreamer2\include;..\..\..\oRTP\include;..\..\..\codecs\speex\include;..\..\..\codecs\gsm\inc"
PreprocessorDefinitions="__DIRECTSOUND_ENABLED__;__STDC_CONSTANT_MACROS;HAVE_LIBSWSCALE_SWSCALE_H;HAVE_LIBAVCODEC_AVCODEC_H;HAVE_SPEEXDSP;HAVE_DIRECTSHOW;VIDEO_ENABLED;AMD_HACK;ORTP_INET6;WIN32;_DEBUG;_WINDOWS;_USRDLL;MEDIASTREAMER2_EXPORTS;WINDOW_NATIVE;_CRT_SECURE_NO_DEPRECATE"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
UsePrecompiledHeader="0"
ProgramDataBaseFileName="$(IntDir)/libmediastreamer2.pdb"
WarningLevel="3"
DebugInformationFormat="4"
CompileAs="2"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="swscale.lib avcodec-52.lib quartz.lib dmoguids.lib strmiids.lib strmbasd.lib libtheora.lib vfw32.lib Ws2_32.lib Winmm.lib ortp.lib libspeexd.lib libspeexdspd.lib libcmtd.lib"
OutputFile="$(IntDir)/mediastreamer2.dll"
LinkIncremental="1"
AdditionalLibraryDirectories="..\..\..\win32-bin\lib,&quot;..\..\..\oRTP\build\win32native\debug&quot;,..\..\..\codecs\speex\lib"
IgnoreAllDefaultLibraries="true"
ModuleDefinitionFile="mediastreamer2.def"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(OutDir)/mediastreamer2.pdb"
SubSystem="2"
ImportLibrary="$(IntDir)/mediastreamer2.lib"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="Release"
IntermediateDirectory="Release"
ConfigurationType="2"
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
CharacterSet="2"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="..\..\..\portaudio\include;&quot;..\..\..\win32-bin\include\baseclasses&quot;;&quot;..\..\..\win32-bin\include&quot;;.;..\..\..\mediastreamer2\include;..\..\..\oRTP\include;..\..\..\codecs\speex\include;..\..\..\codecs\gsm\inc"
PreprocessorDefinitions="__DIRECTSOUND_ENABLED__;__STDC_CONSTANT_MACROS;HAVE_LIBSWSCALE_SWSCALE_H;HAVE_LIBAVCODEC_AVCODEC_H;HAVE_SPEEXDSP;HAVE_DIRECTSHOW;VIDEO_ENABLED;AMD_HACK;ORTP_INET6;WIN32;NDEBUG;_WINDOWS;_USRDLL;MEDIASTREAMER2_EXPORTS;WINDOW_NATIVE;_CRT_SECURE_NO_DEPRECATE"
RuntimeLibrary="0"
UsePrecompiledHeader="0"
ProgramDataBaseFileName="$(IntDir)/libmediastreamer2.pdb"
WarningLevel="3"
DebugInformationFormat="0"
CallingConvention="0"
CompileAs="2"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="swscale.lib avcodec-52.lib quartz.lib dmoguids.lib strmiids.lib strmbase.lib libtheora.lib vfw32.lib Ws2_32.lib Winmm.lib ortp.lib libspeex.lib libspeexdsp.lib libcmt.lib"
OutputFile="$(IntDir)/mediastreamer2.dll"
LinkIncremental="1"
AdditionalLibraryDirectories="..\..\..\win32-bin\lib,&quot;..\..\..\oRTP\build\win32native\release&quot;,..\..\..\codecs\speex\lib"
IgnoreAllDefaultLibraries="true"
ModuleDefinitionFile="mediastreamer2.def"
GenerateDebugInformation="false"
SubSystem="2"
OptimizeReferences="2"
EnableCOMDATFolding="2"
ImportLibrary="$(IntDir)/mediastreamer2.lib"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
>
<File
RelativePath="..\..\src\alaw.c"
>
</File>
<File
RelativePath="..\..\src\audiostream.c"
>
</File>
<File
RelativePath="..\..\src\dsptools.c"
>
</File>
<File
RelativePath="..\..\src\dtmfgen.c"
>
</File>
<File
RelativePath="..\..\src\dxfilter.cpp"
>
</File>
<File
RelativePath="..\..\src\equalizer.c"
>
</File>
<File
RelativePath="..\..\src\gsm.c"
>
</File>
<File
RelativePath="..\..\src\ice.c"
>
</File>
<File
RelativePath="..\..\src\kiss_fft.c"
>
</File>
<File
RelativePath="..\..\src\kiss_fftr.c"
>
</File>
<File
RelativePath="..\..\src\mire.c"
>
</File>
<File
RelativePath="..\..\src\mscommon.c"
>
</File>
<File
RelativePath="..\..\src\msconf.c"
>
</File>
<File
RelativePath="..\..\src\msfileplayer_win.c"
>
</File>
<File
RelativePath="..\..\src\msfilerec_win.c"
>
</File>
<File
RelativePath="..\..\src\msfilter.c"
>
</File>
<File
RelativePath="..\..\src\msjoin.c"
>
</File>
<File
RelativePath="..\..\src\msqueue.c"
>
</File>
<File
RelativePath="..\..\src\msresample.c"
>
</File>
<File
RelativePath="..\..\src\msrtp.c"
>
</File>
<File
RelativePath="..\..\src\mssndcard.c"
>
</File>
<File
RelativePath="..\..\src\msspeex.c"
>
</File>
<File
RelativePath="..\..\src\msticker.c"
>
</File>
<File
RelativePath="..\..\src\msvideo.c"
>
</File>
<File
RelativePath="..\..\src\msvolume.c"
>
</File>
<File
RelativePath="..\..\src\mswebcam.c"
>
</File>
<File
RelativePath="..\..\src\mtu.c"
>
</File>
<File
RelativePath="..\..\src\nowebcam.c"
>
</File>
<File
RelativePath="..\..\src\pixconv.c"
>
</File>
<File
RelativePath="..\..\src\rfc3984.c"
>
</File>
<File
RelativePath="..\..\src\sizeconv.c"
>
</File>
<File
RelativePath="..\..\src\speexec.c"
>
</File>
<File
RelativePath="..\..\src\tee.c"
>
</File>
<File
RelativePath="..\..\src\theora.c"
>
</File>
<File
RelativePath="..\..\src\ulaw.c"
>
</File>
<File
RelativePath="..\..\src\videodec.c"
>
</File>
<File
RelativePath="..\..\src\videoenc.c"
>
</File>
<File
RelativePath="..\..\src\videoout.c"
>
</File>
<File
RelativePath="..\..\src\videostream.c"
>
</File>
<File
RelativePath="..\..\src\void.c"
>
</File>
<File
RelativePath="..\..\src\winsnd2.c"
>
</File>
<File
RelativePath="..\..\src\winsndds.cpp"
>
</File>
<File
RelativePath="..\..\src\winvideo2.c"
>
</File>
<File
RelativePath="..\..\src\winvideods.c"
>
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
>
<File
RelativePath="..\..\src\_kiss_fft_guts.h"
>
</File>
<File
RelativePath=".\alldescs.h"
>
</File>
<File
RelativePath="..\..\include\mediastreamer2\allfilters.h"
>
</File>
<File
RelativePath="..\..\include\mediastreamer2\dtmfgen.h"
>
</File>
<File
RelativePath="..\..\src\dxfilter.h"
>
</File>
<File
RelativePath="..\..\src\ffmpeg-priv.h"
>
</File>
<File
RelativePath="..\..\include\mediastreamer2\g711common.h"
>
</File>
<File
RelativePath="..\..\include\mediastreamer2\ice.h"
>
</File>
<File
RelativePath="..\..\src\kiss_fft.h"
>
</File>
<File
RelativePath="..\..\src\kiss_fftr.h"
>
</File>
<File
RelativePath="..\..\include\mediastreamer2\mediastream.h"
>
</File>
<File
RelativePath="..\..\include\mediastreamer2\mscommon.h"
>
</File>
<File
RelativePath="..\..\include\mediastreamer2\msfileplayer.h"
>
</File>
<File
RelativePath="..\..\include\mediastreamer2\msfilerec.h"
>
</File>
<File
RelativePath="..\..\include\mediastreamer2\msfilter.h"
>
</File>
<File
RelativePath="..\..\include\mediastreamer2\msqueue.h"
>
</File>
<File
RelativePath="..\..\include\mediastreamer2\msrtp.h"
>
</File>
<File
RelativePath="..\..\include\mediastreamer2\mssndcard.h"
>
</File>
<File
RelativePath="..\..\include\mediastreamer2\msticker.h"
>
</File>
<File
RelativePath="..\..\include\mediastreamer2\msv4l.h"
>
</File>
<File
RelativePath="..\..\include\mediastreamer2\msvideo.h"
>
</File>
<File
RelativePath="..\..\include\mediastreamer2\msvideoout.h"
>
</File>
<File
RelativePath="..\..\include\mediastreamer2\msvolume.h"
>
</File>
<File
RelativePath="..\..\include\mediastreamer2\mswebcam.h"
>
</File>
<File
RelativePath="..\..\src\nowebcam.h"
>
</File>
<File
RelativePath="..\..\include\mediastreamer2\rfc2429.h"
>
</File>
<File
RelativePath="..\..\src\vfw-missing.h"
>
</File>
<File
RelativePath="..\..\include\mediastreamer2\waveheader.h"
>
</File>
</Filter>
<Filter
Name="Resource Files"
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx"
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
>
</Filter>
<File
RelativePath=".\mediastreamer2.def"
>
</File>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View file

@ -1,203 +0,0 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="8,00"
Name="videodisplay"
ProjectGUID="{389D13D7-536A-4544-B0DB-DDE98CC53009}"
RootNamespace="videodisplay"
Keyword="Win32Proj"
>
<Platforms>
<Platform
Name="Win32"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="1"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="&quot;.&quot;;&quot;..\..\include&quot;;&quot;..\..\..\oRTP\include&quot;"
PreprocessorDefinitions="OSIP_MT;EMULATE_INTTYPES;ORTP_INET6;_CRT_SECURE_NO_DEPRECATE;WIN32;_DEBUG;_CONSOLE"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="4"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="Ws2_32.lib Winmm.lib ortp.lib mediastreamer2.lib"
LinkIncremental="2"
AdditionalLibraryDirectories="&quot;$(IntDir)/&quot;;&quot;..\..\..\oRTP\build\win32native\debug&quot;"
GenerateDebugInformation="true"
SubSystem="1"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="1"
CharacterSet="1"
WholeProgramOptimization="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="&quot;.&quot;;&quot;..\..\include&quot;;&quot;..\..\..\oRTP\include&quot;"
PreprocessorDefinitions="OSIP_MT;EMULATE_INTTYPES;ORTP_INET6;_CRT_SECURE_NO_DEPRECATE;WIN32;NDEBUG;_CONSOLE"
RuntimeLibrary="0"
UsePrecompiledHeader="0"
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalDependencies="Ws2_32.lib Winmm.lib ortp.lib mediastreamer2.lib"
LinkIncremental="1"
AdditionalLibraryDirectories="&quot;$(IntDir)/&quot;;&quot;..\..\..\oRTP\build\win32native\release&quot;"
GenerateDebugInformation="true"
SubSystem="1"
OptimizeReferences="2"
EnableCOMDATFolding="2"
TargetMachine="1"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCManifestTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCAppVerifierTool"
/>
<Tool
Name="VCWebDeploymentTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
>
<File
RelativePath="..\..\tests\videodisplay.c"
>
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
>
</Filter>
<Filter
Name="Resource Files"
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
>
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View file

@ -1,2 +0,0 @@
Makefile
Makefile.in

View file

@ -1,2 +0,0 @@
EXTRA_DIST=alldescs.h mediastreamer2.vcproj mediastreamer2.def

View file

@ -1,68 +0,0 @@
#include "mediastreamer2/msfilter.h"
extern MSFilterDesc ms_alaw_dec_desc;
extern MSFilterDesc ms_alaw_enc_desc;
extern MSFilterDesc ms_ulaw_dec_desc;
extern MSFilterDesc ms_ulaw_enc_desc;
extern MSFilterDesc ms_file_player_desc;
extern MSFilterDesc ms_rtp_send_desc;
extern MSFilterDesc ms_rtp_recv_desc;
extern MSFilterDesc ms_dtmf_gen_desc;
extern MSFilterDesc ms_file_rec_desc;
extern MSFilterDesc ms_speex_dec_desc;
extern MSFilterDesc ms_speex_enc_desc;
//extern MSFilterDesc ms_gsm_dec_desc;
//extern MSFilterDesc ms_gsm_enc_desc;
extern MSFilterDesc ms_speex_ec_desc;
extern MSFilterDesc ms_tee_desc;
extern MSFilterDesc ms_conf_desc;
//extern MSFilterDesc alsa_write_desc;
//extern MSFilterDesc alsa_read_desc;
//extern MSFilterDesc oss_read_desc;
//extern MSFilterDesc oss_write_desc;
//extern MSFilterDesc ms_arts_read_desc;
//extern MSFilterDesc ms_arts_write_desc;
//extern MSFilterDesc ms_v4l_desc;
//extern MSFilterDesc ms_sdl_out_desc;
//extern MSFilterDesc ms_h263_enc_desc;
//extern MSFilterDesc ms_h263_dec_desc;
extern MSFilterDesc ms_join_desc;
extern MSFilterDesc ms_resample_desc;
extern MSFilterDesc ms_volume_desc;
extern MSFilterDesc ms_ice_desc;
extern MSFilterDesc ms_void_sink_desc;
MSFilterDesc * ms_filter_descs[]={
&ms_alaw_dec_desc,
&ms_alaw_enc_desc,
&ms_ulaw_dec_desc,
&ms_ulaw_enc_desc,
&ms_file_player_desc,
&ms_rtp_send_desc,
&ms_rtp_recv_desc,
&ms_dtmf_gen_desc,
&ms_file_rec_desc,
&ms_speex_dec_desc,
&ms_speex_enc_desc,
//&ms_gsm_dec_desc,
//&ms_gsm_enc_desc,
&ms_speex_ec_desc,
&ms_tee_desc,
&ms_conf_desc,
//&alsa_write_desc,
//&alsa_read_desc,
//&oss_read_desc,
//&oss_write_desc,
//&ms_arts_read_desc,
//&ms_arts_write_desc,
//&ms_v4l_desc,
//&ms_sdl_out_desc,
//&ms_h263_enc_desc,
//&ms_h263_dec_desc,
&ms_join_desc,
&ms_resample_desc,
&ms_volume_desc,
&ms_ice_desc,
&ms_void_sink_desc,
NULL
};

View file

@ -1,129 +0,0 @@
LIBRARY mediastreamer2
EXPORTS
ms_init
ms_exit
ms_filter_new
ms_filter_new_from_desc
ms_filter_destroy
ms_filter_create_encoder
ms_filter_create_decoder
ms_filter_call_method
ms_filter_call_method_noarg
ms_filter_link
ms_filter_unlink
ms_filter_preprocess
ms_filter_postprocess
ms_filter_codec_supported
ms_filter_register
ms_filter_new_from_name
ms_filter_set_notify_callback
ms_filter_get_encoder
ms_snd_card_new
ms_snd_card_manager_destroy
ms_snd_card_manager_reload
ms_snd_card_manager_add_card
ms_snd_card_manager_register_desc
ms_snd_card_create_reader
ms_snd_card_create_writer
ms_snd_card_get_name
ms_snd_card_get_string_id
ms_snd_card_manager_get
ms_snd_card_manager_get_default_card
ms_snd_card_manager_get_default_capture_card
ms_snd_card_manager_get_default_playback_card
ms_snd_card_manager_get_card
ms_snd_card_manager_get_list
ms_snd_card_dup
ms_snd_card_destroy
ms_snd_card_set_level
ms_snd_card_get_level
ms_snd_card_set_capture
ms_snd_card_set_control
ms_snd_card_get_control
ms_web_cam_new
ms_web_cam_manager_reload
ms_web_cam_manager_get_default_cam
ms_web_cam_manager_get
ms_web_cam_manager_get_list
ms_web_cam_manager_get_cam
ms_web_cam_manager_add_cam
ms_web_cam_manager_register_desc
ms_web_cam_create_reader
ms_web_cam_get_driver_type
ms_web_cam_get_name
ms_web_cam_get_string_id
ms_ticker_new
ms_ticker_set_name
ms_ticker_destroy
ms_ticker_attach
ms_ticker_detach
ms_ticker_set_time_func
ms_ticker_print_graphs
ms_bufferizer_init
ms_bufferizer_uninit
ms_bufferizer_read
ms_bufferizer_put
ms_bufferizer_put_from_queue
ms_queue_init
ms_queue_flush
rfc3984_init
rfc3984_uninit
rfc3984_pack
rfc3984_unpack
rfc3984_set_mode
ms_load_plugins
audio_stream_start
audio_stream_alive
audio_stream_enable_automatic_gain_control
audio_stream_set_echo_canceler_params
audio_stream_enable_gain_control
audio_stream_enable_echo_limiter
audio_stream_new
audio_stream_set_rtcp_information
audio_stream_start_with_files
audio_stream_start_now
audio_stream_set_relay_session_id
audio_stream_play_received_dtmfs
audio_stream_set_mic_gain
audio_stream_stop
audio_stream_play
audio_stream_record
ms_snd_card_get_capabilities
ring_start_with_cb
ring_start
ring_stop
audio_stream_send_dtmf
ms_discover_mtu
ms_set_mtu
ms_list_append
ms_list_remove
ms_list_free
ms_list_for_each
ms_list_find
ms_list_for_each2
ms_list_find_custom
ms_list_size
ms_list_nth_data
ms_list_remove_link
ms_list_index
ms_list_prepend
ms_list_position
ms_time
ms_get_payload_max_size
ms_sleep

File diff suppressed because it is too large Load diff

View file

@ -1,2 +0,0 @@
EXTRA_DIST=alldescs.h mediastreamer2.vcproj mediastreamer2.sln mediastreamer2.def

View file

@ -1,68 +0,0 @@
#include "mediastreamer2/msfilter.h"
extern MSFilterDesc ms_alaw_dec_desc;
extern MSFilterDesc ms_alaw_enc_desc;
extern MSFilterDesc ms_ulaw_dec_desc;
extern MSFilterDesc ms_ulaw_enc_desc;
extern MSFilterDesc ms_file_player_desc;
extern MSFilterDesc ms_rtp_send_desc;
extern MSFilterDesc ms_rtp_recv_desc;
extern MSFilterDesc ms_dtmf_gen_desc;
extern MSFilterDesc ms_file_rec_desc;
extern MSFilterDesc ms_speex_dec_desc;
extern MSFilterDesc ms_speex_enc_desc;
//extern MSFilterDesc ms_gsm_dec_desc;
//extern MSFilterDesc ms_gsm_enc_desc;
extern MSFilterDesc ms_speex_ec_desc;
extern MSFilterDesc ms_tee_desc;
extern MSFilterDesc ms_conf_desc;
//extern MSFilterDesc alsa_write_desc;
//extern MSFilterDesc alsa_read_desc;
//extern MSFilterDesc oss_read_desc;
//extern MSFilterDesc oss_write_desc;
//extern MSFilterDesc ms_arts_read_desc;
//extern MSFilterDesc ms_arts_write_desc;
//extern MSFilterDesc ms_v4l_desc;
//extern MSFilterDesc ms_sdl_out_desc;
//extern MSFilterDesc ms_h263_enc_desc;
//extern MSFilterDesc ms_h263_dec_desc;
extern MSFilterDesc ms_join_desc;
extern MSFilterDesc ms_resample_desc;
extern MSFilterDesc ms_volume_desc;
extern MSFilterDesc ms_ice_desc;
extern MSFilterDesc ms_void_sink_desc;
MSFilterDesc * ms_filter_descs[]={
&ms_alaw_dec_desc,
&ms_alaw_enc_desc,
&ms_ulaw_dec_desc,
&ms_ulaw_enc_desc,
&ms_file_player_desc,
&ms_rtp_send_desc,
&ms_rtp_recv_desc,
&ms_dtmf_gen_desc,
&ms_file_rec_desc,
&ms_speex_dec_desc,
&ms_speex_enc_desc,
//&ms_gsm_dec_desc,
//&ms_gsm_enc_desc,
&ms_speex_ec_desc,
&ms_tee_desc,
&ms_conf_desc,
//&alsa_write_desc,
//&alsa_read_desc,
//&oss_read_desc,
//&oss_write_desc,
//&ms_arts_read_desc,
//&ms_arts_write_desc,
//&ms_v4l_desc,
//&ms_sdl_out_desc,
//&ms_h263_enc_desc,
//&ms_h263_dec_desc,
&ms_join_desc,
&ms_resample_desc,
&ms_volume_desc,
&ms_ice_desc,
&ms_void_sink_desc,
NULL
};

View file

@ -1,227 +0,0 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="9,00"
Name="echo"
ProjectGUID="{B616AC95-748E-4CD5-89AC-772DC3C069D9}"
RootNamespace="echo"
Keyword="Win32Proj"
TargetFrameworkVersion="196613"
>
<Platforms>
<Platform
Name="Windows Mobile 6 Professional SDK (ARMV4I)"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
ExecutionBucket="7"
Optimization="0"
AdditionalIncludeDirectories="..\..\..\include;..\..\..\..\oRTP\include"
PreprocessorDefinitions="_DEBUG;_WIN32_WCE=$(CEVER);UNDER_CE;$(PLATFORMDEFINES);WINCE;DEBUG;_CONSOLE;$(ARCHFAM);$(_ARCHFAM_);_UNICODE;UNICODE;ORTP_INET6"
MinimalRebuild="true"
RuntimeLibrary="1"
UsePrecompiledHeader="0"
WarningLevel="3"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG;_WIN32_WCE=$(CEVER);UNDER_CE;$(PLATFORMDEFINES)"
Culture="1033"
AdditionalIncludeDirectories="$(IntDir)"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalOptions=" /subsystem:windowsce,5.02"
AdditionalDependencies="mediastreamer2.lib oRTP.lib"
OutputFile="$(OutDir)/echo.exe"
LinkIncremental="2"
AdditionalLibraryDirectories="&quot;..\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\..\..\..\oRTP\build\wince\$(PlatformName)\$(ConfigurationName)&quot;"
DelayLoadDLLs="$(NOINHERIT)"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(OutDir)/echo.pdb"
SubSystem="0"
StackReserveSize="65536"
StackCommitSize="4096"
EntryPointSymbol="mainWCRTStartup"
RandomizedBaseAddress="1"
DataExecutionPrevention="0"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCCodeSignTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
<DeploymentTool
ForceDirty="-1"
RemoteDirectory=""
RegisterOutput="0"
AdditionalFiles=""
/>
<DebuggerTool
/>
</Configuration>
<Configuration
Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="1"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
ExecutionBucket="7"
Optimization="2"
FavorSizeOrSpeed="2"
PreprocessorDefinitions="NDEBUG;_WIN32_WCE=$(CEVER);UNDER_CE;$(PLATFORMDEFINES);WINCE;_CONSOLE;$(ARCHFAM);$(_ARCHFAM_);_UNICODE;UNICODE"
RuntimeLibrary="0"
UsePrecompiledHeader="0"
WarningLevel="3"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG;_WIN32_WCE=$(CEVER);UNDER_CE;$(PLATFORMDEFINES)"
Culture="1033"
AdditionalIncludeDirectories="$(IntDir)"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalOptions=" /subsystem:windowsce,5.02"
OutputFile="$(OutDir)/echo.exe"
LinkIncremental="1"
DelayLoadDLLs="$(NOINHERIT)"
GenerateDebugInformation="true"
ProgramDatabaseFile="$(OutDir)/echo.pdb"
SubSystem="0"
StackReserveSize="65536"
StackCommitSize="4096"
OptimizeReferences="2"
EnableCOMDATFolding="2"
EntryPointSymbol="mainWCRTStartup"
RandomizedBaseAddress="1"
DataExecutionPrevention="0"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCCodeSignTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
<DeploymentTool
ForceDirty="-1"
RemoteDirectory=""
RegisterOutput="0"
AdditionalFiles=""
/>
<DebuggerTool
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
>
<File
RelativePath="..\..\..\tests\echo.c"
>
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
>
</Filter>
<Filter
Name="Resource Files"
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
>
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View file

@ -1,129 +0,0 @@
LIBRARY mediastreamer2
EXPORTS
ms_init
ms_exit
ms_filter_new
ms_filter_new_from_desc
ms_filter_destroy
ms_filter_create_encoder
ms_filter_create_decoder
ms_filter_call_method
ms_filter_call_method_noarg
ms_filter_link
ms_filter_unlink
ms_filter_preprocess
ms_filter_postprocess
ms_filter_codec_supported
ms_filter_register
ms_filter_new_from_name
ms_filter_set_notify_callback
ms_filter_get_encoder
ms_snd_card_new
ms_snd_card_manager_destroy
ms_snd_card_manager_reload
ms_snd_card_manager_add_card
ms_snd_card_manager_register_desc
ms_snd_card_create_reader
ms_snd_card_create_writer
ms_snd_card_get_name
ms_snd_card_get_string_id
ms_snd_card_manager_get
ms_snd_card_manager_get_default_card
ms_snd_card_manager_get_default_capture_card
ms_snd_card_manager_get_default_playback_card
ms_snd_card_manager_get_card
ms_snd_card_manager_get_list
ms_snd_card_dup
ms_snd_card_destroy
ms_snd_card_set_level
ms_snd_card_get_level
ms_snd_card_set_capture
ms_snd_card_set_control
ms_snd_card_get_control
ms_web_cam_new
ms_web_cam_manager_reload
ms_web_cam_manager_get_default_cam
ms_web_cam_manager_get
ms_web_cam_manager_get_list
ms_web_cam_manager_get_cam
ms_web_cam_manager_add_cam
ms_web_cam_manager_register_desc
ms_web_cam_create_reader
ms_web_cam_get_driver_type
ms_web_cam_get_name
ms_web_cam_get_string_id
ms_ticker_new
ms_ticker_set_name
ms_ticker_destroy
ms_ticker_attach
ms_ticker_detach
ms_ticker_set_time_func
ms_ticker_print_graphs
ms_bufferizer_init
ms_bufferizer_uninit
ms_bufferizer_read
ms_bufferizer_put
ms_bufferizer_put_from_queue
ms_queue_init
ms_queue_flush
rfc3984_init
rfc3984_uninit
rfc3984_pack
rfc3984_unpack
rfc3984_set_mode
ms_load_plugins
audio_stream_start
audio_stream_alive
audio_stream_enable_automatic_gain_control
audio_stream_set_echo_canceler_params
audio_stream_enable_gain_control
audio_stream_enable_echo_limiter
audio_stream_new
audio_stream_set_rtcp_information
audio_stream_start_with_files
audio_stream_start_now
audio_stream_set_relay_session_id
audio_stream_play_received_dtmfs
audio_stream_set_mic_gain
audio_stream_stop
audio_stream_play
audio_stream_record
ms_snd_card_get_capabilities
ring_start_with_cb
ring_start
ring_stop
audio_stream_send_dtmf
ms_discover_mtu
ms_set_mtu
ms_list_append
ms_list_remove
ms_list_free
ms_list_for_each
ms_list_find
ms_list_for_each2
ms_list_find_custom
ms_list_size
ms_list_nth_data
ms_list_remove_link
ms_list_index
ms_list_prepend
ms_list_position
ms_time
ms_get_payload_max_size
ms_sleep

View file

@ -1,60 +0,0 @@

Microsoft Visual Studio Solution File, Format Version 10.00
# Visual Studio 2008
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mediastreamer2", "mediastreamer2.vcproj", "{177F5AE2-A40C-4412-8F26-7F85FA32464E}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "echo", "echo\echo.vcproj", "{B616AC95-748E-4CD5-89AC-772DC3C069D9}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) = Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I) = Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
Debug|Windows Mobile 6 Professional SDK (ARMV4I) = Debug|Windows Mobile 6 Professional SDK (ARMV4I)
Debug|Windows Mobile 6 Standard SDK (ARMV4I) = Debug|Windows Mobile 6 Standard SDK (ARMV4I)
Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I) = Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I) = Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
Release|Windows Mobile 6 Professional SDK (ARMV4I) = Release|Windows Mobile 6 Professional SDK (ARMV4I)
Release|Windows Mobile 6 Standard SDK (ARMV4I) = Release|Windows Mobile 6 Standard SDK (ARMV4I)
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{177F5AE2-A40C-4412-8F26-7F85FA32464E}.Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
{177F5AE2-A40C-4412-8F26-7F85FA32464E}.Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
{177F5AE2-A40C-4412-8F26-7F85FA32464E}.Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Deploy.0 = Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
{177F5AE2-A40C-4412-8F26-7F85FA32464E}.Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
{177F5AE2-A40C-4412-8F26-7F85FA32464E}.Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Build.0 = Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
{177F5AE2-A40C-4412-8F26-7F85FA32464E}.Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Deploy.0 = Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
{177F5AE2-A40C-4412-8F26-7F85FA32464E}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 6 Professional SDK (ARMV4I)
{177F5AE2-A40C-4412-8F26-7F85FA32464E}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Debug|Windows Mobile 6 Professional SDK (ARMV4I)
{177F5AE2-A40C-4412-8F26-7F85FA32464E}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Debug|Windows Mobile 6 Professional SDK (ARMV4I)
{177F5AE2-A40C-4412-8F26-7F85FA32464E}.Debug|Windows Mobile 6 Standard SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 6 Standard SDK (ARMV4I)
{177F5AE2-A40C-4412-8F26-7F85FA32464E}.Debug|Windows Mobile 6 Standard SDK (ARMV4I).Build.0 = Debug|Windows Mobile 6 Standard SDK (ARMV4I)
{177F5AE2-A40C-4412-8F26-7F85FA32464E}.Debug|Windows Mobile 6 Standard SDK (ARMV4I).Deploy.0 = Debug|Windows Mobile 6 Standard SDK (ARMV4I)
{177F5AE2-A40C-4412-8F26-7F85FA32464E}.Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
{177F5AE2-A40C-4412-8F26-7F85FA32464E}.Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Build.0 = Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
{177F5AE2-A40C-4412-8F26-7F85FA32464E}.Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).Deploy.0 = Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)
{177F5AE2-A40C-4412-8F26-7F85FA32464E}.Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
{177F5AE2-A40C-4412-8F26-7F85FA32464E}.Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Build.0 = Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
{177F5AE2-A40C-4412-8F26-7F85FA32464E}.Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I).Deploy.0 = Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)
{177F5AE2-A40C-4412-8F26-7F85FA32464E}.Release|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 6 Professional SDK (ARMV4I)
{177F5AE2-A40C-4412-8F26-7F85FA32464E}.Release|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Release|Windows Mobile 6 Professional SDK (ARMV4I)
{177F5AE2-A40C-4412-8F26-7F85FA32464E}.Release|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Release|Windows Mobile 6 Professional SDK (ARMV4I)
{177F5AE2-A40C-4412-8F26-7F85FA32464E}.Release|Windows Mobile 6 Standard SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 6 Standard SDK (ARMV4I)
{177F5AE2-A40C-4412-8F26-7F85FA32464E}.Release|Windows Mobile 6 Standard SDK (ARMV4I).Build.0 = Release|Windows Mobile 6 Standard SDK (ARMV4I)
{177F5AE2-A40C-4412-8F26-7F85FA32464E}.Release|Windows Mobile 6 Standard SDK (ARMV4I).Deploy.0 = Release|Windows Mobile 6 Standard SDK (ARMV4I)
{B616AC95-748E-4CD5-89AC-772DC3C069D9}.Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 6 Professional SDK (ARMV4I)
{B616AC95-748E-4CD5-89AC-772DC3C069D9}.Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 6 Professional SDK (ARMV4I)
{B616AC95-748E-4CD5-89AC-772DC3C069D9}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 6 Professional SDK (ARMV4I)
{B616AC95-748E-4CD5-89AC-772DC3C069D9}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Debug|Windows Mobile 6 Professional SDK (ARMV4I)
{B616AC95-748E-4CD5-89AC-772DC3C069D9}.Debug|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Debug|Windows Mobile 6 Professional SDK (ARMV4I)
{B616AC95-748E-4CD5-89AC-772DC3C069D9}.Debug|Windows Mobile 6 Standard SDK (ARMV4I).ActiveCfg = Debug|Windows Mobile 6 Professional SDK (ARMV4I)
{B616AC95-748E-4CD5-89AC-772DC3C069D9}.Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 6 Professional SDK (ARMV4I)
{B616AC95-748E-4CD5-89AC-772DC3C069D9}.Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 6 Professional SDK (ARMV4I)
{B616AC95-748E-4CD5-89AC-772DC3C069D9}.Release|Windows Mobile 6 Professional SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 6 Professional SDK (ARMV4I)
{B616AC95-748E-4CD5-89AC-772DC3C069D9}.Release|Windows Mobile 6 Professional SDK (ARMV4I).Build.0 = Release|Windows Mobile 6 Professional SDK (ARMV4I)
{B616AC95-748E-4CD5-89AC-772DC3C069D9}.Release|Windows Mobile 6 Professional SDK (ARMV4I).Deploy.0 = Release|Windows Mobile 6 Professional SDK (ARMV4I)
{B616AC95-748E-4CD5-89AC-772DC3C069D9}.Release|Windows Mobile 6 Standard SDK (ARMV4I).ActiveCfg = Release|Windows Mobile 6 Professional SDK (ARMV4I)
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

View file

@ -1,933 +0,0 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="9,00"
Name="mediastreamer2"
ProjectGUID="{177F5AE2-A40C-4412-8F26-7F85FA32464E}"
RootNamespace="mediastreamer2"
Keyword="MFCDLLProj"
TargetFrameworkVersion="131072"
>
<Platforms>
<Platform
Name="Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"
/>
<Platform
Name="Windows Mobile 5.0 Smartphone SDK (ARMV4I)"
/>
<Platform
Name="Windows Mobile 6 Standard SDK (ARMV4I)"
/>
<Platform
Name="Windows Mobile 6 Professional SDK (ARMV4I)"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"
OutputDirectory="$(PlatformName)\Debug"
IntermediateDirectory="$(PlatformName)\Debug"
ConfigurationType="2"
UseOfMFC="0"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="_DEBUG"
MkTypLibCompatible="false"
/>
<Tool
Name="VCCLCompilerTool"
ExecutionBucket="7"
Optimization="2"
FavorSizeOrSpeed="1"
AdditionalIncludeDirectories=".;..\..\include;..\..\..\oRTP\include;..\..\..\codecs\speex\include"
PreprocessorDefinitions="__VIDEO_DISABLED__;AMD_HACK;HAVE_SPEEX_NOISE;ORTP_INET6;MEDIASTREAMER2_EXPORT;_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;$(PLATFORMDEFINES);_DEBUG;_USRDLL;$(ARCHFAM);$(_ARCHFAM_);POCKETPC2003_UI_MODEL;POCKETPC2003_UI_MODEL"
RuntimeLibrary="3"
TreatWChar_tAsBuiltInType="false"
UsePrecompiledHeader="0"
ProgramDataBaseFileName="$(IntDir)/mediastreamer2.pdb"
WarningLevel="3"
DebugInformationFormat="3"
CompileAs="2"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG;_UNICODE;UNICODE;_WIN32_WCE;UNDER_CE"
Culture="1033"
AdditionalIncludeDirectories="$(IntDir)"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalOptions=" /SUBSYSTEM:WINDOWSCE,5.01 /MACHINE:THUMB"
AdditionalDependencies=" ws2.lib iphlpapi.lib mmtimer.lib libcmtd.lib dmoguids.lib strmiids.lib strmbase.lib atlsd.lib d3dmx.lib"
IgnoreAllDefaultLibraries="true"
ModuleDefinitionFile="mediastreamer2.def"
GenerateDebugInformation="true"
RandomizedBaseAddress="1"
DataExecutionPrevention="0"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCCodeSignTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
<DeploymentTool
ForceDirty="-1"
RemoteDirectory="%CSIDL_PROGRAM_FILES%\vbamsipua"
RegisterOutput="0"
AdditionalFiles=""
/>
<DebuggerTool
/>
</Configuration>
<Configuration
Name="Debug|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"
OutputDirectory="$(PlatformName)\Debug"
IntermediateDirectory="$(PlatformName)\Debug"
ConfigurationType="2"
UseOfMFC="0"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="_DEBUG"
MkTypLibCompatible="false"
/>
<Tool
Name="VCCLCompilerTool"
ExecutionBucket="7"
Optimization="0"
AdditionalIncludeDirectories=".;..\..\include;..\..\..\oRTP\include;..\..\..\codecs\speex\include"
PreprocessorDefinitions="__VIDEO_DISABLED__;ORTP_INET6;MEDIASTREAMER2_EXPORT;AMD_HACK;_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;$(PLATFORMDEFINES);_DEBUG;_USRDLL;$(ARCHFAM);$(_ARCHFAM_);SMARTPHONE2003_UI_MODEL;SMARTPHONE2003_UI_MODEL"
RuntimeLibrary="3"
TreatWChar_tAsBuiltInType="false"
UsePrecompiledHeader="0"
ProgramDataBaseFileName="$(IntDir)/mediastreamer2.pdb"
WarningLevel="3"
DebugInformationFormat="3"
CompileAs="2"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG;_UNICODE;UNICODE;_WIN32_WCE;UNDER_CE"
Culture="1033"
AdditionalIncludeDirectories="$(IntDir)"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalOptions=" /SUBSYSTEM:WINDOWSCE,5.01 /MACHINE:THUMB"
AdditionalDependencies=" ws2.lib iphlpapi.lib mmtimer.lib libcmtd.lib dmoguids.lib strmiids.lib strmbase.lib atlsd.lib d3dmx.lib"
IgnoreAllDefaultLibraries="true"
ModuleDefinitionFile="mediastreamer2.def"
GenerateDebugInformation="true"
RandomizedBaseAddress="1"
DataExecutionPrevention="0"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCCodeSignTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
<DeploymentTool
ForceDirty="-1"
RemoteDirectory="%CSIDL_PROGRAM_FILES%\vbamsipua"
RegisterOutput="0"
AdditionalFiles=""
/>
<DebuggerTool
/>
</Configuration>
<Configuration
Name="Debug|Windows Mobile 6 Standard SDK (ARMV4I)"
OutputDirectory="Windows Mobile 6 Standard SDK (ARMV4I)\$(ConfigurationName)"
IntermediateDirectory="Windows Mobile 6 Standard SDK (ARMV4I)\$(ConfigurationName)"
ConfigurationType="2"
UseOfMFC="0"
UseOfATL="0"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="_DEBUG"
MkTypLibCompatible="false"
TargetEnvironment="1"
/>
<Tool
Name="VCCLCompilerTool"
ExecutionBucket="7"
Optimization="2"
FavorSizeOrSpeed="1"
AdditionalIncludeDirectories=".;..\..\include;..\..\..\oRTP\include;..\..\..\codecs\speex\include"
PreprocessorDefinitions="__VIDEO_DISABLED__;AMD_HACK;HAVE_SPEEX_NOISE;ORTP_INET6;MEDIASTREAMER2_EXPORT;_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;$(PLATFORMDEFINES);_DEBUG;_USRDLL;$(ARCHFAM);$(_ARCHFAM_)"
ExceptionHandling="1"
RuntimeLibrary="3"
TreatWChar_tAsBuiltInType="false"
UsePrecompiledHeader="0"
ProgramDataBaseFileName="$(IntDir)/mediastreamer2.pdb"
WarningLevel="3"
DebugInformationFormat="3"
CompileAs="2"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG;_UNICODE;UNICODE;_WIN32_WCE;UNDER_CE"
Culture="1033"
AdditionalIncludeDirectories="$(IntDir)"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalOptions=" /SUBSYSTEM:WINDOWSCE,5.01 /MACHINE:THUMB"
AdditionalDependencies="atlsd.lib strmiids.lib dmoguids.lib strmbase.lib ws2.lib iphlpapi.lib mmtimer.lib libcmtd.lib"
IgnoreAllDefaultLibraries="true"
ModuleDefinitionFile="mediastreamer2.def"
GenerateDebugInformation="true"
RandomizedBaseAddress="1"
DataExecutionPrevention="0"
TargetMachine="0"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCCodeSignTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
<DeploymentTool
ForceDirty="-1"
RemoteDirectory="%CSIDL_PROGRAM_FILES%\amsipua"
RegisterOutput="0"
AdditionalFiles=""
/>
<DebuggerTool
/>
</Configuration>
<Configuration
Name="Debug|Windows Mobile 6 Professional SDK (ARMV4I)"
OutputDirectory="Windows Mobile 6 Professional SDK (ARMV4I)\$(ConfigurationName)"
IntermediateDirectory="Windows Mobile 6 Professional SDK (ARMV4I)\$(ConfigurationName)"
ConfigurationType="2"
UseOfMFC="0"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="_DEBUG"
MkTypLibCompatible="false"
TargetEnvironment="1"
/>
<Tool
Name="VCCLCompilerTool"
ExecutionBucket="7"
Optimization="2"
FavorSizeOrSpeed="1"
AdditionalIncludeDirectories=".;&quot;..\..\..\..\..\linphone-builder\speex\include&quot;;..\..;..\..\include;..\..\..\oRTP\include;..\..\..\codecs\speex\include"
PreprocessorDefinitions="__VIDEO_DISABLED__;HAVE_SPEEX_NOISE;ORTP_INET6;MEDIASTREAMER2_EXPORT;_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;$(PLATFORMDEFINES);_DEBUG;_USRDLL;$(ARCHFAM);$(_ARCHFAM_)"
RuntimeLibrary="3"
TreatWChar_tAsBuiltInType="false"
UsePrecompiledHeader="0"
ProgramDataBaseFileName="$(IntDir)/mediastreamer2.pdb"
WarningLevel="3"
DebugInformationFormat="3"
CompileAs="2"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG;_UNICODE;UNICODE;_WIN32_WCE;UNDER_CE"
Culture="1033"
AdditionalIncludeDirectories="$(IntDir)"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalOptions=" /SUBSYSTEM:WINDOWSCE,5.01 /MACHINE:THUMB"
AdditionalDependencies="ws2.lib iphlpapi.lib mmtimer.lib libcmtd.lib dmoguids.lib strmiids.lib strmbase.lib atlsd.lib d3dmx.lib ortp.lib libspeex.lib libspeexdsp.lib"
AdditionalLibraryDirectories="&quot;..\..\..\..\..\linphone-builder\speex\lib&quot;;&quot;..\..\..\oRTP\build\wince\$(PlatformName)\$(ConfigurationName)&quot;;&quot;..\..\..\..\..\linphone-builder\speex\win32\VS2008\libspeex\$(PlatformName)\Debug_RTL_dll&quot;"
IgnoreAllDefaultLibraries="true"
ModuleDefinitionFile="mediastreamer2.def"
GenerateDebugInformation="true"
RandomizedBaseAddress="1"
DataExecutionPrevention="0"
TargetMachine="0"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCCodeSignTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
<DeploymentTool
ForceDirty="-1"
RemoteDirectory=""
RegisterOutput="0"
AdditionalFiles=""
/>
<DebuggerTool
/>
</Configuration>
<Configuration
Name="Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I)"
OutputDirectory="$(PlatformName)\Release"
IntermediateDirectory="$(PlatformName)\Release"
ConfigurationType="2"
UseOfMFC="0"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="NDEBUG"
MkTypLibCompatible="false"
/>
<Tool
Name="VCCLCompilerTool"
ExecutionBucket="7"
AdditionalIncludeDirectories=".;..\..\include;..\..\..\oRTP\include;..\..\..\codecs\speex\include"
PreprocessorDefinitions="__VIDEO_DISABLED__;AMD_HACK;HAVE_SPEEX_NOISE;ORTP_INET6;MEDIASTREAMER2_EXPORT;_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;$(PLATFORMDEFINES);NDEBUG;_USRDLL;$(ARCHFAM);$(_ARCHFAM_);POCKETPC2003_UI_MODEL;POCKETPC2003_UI_MODEL"
RuntimeLibrary="2"
TreatWChar_tAsBuiltInType="false"
UsePrecompiledHeader="0"
ProgramDataBaseFileName="$(IntDir)/mediastreamer2.pdb"
WarningLevel="3"
DebugInformationFormat="3"
CompileAs="2"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG;_UNICODE;UNICODE;_WIN32_WCE;UNDER_CE"
Culture="1033"
AdditionalIncludeDirectories="$(IntDir)"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalOptions=" /SUBSYSTEM:WINDOWSCE,5.01 /MACHINE:THUMB"
AdditionalDependencies="ws2.lib iphlpapi.lib mmtimer.lib libcmt.lib dmoguids.lib strmiids.lib strmbase.lib atls.lib"
IgnoreAllDefaultLibraries="true"
ModuleDefinitionFile="mediastreamer2.def"
RandomizedBaseAddress="1"
DataExecutionPrevention="0"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCCodeSignTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
<DeploymentTool
ForceDirty="-1"
RemoteDirectory="\amsip"
RegisterOutput="0"
AdditionalFiles=""
/>
<DebuggerTool
/>
</Configuration>
<Configuration
Name="Release|Windows Mobile 5.0 Smartphone SDK (ARMV4I)"
OutputDirectory="$(PlatformName)\Release"
IntermediateDirectory="$(PlatformName)\Release"
ConfigurationType="2"
UseOfMFC="0"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="NDEBUG"
MkTypLibCompatible="false"
/>
<Tool
Name="VCCLCompilerTool"
ExecutionBucket="7"
AdditionalIncludeDirectories=".;..\..\include;..\..\..\oRTP\include;..\..\..\codecs\speex\include"
PreprocessorDefinitions="__VIDEO_DISABLED__;ORTP_INET6;MEDIASTREAMER2_EXPORT;AMD_HACK;_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;$(PLATFORMDEFINES);NDEBUG;_USRDLL;$(ARCHFAM);$(_ARCHFAM_);SMARTPHONE2003_UI_MODEL;SMARTPHONE2003_UI_MODEL"
RuntimeLibrary="2"
TreatWChar_tAsBuiltInType="false"
UsePrecompiledHeader="0"
ProgramDataBaseFileName="$(IntDir)/mediastreamer2.pdb"
WarningLevel="3"
DebugInformationFormat="3"
CompileAs="2"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG;_UNICODE;UNICODE;_WIN32_WCE;UNDER_CE"
Culture="1033"
AdditionalIncludeDirectories="$(IntDir)"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalOptions=" /SUBSYSTEM:WINDOWSCE,5.01 /MACHINE:THUMB"
AdditionalDependencies="ws2.lib iphlpapi.lib mmtimer.lib libcmt.lib dmoguids.lib strmiids.lib strmbase.lib atls.lib"
IgnoreAllDefaultLibraries="true"
ModuleDefinitionFile="mediastreamer2.def"
RandomizedBaseAddress="1"
DataExecutionPrevention="0"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCCodeSignTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
<DeploymentTool
ForceDirty="-1"
RemoteDirectory="%CSIDL_PROGRAM_FILES%\vbamsipua"
RegisterOutput="0"
AdditionalFiles=""
/>
<DebuggerTool
/>
</Configuration>
<Configuration
Name="Release|Windows Mobile 6 Standard SDK (ARMV4I)"
OutputDirectory="Windows Mobile 6 Standard SDK (ARMV4I)\$(ConfigurationName)"
IntermediateDirectory="Windows Mobile 6 Standard SDK (ARMV4I)\$(ConfigurationName)"
ConfigurationType="2"
UseOfMFC="0"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="NDEBUG"
MkTypLibCompatible="false"
TargetEnvironment="1"
/>
<Tool
Name="VCCLCompilerTool"
ExecutionBucket="7"
AdditionalIncludeDirectories=".;..\..\include;..\..\..\oRTP\include;..\..\..\codecs\speex\include"
PreprocessorDefinitions="__VIDEO_DISABLED__;AMD_HACK;HAVE_SPEEX_NOISE;ORTP_INET6;MEDIASTREAMER2_EXPORT;_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;$(PLATFORMDEFINES);NDEBUG;_USRDLL;$(ARCHFAM);$(_ARCHFAM_)"
RuntimeLibrary="2"
TreatWChar_tAsBuiltInType="false"
UsePrecompiledHeader="0"
ProgramDataBaseFileName="$(IntDir)/mediastreamer2.pdb"
WarningLevel="3"
DebugInformationFormat="3"
CompileAs="2"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG;_UNICODE;UNICODE;_WIN32_WCE;UNDER_CE"
Culture="1033"
AdditionalIncludeDirectories="$(IntDir)"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalOptions=" /SUBSYSTEM:WINDOWSCE,5.01 /MACHINE:THUMB"
AdditionalDependencies="atls.lib strmiids.lib dmoguids.lib strmbase.lib ws2.lib iphlpapi.lib mmtimer.lib libcmt.lib"
IgnoreAllDefaultLibraries="true"
ModuleDefinitionFile="mediastreamer2.def"
RandomizedBaseAddress="1"
DataExecutionPrevention="0"
TargetMachine="0"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCCodeSignTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
<DeploymentTool
ForceDirty="-1"
RemoteDirectory="%CSIDL_PROGRAM_FILES%\amsipua"
RegisterOutput="0"
AdditionalFiles=""
/>
<DebuggerTool
/>
</Configuration>
<Configuration
Name="Release|Windows Mobile 6 Professional SDK (ARMV4I)"
OutputDirectory="Windows Mobile 6 Professional SDK (ARMV4I)\$(ConfigurationName)"
IntermediateDirectory="Windows Mobile 6 Professional SDK (ARMV4I)\$(ConfigurationName)"
ConfigurationType="2"
UseOfMFC="0"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
PreprocessorDefinitions="NDEBUG"
MkTypLibCompatible="false"
TargetEnvironment="1"
/>
<Tool
Name="VCCLCompilerTool"
ExecutionBucket="7"
AdditionalIncludeDirectories=".;..\..\include;..\..\..\oRTP\include;..\..\..\codecs\speex\include"
PreprocessorDefinitions="__VIDEO_DISABLED__;AMD_HACK;HAVE_SPEEX_NOISE;ORTP_INET6;MEDIASTREAMER2_EXPORT;_WIN32_WCE=$(CEVER);UNDER_CE=$(CEVER);WINCE;$(PLATFORMDEFINES);NDEBUG;_USRDLL;$(ARCHFAM);$(_ARCHFAM_);POCKETPC2003_UI_MODEL;POCKETPC2003_UI_MODEL"
RuntimeLibrary="2"
TreatWChar_tAsBuiltInType="false"
UsePrecompiledHeader="0"
ProgramDataBaseFileName="$(IntDir)/mediastreamer2.pdb"
WarningLevel="3"
DebugInformationFormat="3"
CompileAs="2"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG;_UNICODE;UNICODE;_WIN32_WCE;UNDER_CE"
Culture="1033"
AdditionalIncludeDirectories="$(IntDir)"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLinkerTool"
AdditionalOptions=" /SUBSYSTEM:WINDOWSCE,5.01 /MACHINE:THUMB"
AdditionalDependencies="ws2.lib iphlpapi.lib mmtimer.lib libcmt.lib dmoguids.lib strmiids.lib strmbase.lib atls.lib"
IgnoreAllDefaultLibraries="true"
ModuleDefinitionFile="mediastreamer2.def"
RandomizedBaseAddress="1"
DataExecutionPrevention="0"
TargetMachine="0"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCCodeSignTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
<DeploymentTool
ForceDirty="-1"
RemoteDirectory=""
RegisterOutput="0"
AdditionalFiles=""
/>
<DebuggerTool
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
>
<File
RelativePath="..\..\src\alaw.c"
>
</File>
<File
RelativePath="..\..\src\audiostream.c"
>
</File>
<File
RelativePath="..\..\src\dsptools.c"
>
</File>
<File
RelativePath="..\..\src\dtmfgen.c"
>
</File>
<File
RelativePath="..\..\src\dxfilter.cpp"
>
</File>
<File
RelativePath="..\..\src\equalizer.c"
>
</File>
<File
RelativePath="..\..\src\ice.c"
>
</File>
<File
RelativePath="..\..\src\kiss_fft.c"
>
</File>
<File
RelativePath="..\..\src\kiss_fftr.c"
>
</File>
<File
RelativePath="..\..\src\mscommon.c"
>
</File>
<File
RelativePath="..\..\src\msconf.c"
>
</File>
<File
RelativePath="..\..\src\msfileplayer_win.c"
>
</File>
<File
RelativePath="..\..\src\msfilerec_win.c"
>
</File>
<File
RelativePath="..\..\src\msfilter.c"
>
</File>
<File
RelativePath="..\..\src\msjoin.c"
>
</File>
<File
RelativePath="..\..\src\msqueue.c"
>
</File>
<File
RelativePath="..\..\src\msrtp.c"
>
</File>
<File
RelativePath="..\..\src\mssndcard.c"
>
</File>
<File
RelativePath="..\..\src\msspeex.c"
>
</File>
<File
RelativePath="..\..\src\msticker.c"
>
</File>
<File
RelativePath="..\..\src\msvolume.c"
>
</File>
<File
RelativePath="..\..\src\mswebcam.c"
>
</File>
<File
RelativePath="..\..\src\mtu.c"
>
</File>
<File
RelativePath="..\..\src\speexec.c"
>
</File>
<File
RelativePath="..\..\src\tee.c"
>
</File>
<File
RelativePath="..\..\src\ulaw.c"
>
</File>
<File
RelativePath="..\..\src\wincevideods.c"
>
</File>
<File
RelativePath="..\..\src\winsnd3.c"
>
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
>
<File
RelativePath=".\alldescs.h"
>
</File>
<File
RelativePath="..\..\include\mediastreamer2\allfilters.h"
>
</File>
<File
RelativePath="..\..\include\mediastreamer2\dtmfgen.h"
>
</File>
<File
RelativePath="..\..\src\dxfilter.h"
>
</File>
<File
RelativePath="..\..\src\g711common.h"
>
</File>
<File
RelativePath="..\..\include\mediastreamer2\ice.h"
>
</File>
<File
RelativePath="..\..\include\mediastreamer2\mediastream.h"
>
</File>
<File
RelativePath="..\..\include\mediastreamer2\mscommon.h"
>
</File>
<File
RelativePath="..\..\include\mediastreamer2\msfileplayer.h"
>
</File>
<File
RelativePath="..\..\include\mediastreamer2\msfilerec.h"
>
</File>
<File
RelativePath="..\..\include\mediastreamer2\msfilter.h"
>
</File>
<File
RelativePath="..\..\include\mediastreamer2\msqueue.h"
>
</File>
<File
RelativePath="..\..\include\mediastreamer2\msrtp.h"
>
</File>
<File
RelativePath="..\..\include\mediastreamer2\mssndcard.h"
>
</File>
<File
RelativePath="..\..\include\mediastreamer2\msticker.h"
>
</File>
<File
RelativePath="..\..\include\mediastreamer2\waveheader.h"
>
</File>
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>

View file

@ -1,659 +0,0 @@
dnl Process this file with autoconf to produce a configure script.
AC_INIT([mediastreamer],[2.3.1])
AC_MSG_NOTICE([$PACKAGE_NAME-$PACKAGE_VERSION A mediastreaming library for telephony application.])
AC_MSG_NOTICE([licensed under the terms of the General Public License (GPL)])
AC_CANONICAL_SYSTEM
dnl Source packaging numbers
MEDIASTREAMER_MAJOR_VERSION=$(echo $PACKAGE_VERSION | cut -d. -f1)
MEDIASTREAMER_MINOR_VERSION=$(echo $PACKAGE_VERSION | cut -d. -f2)
MEDIASTREAMER_MICRO_VERSION=$(echo $PACKAGE_VERSION | cut -d. -f3)
MEDIASTREAMER_EXTRA_VERSION=$(echo $PACKAGE_VERSION | cut -d. -f4)
LIBMEDIASTREAMER_SO_CURRENT=0 dnl increment this number when you add/change/remove an interface
LIBMEDIASTREAMER_SO_REVISION=1 dnl increment this number when you change source code, without changing interfaces; set to 0 when incrementing CURRENT
LIBMEDIASTREAMER_SO_AGE=0 dnl increment this number when you add an interface, set to 0 if you remove an interface
LIBMEDIASTREAMER_SO_VERSION=$LIBMEDIASTREAMER_SO_CURRENT:$LIBMEDIASTREAMER_SO_REVISION:$LIBMEDIASTREAMER_SO_AGE
MEDIASTREAMER_VERSION=${MEDIASTREAMER_MAJOR_VERSION}.${MEDIASTREAMER_MINOR_VERSION}.${MEDIASTREAMER_MICRO_VERSION}
if test -n "$MEDIASTREAMER_EXTRA_VERSION" ; then
MEDIASTREAMER_VERSION="${MEDIASTREAMER_VERSION}.${MEDIASTREAMER_EXTRA_VERSION}"
fi
AC_SUBST(LIBMEDIASTREAMER_SO_VERSION)
AC_SUBST(MEDIASTREAMER_VERSION)
PACKAGE=mediastreamer
OS=`uname|sed -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
AC_MSG_RESULT([Building Package on ${OS}])
AM_INIT_AUTOMAKE([tar-ustar])
m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])],)
AC_CONFIG_HEADERS(mediastreamer-config.h)
AC_DEFINE_UNQUOTED(MEDIASTREAMER_MAJOR_VERSION,$MEDIASTREAMER_MAJOR_VERSION, [major version])
AC_DEFINE_UNQUOTED(MEDIASTREAMER_MINOR_VERSION,$MEDIASTREAMER_MINOR_VERSION, [minor version])
AC_DEFINE_UNQUOTED(MEDIASTREAMER_MICRO_VERSION,$MEDIASTREAMER_MICRO_VERSION, [micro version])
AC_DEFINE_UNQUOTED(MEDIASTREAMER_VERSION,"$MEDIASTREAMER_VERSION",[MEDIASTREAMER version number])
MS_PUBLIC_CFLAGS=
AC_SUBST([mkdir_p])
AC_MSG_CHECKING([warning make an error on compilation])
AC_ARG_ENABLE(strict,
[ --enable-strict Enable error on compilation warning [default=no]],
[wall_werror=$enableval],
[
if test "$USER" = "smorlat" ; then
wall_werror=yes
else
wall_werror=no
fi
]
)
CFLAGS="-DORTP_INET6 $CFLAGS "
dnl enable ipv6 support
AC_ARG_ENABLE(ipv6,
[ --enable-ipv6 Turn on ipv6 support],
[case "${enableval}" in
yes) ipv6=true;;
no) ipv6=false;;
*) AC_MSG_ERROR(bad value ${enableval} for --enable-ipv6) ;;
esac],[ipv6=true])
if test x$ipv6 = xtrue ; then
CFLAGS="$CFLAGS -DINET6"
fi
AC_ARG_ENABLE(debug,
[ --enable-debug=[yes/no] enables the display of traces showing the execution of the library. [default=yes]],
[case "${enableval}" in
yes) debug_enabled=yes;;
no) debug_enabled=no;;
*) AC_MSG_ERROR("Bad value for --enable-debug");;
esac],
[debug_enabled=no] )
dnl Checks for programs.
AC_PROG_CC
AC_PROG_CXX
AC_PROG_OBJC
AC_LIBTOOL_WIN32_DLL
AC_PROG_LIBTOOL
AC_ENABLE_SHARED(yes)
AC_ENABLE_STATIC(no)
if test "$GCC" != "yes" ; then
case $target_os in
*hpux*)
dnl we are probably using HPUX cc compiler, so add a +O2 to CFLAGS
CFLAGS="$CFLAGS +O2 -g "
;;
esac
else
CFLAGS="$CFLAGS -Wall"
fi
if test $debug_enabled = "yes"; then
CFLAGS="$CFLAGS -g -DDEBUG"
else
CFLAGS="$CFLAGS -O2 -g "
fi
dnl Checks for header files.
AC_HEADER_STDC
dnl Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST
AC_C_INLINE
AC_HEADER_TIME
AC_WORDS_BIGENDIAN
if test x$ac_cv_c_bigendian = xyes ; then
CFLAGS="$CFLAGS -D_BIGENDIAN "
fi
if test $GCC = yes && test $wall_werror = yes; then
CFLAGS="$CFLAGS -Werror "
fi
macosx_found=no
mingw32ce_found=no
dnl add thread flags
case $target_os in
*darwin*)
MSPLUGINS_CFLAGS=""
MSPLUGINS_LIBS="-dynamiclib"
macosx_found=yes
LIBS="$LIBS -framework CoreFoundation -framework AudioToolbox -framework CoreAudio"
;;
*mingw32ce)
CFLAGS="$CFLAGS -DINET6 -DORTP_INET6 -D_WIN32_WINNT=0x0501 -D_WIN32_WCE -DORTP_STATIC"
CXXFLAGS="$CXXFLAGS -DINET6 -DORTP_INET6 -D_WIN32_WINNT=0x0501 -DORTP_STATIC -D_WIN32_WCE"
dnl ORTP_STATIC to tell ortp not to export its variable with dllexport, as if we were building statically, or dynamically on linux
LIBS="$LIBS -lws2"
mingw_found=yes
mingw32ce_found=yes
build_tests=no
;;
*mingw*)
CFLAGS="$CFLAGS -DINET6 -DORTP_INET6 -D_WIN32_WINNT=0x0501 -DORTP_STATIC"
CXXFLAGS="$CXXFLAGS -DINET6 -DORTP_INET6 -D_WIN32_WINNT=0x0501 -DORTP_STATIC"
dnl ORTP_STATIC to tell ortp not to export its variable with dllexport, as if we were building statically, or dynamically on linux
LIBS="$LIBS -lws2_32 -lwinmm "
mingw_found=yes
;;
*)
MSPLUGINS_CFLAGS="-pthread"
MSPLUGINS_LIBS="-shared -pthread"
CFLAGS="$CFLAGS -pthread -D_REENTRANT"
LIBS="$LIBS -pthread -lpthread"
;;
esac
AM_CONDITIONAL(BUILD_MACOSX, test x$macosx_found = xyes)
AM_CONDITIONAL(BUILD_TESTS,test x$build_tests != xno)
AC_CONFIG_COMMANDS([libtool-hacking],[
if test "$mingw_found" = "yes" ; then
echo "Hacking libtool to work with mingw..."
sed -e 's/\*\" \$a_deplib \"\*/\*/' < ./libtool > libtool.tmp
cp -f ./libtool.tmp ./libtool
rm -f ./libtool.tmp
else
echo "No need to hack libtool."
fi
], [mingw_found=$mingw_found])
dnl prefer fixed point computations
AC_ARG_ENABLE(fixed_point,
[ --enable-fixed-point Turn on fixed point computations (default: guess)],
[case "${enableval}" in
yes) fixed_point=true;;
no) fixed_point=false;;
guess) fixed_point=guess;;
*) AC_MSG_ERROR(bad value ${enableval} for --enable-fixed-point) ;;
esac],[fixed_point=guess])
if test "$fixed_point" = "guess" ; then
AC_MSG_CHECKING([whether fixed point arithmetic is preferred])
case ${target_cpu}${host_cpu} in
*bfin*)
fixed_point=true
;;
*arm*)
fixed_point=true
;;
*)
fixed_point=false
;;
esac
AC_MSG_RESULT([$fixed_point])
fi
if test x$fixed_point = xtrue ; then
MS_PUBLIC_CFLAGS="$MS_PUBLIC_CFLAGS -DMS_FIXED_POINT"
fi
dnl initialize pkg-config so that we can use it within if else fi statements.
PKG_PROG_PKG_CONFIG()
AC_SUBST(MSPLUGINS_CFLAGS)
AC_SUBST(MSPLUGINS_LIBS)
AC_CHECK_LIB(rt,clock_gettime,[LIBS="$LIBS -lrt"])
dnl *********************************
dnl various checks for soundcard apis
dnl *********************************
found_sound=no
if test x$mingw_found = xyes ; then
found_sound=yes
fi
AC_ARG_ENABLE(oss,
[ --enable-oss Disable oss support],
[case "${enableval}" in
yes) oss=true ;;
no) oss=false ;;
*) AC_MSG_ERROR(bad value ${enableval} for --disable-oss) ;;
esac],[oss=true])
if "$oss" = "true"; then
AC_CHECK_HEADERS(soundcard.h sys/soundcard.h machine/soundcard.h sys/audio.h)
if test "${ac_cv_header_sys_soundcard_h}" = "yes" || \
test "${ac_cv_header_soundcard_h}" = "yes" || \
test "${ac_cv_header_sys_audio_h}" = "yes" || \
test "${ac_cv_header_machine_soundcard_h}" = "yes"; then
found_sound=yes
else
oss=false
fi
fi
AM_CONDITIONAL(BUILD_OSS, test x$oss = xtrue)
dnl conditionnal build of ALSA support
AC_ARG_ENABLE(alsa,
[ --enable-alsa Turn on alsa native support compiling],
[case "${enableval}" in
yes) alsa=true ;;
no) alsa=false ;;
*) AC_MSG_ERROR(bad value ${enableval} for --enable-alsa) ;;
esac],[alsa=true])
if test "$alsa" = "true"; then
AC_CHECK_HEADERS(alsa/asoundlib.h,
[ AC_CHECK_LIB(asound,snd_pcm_open,
[ ALSA_LIBS="-lasound"
found_sound=yes
AC_DEFINE(__ALSA_ENABLED__,1,[defined if alsa support is available])
alsa_enabled=true
])
]
)
fi
AC_SUBST(ALSA_LIBS)
AM_CONDITIONAL(BUILD_ALSA, test x$alsa_enabled = xtrue)
AC_ARG_ENABLE(artsc,
[ --enable-artsc Turn on artsc (kde<4) sound input/output (no) ],
[case "${enableval}" in
yes) artsc=true ;;
no) artsc=false ;;
*) AC_MSG_ERROR(bad value ${enableval} for --enable-artsc) ;;
esac],[artsc=no])
arts_enabled=false
if test "$artsc" = "true" ; then
dnl check for arts (kde sound daemon) support
PKG_CHECK_MODULES(ARTS, [artsc],[
dnl New detection
arts_enabled=true
],[
dnl Old detection
if test x$artsc = xtrue ; then
AC_CHECK_HEADERS(kde/artsc/artsc.h,
[ AC_CHECK_LIB(artsc,arts_init,
[ ARTS_LIBS="-lartsc"
arts_enabled=true
])
]
)
fi
AC_SUBST(ARTS_LIBS)
])
fi
if test x$arts_enabled = xtrue; then
found_sound=yes
AC_DEFINE(__ARTS_ENABLED__,1,[defined if arts support is available])
fi
AM_CONDITIONAL(BUILD_ARTS, test x$arts_enabled = xtrue)
AC_ARG_ENABLE(portaudio,
[ --enable-portaudio Turn on portaudio native support compiling],
[case "${enableval}" in
yes) portaudio=true ;;
no) portaudio=false ;;
*) AC_MSG_ERROR(bad value ${enableval} for --enable-portaudio) ;;
esac],[portaudio=false])
if test "$portaudio" = "true"; then
AC_CHECK_HEADERS(portaudio.h,
[ AC_CHECK_LIB(portaudio,Pa_Initialize,
[ PORTAUDIO_LIBS="-lportaudio"
found_sound=yes
AC_DEFINE(__PORTAUDIO_ENABLED__,1,[defined if portaudio support is available])
portaudio_enabled=true
])
]
)
fi
AC_SUBST(PORTAUDIO_LIBS)
AM_CONDITIONAL(BUILD_PORTAUDIO, test x$portaudio_enabled = xtrue)
AC_ARG_ENABLE(macsnd,
[ --enable-macsnd Turn on native macosx sound support (default=no)],
[case "${enableval}" in
yes) macsnd=true ;;
no) macsnd=false ;;
*) AC_MSG_ERROR(bad value ${enableval} for --enable-macsnd) ;;
esac],[macsnd=false])
if test "$macsnd" = "true"; then
AC_DEFINE(__MACSND_ENABLED__,1,[defined if native macosx sound support is available])
macsnd_enabled=true
found_sound=yes
fi
AM_CONDITIONAL(BUILD_MACSND, test x$macsnd_enabled = xtrue)
AC_ARG_ENABLE(macaqsnd,
[ --enable-macaqsnd Turn on native macosx Audio Queue sound support (default=yes)],
[case "${enableval}" in
yes) macaqsnd=true ;;
no) macaqsnd=false ;;
*) AC_MSG_ERROR(bad value ${enableval} for --enable-macaqsnd) ;;
esac],[macaqsnd=true])
if test "$macosx_found" != "yes" ; then
macaqsnd=false
fi
if test "$macaqsnd" = "true"; then
AC_DEFINE(__MAC_AQ_ENABLED__,1,[defined if native macosx AQ sound support is available])
found_sound=yes
fi
AM_CONDITIONAL(BUILD_MACAQSND, test x$macaqsnd = xtrue)
AC_ARG_ENABLE(jack,
[ --disable-jack Disable jack support],
[case "${enableval}" in
yes) jack=true ;;
no) jack=false ;;
*) AC_MSG_ERROR(bad value ${enableval} for --disable-jack) ;;
esac],[jack=true])
if test x$jack = xtrue; then
dnl Check for samplerate libraries
dnl Check for jack libraries (sound output plugin)
PKG_CHECK_MODULES(JACK,jack >= 0.15.0,
[
dnl we' found jack devel files
PKG_CHECK_MODULES(SAMPLERATE, samplerate >= 0.0.13,
[AC_DEFINE(__JACK_ENABLED__,1,[Jack support])
found_sound=yes
jack_found=yes] ,
[echo "libsamplerate not found, jack support disabled."])
AC_SUBST(SAMPLERATE_CFLAGS)
AC_SUBST(SAMPLERATE_LIBS)
],
[echo "No jack support."] )
if test x$jack_found = xno ; then
dnl reset flags
JACK_CFLAGS=
JACK_LIBS=
SAMPLERATE_CFLAGS=
SAMPLERATE_LIBS=
fi
AC_SUBST(JACK_CFLAGS)
AC_SUBST(JACK_LIBS)
fi
if test "$found_sound" = "no"; then
AC_MSG_WARN([Could not find a support sound driver API])
fi
dnl *************************************
dnl check for various codecs libraries
dnl *************************************
AC_ARG_ENABLE(speex,
[ --disable-speex Disable speex support],
[case "${enableval}" in
yes) speex=true ;;
no) speex=false ;;
*) AC_MSG_ERROR(bad value ${enableval} for --disable-speex) ;;
esac],[speex=true])
if test x$speex = xtrue; then
dnl check for installed version of speex
PKG_CHECK_MODULES(SPEEX, speex >= 1.2beta3,
[ AC_DEFINE(HAVE_SPEEX_NOISE,1,[tells whether the noise arg of speex_echo_cancel can be used]) ],
[try_other_speex=yes]
)
PKG_CHECK_MODULES(SPEEX, speex >= 1.2beta3, build_speex=yes)
build_resample=false
PKG_CHECK_MODULES(SPEEXDSP, speexdsp >= 1.2beta3,
[SPEEX_LIBS="$SPEEX_LIBS $SPEEXDSP_LIBS"
AC_DEFINE(HAVE_SPEEXDSP,1,[have speexdsp library])
build_resample=yes] ,
[AC_MSG_NOTICE([No speexdsp library found.])
]
)
AC_SUBST(SPEEX_CFLAGS)
AC_SUBST(SPEEX_LIBS)
fi
AM_CONDITIONAL(BUILD_SPEEX, test x$build_speex = xyes )
AM_CONDITIONAL(BUILD_RESAMPLE, test x$build_resample = xyes )
AC_ARG_ENABLE(gsm,
[ --disable-gsm Disable gsm support],
[case "${enableval}" in
yes) gsm=true ;;
no) gsm=false ;;
*) AC_MSG_ERROR(bad value ${enableval} for --disable-gsm) ;;
esac],[gsm=true])
if test x$gsm = xtrue; then
dnl check for gsm
build_gsm=no
AC_ARG_WITH( gsm,
[ --with-gsm Sets the installation prefix of gsm codec library [default=/usr] ],
[ gsmdir=${withval}],[ gsmdir=/usr ])
if test x"$gsmdir" != xno ; then
test x"$gmsdir" = xyes && gsmdir=/usr
MS_CHECK_DEP([gsm codec],[GSM],[${gsmdir}/include],
[${gsmdir}/lib],[gsm/gsm.h],[gsm],[gsm_create])
if test "$GSM_found" = "yes" ; then
build_gsm=yes
fi
else
build_gsm=no
fi
fi
AM_CONDITIONAL(BUILD_GSM, test x$build_gsm = xyes )
MS_CHECK_VIDEO
AM_CONDITIONAL(BUILD_VIDEO, test "$video" = "true")
AM_CONDITIONAL(BUILD_THEORA, test "$have_theora" = "yes")
AM_CONDITIONAL(BUILD_WIN32, test "$mingw_found" = "yes")
AM_CONDITIONAL(BUILD_WIN32_WCE, test "$mingw32ce_found" = "yes")
dnl *********************************************
dnl setup oRTP dependency
dnl *********************************************
AC_ARG_ENABLE(external-ortp,
[ --enable-external-ortp Use external oRTP library],
[case "${enableval}" in
yes) external_ortp=true ;;
no) external_ortp=false ;;
*) AC_MSG_ERROR(bad value ${enableval} for --enable-external-ortp) ;;
esac],[external_ortp=false])
if test "$external_ortp" = 'false'; then
if test -e $srcdir/../oRTP/include/ortp/ortp.h ; then
echo "building from linphone source tree, using ../oRTP/include/ortp/ortp.h"
ORTP_CFLAGS="-I\$(top_srcdir)/../oRTP/include"
ORTP_LIBS="\$(top_builddir)/../oRTP/src/libortp.la"
if test x$ac_cv_c_bigendian = xyes ; then
ORTP_CFLAGS="$ORTP_CFLAGS -DORTP_BIGENDIAN"
fi
else
external_ortp=true
fi
fi
if test "$external_ortp" = 'true'; then
PKG_CHECK_MODULES(ORTP, ortp >= 0.9.0, ,
[ AC_MSG_ERROR([Couldn't find ortp library]) ] )
fi
AC_SUBST(ORTP_CFLAGS)
AC_SUBST(ORTP_LIBS)
dnl check dlopen support in headers and libraries, so that we can use mediastreamer plugins
AC_CHECK_HEADERS(dlfcn.h)
have_dlopen=false
AC_CHECK_LIB(dl,dlopen,[LIBS="$LIBS -ldl"; have_dlopen=true])
AC_CHECK_FUNC(dlopen,[have_dlopen=true])
if test "$have_dlopen" = "true" ; then
AC_DEFINE(HAVE_DLOPEN,1,[Defined if dlopen() is availlable])
fi
dnl check various things
AC_FUNC_ALLOCA
if test "x${prefix}" = "xNONE"; then
package_prefix=${ac_default_prefix}
else
package_prefix=${prefix}
fi
if test x$mingw_found = xyes ; then
package_prefix="."
fi
dnl define path of plugins:
AC_DEFINE_UNQUOTED(PACKAGE_PLUGINS_DIR, "${package_prefix}/lib/mediastreamer/plugins" ,[path of plugins])
PACKAGE_PLUGINS_DIR="${package_prefix}/lib/mediastreamer/plugins"
AC_SUBST(PACKAGE_PLUGINS_DIR)
PACKAGE_DATA_DIR="$prefix/share"
AC_DEFINE_UNQUOTED(PACKAGE_DATA_DIR, "${package_prefix}/share" ,[path of data])
AC_SUBST(PACKAGE_DATA_DIR)
dnl check for video4linux headers
AC_CHECK_HEADERS(linux/videodev.h linux/videodev2.h)
if test "${ac_cv_header_linux_videodev_h}" = "yes" || \
test "${ac_cv_header_linux_videodev2_h}" = "yes" ; then
found_v4l=yes
else
found_v4l=no
fi
AM_CONDITIONAL(BUILD_V4L, test x$found_v4l = xyes )
PKG_CHECK_MODULES(LIBV4L2, libv4l2,
[AC_DEFINE(HAVE_LIBV4L2,1,[Defined if we have libv4l2])]
,[echo "No libv4l2 found."]
)
PKG_CHECK_MODULES(LIBV4L1, libv4l1,
[AC_DEFINE(HAVE_LIBV4L1,1,[Defined if we have libv4l1])]
,[echo "No libv4l1 found."]
)
dnl ##################################################
dnl # Check for doxygen
dnl ##################################################
AC_PATH_PROG(DOXYGEN,doxygen,false)
AM_CONDITIONAL(HAVE_DOXYGEN, test $DOXYGEN != false)
dnl ##################################################
dnl # Check for ESP Packager
dnl ##################################################
AC_PATH_PROG(EPM,epm,false)
AC_PATH_PROG(MKEPMLIST,mkepmlist,false)
AC_PATH_PROG(EPMINSTALL,epminstall,false)
AM_CONDITIONAL(WITH_EPM,test $EPM != false && test $MKEPMLIST != false && test $EPMINSTALL != false)
# Preferred packaging system, as per EPM terminology
case $target in
*-*-linux*)
if test -f /etc/debian_version ; then
EPM_PKG_EXT=deb
else
EPM_PKG_EXT=rpm
fi
;;
*-hp-hpux*)
EPM_PKG_EXT=depot.gz;;
*-dec-osf*)
EPM_PKG_EXT=setld;;
esac
AC_SUBST(EPM_PKG_EXT)
# System software User & Group names
case $target in
*-*-linux*)
SYS_USER=root
SYS_GROUP=root
;;
*-*-hpux*|*-dec-osf*)
SYS_USER=bin
SYS_GROUP=bin
;;
esac
AC_SUBST(SYS_USER)
AC_SUBST(SYS_GROUP)
# CPU Architecture
case $target_cpu in
i?86) ARCH=i386;;
*) ARCH=$target_cpu;;
esac
AC_SUBST(ARCH)
# Various other packaging variables, that can be over-ridden ad `make
# package' time
SUMMARY="A mediastreaming library."
AC_SUBST(SUMMARY)
PACKAGER=anonymous
AC_SUBST(PACKAGER)
LICENSE=GPL
AC_SUBST(LICENSE)
VENDOR=Linphone
AC_SUBST(VENDOR)
RELEASE=1
AC_SUBST(RELEASE)
CFLAGS="$CFLAGS $MS_PUBLIC_CFLAGS"
CXXFLAGS="$CXXFLAGS $MS_PUBLIC_CFLAGS"
dnl: these ones gets exported in pkgconfig file.
AC_SUBST(MS_PUBLIC_CFLAGS)
AC_OUTPUT(
Makefile
include/Makefile
include/mediastreamer2/Makefile
src/Makefile
tests/Makefile
build/Makefile
build/win32native/Makefile
build/win32-novideo/Makefile
build/wince/Makefile
build/winmob/Makefile
mediastreamer.pc
mediastreamer2.spec
help/Makefile
help/Doxyfile
help/doxygen.dox
)

View file

@ -1,2 +0,0 @@
Doxyfile
doxygen.dox

View file

@ -1,234 +0,0 @@
# Doxyfile 1.4.1
#---------------------------------------------------------------------------
# Project related configuration options
#---------------------------------------------------------------------------
PROJECT_NAME = mediastreamer2
PROJECT_NUMBER = @MEDIASTREAMER_VERSION@
OUTPUT_DIRECTORY = doc
CREATE_SUBDIRS = NO
OUTPUT_LANGUAGE = English
USE_WINDOWS_ENCODING = NO
BRIEF_MEMBER_DESC = YES
REPEAT_BRIEF = YES
ABBREVIATE_BRIEF = "The $name class" \
"The $name widget" \
"The $name file" \
is \
provides \
specifies \
contains \
represents \
a \
an \
the
ALWAYS_DETAILED_SEC = NO
INLINE_INHERITED_MEMB = NO
FULL_PATH_NAMES = NO
STRIP_FROM_PATH =
STRIP_FROM_INC_PATH =
SHORT_NAMES = NO
JAVADOC_AUTOBRIEF = NO
MULTILINE_CPP_IS_BRIEF = NO
DETAILS_AT_TOP = NO
INHERIT_DOCS = YES
DISTRIBUTE_GROUP_DOC = NO
TAB_SIZE = 8
ALIASES =
OPTIMIZE_OUTPUT_FOR_C = YES
OPTIMIZE_OUTPUT_JAVA = NO
SUBGROUPING = YES
#---------------------------------------------------------------------------
# Build related configuration options
#---------------------------------------------------------------------------
EXTRACT_ALL = NO
EXTRACT_PRIVATE = NO
EXTRACT_STATIC = NO
EXTRACT_LOCAL_CLASSES = YES
EXTRACT_LOCAL_METHODS = NO
HIDE_UNDOC_MEMBERS = YES
HIDE_UNDOC_CLASSES = YES
HIDE_FRIEND_COMPOUNDS = NO
HIDE_IN_BODY_DOCS = NO
INTERNAL_DOCS = NO
CASE_SENSE_NAMES = YES
HIDE_SCOPE_NAMES = NO
SHOW_INCLUDE_FILES = YES
INLINE_INFO = YES
SORT_MEMBER_DOCS = NO
SORT_BRIEF_DOCS = NO
SORT_BY_SCOPE_NAME = NO
GENERATE_TODOLIST = YES
GENERATE_TESTLIST = YES
GENERATE_BUGLIST = YES
GENERATE_DEPRECATEDLIST= YES
ENABLED_SECTIONS =
MAX_INITIALIZER_LINES = 30
SHOW_USED_FILES = YES
SHOW_DIRECTORIES = YES
FILE_VERSION_FILTER =
#---------------------------------------------------------------------------
# configuration options related to warning and progress messages
#---------------------------------------------------------------------------
QUIET = NO
WARNINGS = YES
WARN_IF_UNDOCUMENTED = YES
WARN_IF_DOC_ERROR = YES
WARN_NO_PARAMDOC = NO
WARN_FORMAT = "$file:$line: $text"
WARN_LOGFILE =
#---------------------------------------------------------------------------
# configuration options related to the input files
#---------------------------------------------------------------------------
INPUT = . \
../include/ \
../src
FILE_PATTERNS = *.h \
*.c \
*.dox
RECURSIVE = YES
EXCLUDE =
EXCLUDE_SYMLINKS = NO
EXCLUDE_PATTERNS =
EXAMPLE_PATH = ../
EXAMPLE_PATTERNS =
EXAMPLE_RECURSIVE = NO
IMAGE_PATH =
INPUT_FILTER =
FILTER_PATTERNS =
FILTER_SOURCE_FILES = NO
#---------------------------------------------------------------------------
# configuration options related to source browsing
#---------------------------------------------------------------------------
SOURCE_BROWSER = NO
INLINE_SOURCES = NO
STRIP_CODE_COMMENTS = YES
REFERENCED_BY_RELATION = NO
REFERENCES_RELATION = NO
VERBATIM_HEADERS = NO
#---------------------------------------------------------------------------
# configuration options related to the alphabetical class index
#---------------------------------------------------------------------------
ALPHABETICAL_INDEX = NO
COLS_IN_ALPHA_INDEX = 5
IGNORE_PREFIX =
#---------------------------------------------------------------------------
# configuration options related to the HTML output
#---------------------------------------------------------------------------
GENERATE_HTML = YES
HTML_OUTPUT = html
HTML_FILE_EXTENSION = .html
HTML_HEADER =
HTML_FOOTER =
HTML_STYLESHEET =
HTML_ALIGN_MEMBERS = YES
GENERATE_HTMLHELP = NO
CHM_FILE =
HHC_LOCATION =
GENERATE_CHI = NO
BINARY_TOC = NO
TOC_EXPAND = NO
DISABLE_INDEX = NO
ENUM_VALUES_PER_LINE = 1
GENERATE_TREEVIEW = NO
TREEVIEW_WIDTH = 250
#---------------------------------------------------------------------------
# configuration options related to the LaTeX output
#---------------------------------------------------------------------------
GENERATE_LATEX = YES
LATEX_OUTPUT = latex
LATEX_CMD_NAME = latex
MAKEINDEX_CMD_NAME = makeindex
COMPACT_LATEX = NO
PAPER_TYPE = a4wide
EXTRA_PACKAGES =
LATEX_HEADER =
PDF_HYPERLINKS = NO
USE_PDFLATEX = NO
LATEX_BATCHMODE = NO
LATEX_HIDE_INDICES = NO
#---------------------------------------------------------------------------
# configuration options related to the RTF output
#---------------------------------------------------------------------------
GENERATE_RTF = NO
RTF_OUTPUT = rtf
COMPACT_RTF = NO
RTF_HYPERLINKS = NO
RTF_STYLESHEET_FILE =
RTF_EXTENSIONS_FILE =
#---------------------------------------------------------------------------
# configuration options related to the man page output
#---------------------------------------------------------------------------
GENERATE_MAN = YES
MAN_OUTPUT = man
MAN_EXTENSION = .3
MAN_LINKS = NO
#---------------------------------------------------------------------------
# configuration options related to the XML output
#---------------------------------------------------------------------------
GENERATE_XML = NO
XML_OUTPUT = xml
XML_SCHEMA =
XML_DTD =
XML_PROGRAMLISTING = YES
#---------------------------------------------------------------------------
# configuration options for the AutoGen Definitions output
#---------------------------------------------------------------------------
GENERATE_AUTOGEN_DEF = NO
#---------------------------------------------------------------------------
# configuration options related to the Perl module output
#---------------------------------------------------------------------------
GENERATE_PERLMOD = NO
PERLMOD_LATEX = NO
PERLMOD_PRETTY = YES
PERLMOD_MAKEVAR_PREFIX =
#---------------------------------------------------------------------------
# Configuration options related to the preprocessor
#---------------------------------------------------------------------------
ENABLE_PREPROCESSING = YES
MACRO_EXPANSION = YES
EXPAND_ONLY_PREDEF = NO
SEARCH_INCLUDES = YES
INCLUDE_PATH = ../include/mediastreamer2
INCLUDE_FILE_PATTERNS = *.h
PREDEFINED = DOXYGEN
EXPAND_AS_DEFINED =
SKIP_FUNCTION_MACROS = YES
#---------------------------------------------------------------------------
# Configuration::additions related to external references
#---------------------------------------------------------------------------
TAGFILES =
GENERATE_TAGFILE =
ALLEXTERNALS = NO
EXTERNAL_GROUPS = YES
PERL_PATH = /usr/bin/perl
#---------------------------------------------------------------------------
# Configuration options related to the dot tool
#---------------------------------------------------------------------------
CLASS_DIAGRAMS = YES
HIDE_UNDOC_RELATIONS = YES
HAVE_DOT = NO
CLASS_GRAPH = YES
COLLABORATION_GRAPH = YES
GROUP_GRAPHS = YES
UML_LOOK = NO
TEMPLATE_RELATIONS = YES
INCLUDE_GRAPH = YES
INCLUDED_BY_GRAPH = YES
CALL_GRAPH = NO
GRAPHICAL_HIERARCHY = YES
DIRECTORY_GRAPH = YES
DOT_IMAGE_FORMAT = png
DOT_PATH =
DOTFILE_DIRS =
MAX_DOT_GRAPH_WIDTH = 1024
MAX_DOT_GRAPH_HEIGHT = 1024
MAX_DOT_GRAPH_DEPTH = 1000
DOT_TRANSPARENT = NO
DOT_MULTI_TARGETS = NO
GENERATE_LEGEND = YES
DOT_CLEANUP = YES
#---------------------------------------------------------------------------
# Configuration::additions related to the search engine
#---------------------------------------------------------------------------
SEARCHENGINE = NO

View file

@ -1,32 +0,0 @@
EXTRA_DIST = Doxyfile.in doxygen.dox.in
#html doc
if HAVE_DOXYGEN
SOURCES=$(top_srcdir)/include/mediastreamer2/*.h $(top_srcdir)/src/*.c $(top_srcdir)/src/*.h
# doxdir & pkgdocdir are not always defined by automake
docdir=$(datadir)/doc
pkgdocdir=$(docdir)/$(PACKAGE)-$(VERSION)
doc_htmldir=$(pkgdocdir)/html
doc_html_DATA = $(top_builddir)/help/doc/html/html.tar
$(doc_html_DATA): $(top_builddir)/help/doc/html/index.html
cd $(<D) && tar cf html.tar *
$(top_builddir)/help/doc/html/index.html: $(SOURCES) Doxyfile Makefile.am
rm -rf doc
$(DOXYGEN) Doxyfile
install-data-hook:
cd $(DESTDIR)$(doc_htmldir) && tar xf html.tar && rm -f html.tar
uninstall-hook:
cd $(DESTDIR)$(doc_htmldir) && rm -f *
endif
clean-local:
rm -rf doc

View file

@ -1,187 +0,0 @@
/**
* @mainpage
* Project Website: http://savannah.gnu.org/projects/linphone
*
* @verbinclude README
*
*/
/**
* @defgroup mediastreamer2 mediastreamer2 library - a modular sound and video processing and streaming
* @brief mediastreamer2 Version @MEDIASTREAMER_VERSION@
*
* @see http://savannah.gnu.org/projects/linphone
*
* @section what_is_it What is mediastreamer2
*
* mediastreamer2 is a powerful engine to make audio and video streams.
* mediastreamer2 is GPL (COPYING). Please understand the licencing details
* before using it!
*
* For any use of this library beyond the rights granted to you by the
* GPL license, please contact antisip at <jack@atosc.org>.
*
* @section definitions Some definitions.
*
* Filter:
* A filter is a mediastreamer2 component that process data. A filter
* have 0 or several INPUT pins and 0 or several OUTPUT pins.
* Here is a list of possible use of filters:
* <PRE>
* capture audio or video data.
* play audio or display video data.
* send or receive RTP data.
* encode or decode audio or video data.
* transform (resize video, resample audio...) data.
* duplicate any kind of data.
* mix audio/video data.
* </PRE>
* Graph:
* A graph is a manager of filters connected together. It will transfer
* data from OUTPUT pins to INPUT pins and will be responsible for
* running filters.
*
* @section when_do_i_use_mediastreamer2 How do I use mediastremer2?
*
* Mediastreamer2 can be used for a lot of different purpose. The primary
* use is to manage RTP audio and video session. You will need to use
* the API to build filters, link them together in a graph. Then the
* ticker API will help you to start and stop the graph.
*
* Basic graph sample:
*
* <PRE>
* AUDIO CAPTURE --> ENCODE --> RTP
* FILTER --> FILTER --> FILTER
* </PRE>
*
*
* The above graph is composed of three filters. The first one has no input:
* tt captures audio data directly from the drivers and provide it to the
* OUTPUT pin. This data is sent to the INPUT pin of the encoder which of
* course encode the data and send it to its OUTPUT pin. This pin is connected
* to the INPUT pin of a filter capable to build and send RTP packets.
*
* The modular design helps you to encode in many different format just by
* replacing the "ENCODE FILTER" with another one. mediastreamer2 contains
* internal support for g711u, g711a, speex and gsm. You can add new encoding
* format by implementing new filters which can then be dynamically loaded.
*
* @section list_of_filters List of existing filters.
*
* mediastreamer2 already provides a large set of filters. Here is a complete
* list of built-in filters.
*
* <PRE>
* All supported platforms:
* RTP receiver
* RTP sender
* tee (duplicate data)
*
* Audio Filters:
* audio capture
* audio playback
* mme API (windows)
* alsa API (linux)
* oss API (linux)
* arts API (linux)
* portaudio API (macosx and other)
* macsnd API (native macosx API -please do more testing...-)
* several audio encoder/decoder: PCMU, PCMA, speex, gsm
* wav file reader.
* wav file recorder.
* resampler.
* conference bridge.
* volume analyser.
* acoustic echo canceller.
* dtmf generation filter.
*
* Video Filters:
* video capture
* v4w API (windows)
* directshow API (windows)
* video4linux API (linux)
* video display
* v4w API (windows)
* SDL API (linux, macosx...)
* several audio encoder/decoder: H263-1998, MP4V-ES, theora
* image resizer.
* format converter. (RBG24, I420...)
*
* Plugin Filters:
* iLBC decoder/encoder.
* </PRE>
*
* @section what_thanks Thanks
*
* Thanks to all the contributors and to all bug reporters.
* Enjoy mediastreamer2!
*
*/
/**
* @defgroup mediastreamer2_api Mediastreamer2 API
* @brief All API to manage mediastreamer2 library.
*
*/
/**
* @defgroup mediastreamer2_init Init API - manage mediastreamer2 library.
* @ingroup mediastreamer2_api
* @brief Init API to manage mediastreamer2 library.
*
* This file provide the API needed to initialize
* and reset the mediastreamer2 library.
*/
/**
* @defgroup mediastreamer2_soundcard Sound Card API - manage audio capture/play filters.
* @ingroup mediastreamer2_api
* @brief Sound Card API to manage audio capture/play filters.
*
* This file provide the API needed to manage
* soundcard filters.
*/
/**
* @defgroup mediastreamer2_filter Filter API - manage mediastreamer2 filters.
* @ingroup mediastreamer2_api
* @brief Filter API to manage mediastreamer2 filters.
*
* This file provide the API needed to create, link,
* unlink, find and destroy filter.
*
* It also provides definitions if you wish to implement
* your own filters.
*/
/**
* @defgroup mediastreamer2_ticker Ticker API - manage mediastreamer2 graphs.
* @ingroup mediastreamer2_api
* @brief Ticker API to manage mediastreamer2 graphs.
*
* This file provide the API needed to create, start
* and stop a graph.
*/
/**
* @page mediastreamer2_readme README
* @verbinclude README
*/
/**
* @page mediastreamer2_install INSTALL
* @verbinclude INSTALL
*/
/**
* @page mediastreamer2_license COPYING
* @verbinclude COPYING
*/
/**
* @page mediastreamer2_changelog ChangeLog
* @verbinclude ChangeLog
*/

View file

@ -1,153 +0,0 @@
/**
* @defgroup howto0_samplegraph Howto 1: build a sample audio graph.
* @ingroup mediastreamer2
<H1>Initialize mediastreamer2</H1>
When using mediastreamer2, your first task is to initialize the
library:
<PRE>
##include <mediastreamer2/mscommon.h>
int i;
i=ms_init();
if (i!=0)
return -1;
</PRE>
Mediastreamer2 provides internal components which are called filters. Those
filters must be linked together so that OUTPUT from one filter is sent to
INPUT of the other filters.
Usually, filters are used for processing audio or video data. They could
capture data, play/draw data, encode/decode data, mix data (conference),
transform data (echo canceller). One of the most important filter is the
RTP filters that are able to send and receive RTP data.
<H1>Graph sample</H1>
If you are using mediastreamer2, you probably want to do Voice Over IP
and get a graph providing a 2 way communication. This 2 graphs are very
simple:
This first graph shows the filters needed to capture data from a sound
card, encode them and send it through an RTP session.
<PRE>
AUDIO -> ENCODER -> RTP
CAPTURE -> -> SENDER
</PRE>
This second graph shows the filters needed to receive data from an RTP
session decode it and send it to the playback device.
<PRE>
RTP -> DECODER -> DTMF -> AUDIO
RECEIVER -> -> GENERATION -> PLAYBACK
</PRE>
<H1>Code to initiate the filters of the Graph sample</H1>
Note that the NULL/error checks are not done for better reading.
To build the graph, you'll need some information: you need to
select the sound card and of course have an RTP session created
with oRTP.
<PRE>
MSSndCard *sndcard;
sndcard=ms_snd_card_manager_get_default_card(ms_snd_card_manager_get());
/* audio capture filter */
MSFilter *soundread=ms_snd_card_create_reader(captcard);
MSFilter *soundwrite=ms_snd_card_create_writer(playcard);
MSFilter *encoder=ms_filter_create_encoder("PCMU");
MSFilter *decoder=ms_filter_create_decoder("PCMU");
MSFilter *rtpsend=ms_filter_new(MS_RTP_SEND_ID);
MSFilter *rtprecv=ms_filter_new(MS_RTP_RECV_ID);
RtpSession *rtp_session = *** your_ortp_session *** ;
ms_filter_call_method(rtpsend,MS_RTP_SEND_SET_SESSION,rtp_session);
ms_filter_call_method(rtprecv,MS_RTP_RECV_SET_SESSION,rtp_session);
MSFilter *dtmfgen=ms_filter_new(MS_DTMF_GEN_ID);
</PRE>
In most cases, the above graph is not enough: you'll need to configure
filter's options. As an example, you need to set sampling rate of sound
cards' filters:
<PRE>
int sr = 8000;
int chan=1;
ms_filter_call_method(soundread,MS_FILTER_SET_SAMPLE_RATE,&sr);
ms_filter_call_method(soundwrite,MS_FILTER_SET_SAMPLE_RATE,&sr);
ms_filter_call_method(stream->encoder,MS_FILTER_SET_SAMPLE_RATE,&sr);
ms_filter_call_method(stream->decoder,MS_FILTER_SET_SAMPLE_RATE,&sr);
ms_filter_call_method(soundwrite,MS_FILTER_SET_NCHANNELS, &chan);
/* if you have some fmtp parameters (from SDP for example!)
char *fmtp1 = ** get your fmtp line **;
char *fmtp2 = ** get your fmtp line **;
ms_filter_call_method(stream->encoder,MS_FILTER_ADD_FMTP, (void*)fmtp1);
ms_filter_call_method(stream->decoder,MS_FILTER_ADD_FMTP,(void*)fmtp2);
</PRE>
<H1>Code to link the filters and run the graph sample</H1>
<PRE>
ms_filter_link(stream->soundread,0,stream->encoder,0);
ms_filter_link(stream->encoder,0,stream->rtpsend,0);
ms_filter_link(stream->rtprecv,0,stream->decoder,0);
ms_filter_link(stream->decoder,0,stream->dtmfgen,0);
ms_filter_link(stream->dtmfgen,0,stream->soundwrite,0);
</PRE>
Then you need to 'attach' the filters to a ticker. A ticker is a graph
manager responsible for running filters.
In the above case, there is 2 independant graph within the ticker: you
need to attach the first element of each graph (the one that does not
contains any INPUT pins)
<PRE>
/* create ticker */
MSTicker *ticker=ms_ticker_new();
ms_ticker_attach(ticker,soundread);
ms_ticker_attach(ticker,rtprecv);
</PRE>
<H1>Code to unlink the filters and stop the graph sample</H1>
<PRE>
ms_ticker_detach(ticker,soundread);
ms_ticker_detach(ticker,rtprecv);
ms_filter_unlink(stream->soundread,0,stream->encoder,0);
ms_filter_unlink(stream->encoder,0,stream->rtpsend,0);
ms_filter_unlink(stream->rtprecv,0,stream->decoder,0);
ms_filter_unlink(stream->decoder,0,stream->dtmfgen,0);
ms_filter_unlink(stream->dtmfgen,0,stream->soundwrite,0);
if (rtp_session!=NULL) rtp_session_destroy(rtp_session);
if (rtpsend!=NULL) ms_filter_destroy(rtpsend);
if (rtprecv!=NULL) ms_filter_destroy(rtprecv);
if (soundread!=NULL) ms_filter_destroy(soundread);
if (soundwrite!=NULL) ms_filter_destroy(soundwrite);
if (encoder!=NULL) ms_filter_destroy(encoder);
if (decoder!=NULL) ms_filter_destroy(decoder);
if (dtmfgen!=NULL) ms_filter_destroy(dtmfgen);
if (ticker!=NULL) ms_ticker_destroy(ticker);
</PRE>
*/

View file

@ -1,2 +0,0 @@
Makefile.in
Makefile

View file

@ -1 +0,0 @@
SUBDIRS=mediastreamer2

View file

@ -1,2 +0,0 @@
Makefile.in
Makefile

View file

@ -1,29 +0,0 @@
mediastreamer2_includedir=$(includedir)/mediastreamer2
mediastreamer2_include_HEADERS= ice.h \
msfilter.h \
msqueue.h \
mscommon.h \
allfilters.h \
msticker.h \
msrtp.h \
dtmfgen.h \
msfilerec.h \
msfileplayer.h \
mssndcard.h \
mediastream.h \
msv4l.h \
msvideo.h \
waveheader.h \
msvideoout.h \
msvolume.h \
mstee.h \
rfc3984.h \
mswebcam.h \
dsptools.h \
msequalizer.h \
msspeexec.h
EXTRA_DIST=$(mediastreamer2_include_HEADERS)

View file

@ -1,95 +0,0 @@
/*
mediastreamer2 library - modular sound and video processing and streaming
Copyright (C) 2006 Simon MORLAT (simon.morlat@linphone.org)
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#ifndef allfilters_h
#define allfilters_h
/* this is the enum where to add your own filter id.
Please take care of always add new IDs at the end in order to preserve the binary interface*/
/*this id is used for type checking of methods, events with filters */
/*it must be used also to create filters */
typedef enum MSFilterId{
MS_FILTER_NOT_SET_ID,
MS_FILTER_PLUGIN_ID, /* no type checking will be performed on plugins */
MS_FILTER_BASE_ID,
MS_ALSA_READ_ID,
MS_ALSA_WRITE_ID,
MS_OSS_READ_ID,
MS_OSS_WRITE_ID,
MS_ULAW_ENC_ID,
MS_ULAW_DEC_ID,
MS_ALAW_ENC_ID,
MS_ALAW_DEC_ID,
MS_RTP_SEND_ID,
MS_RTP_RECV_ID,
MS_FILE_PLAYER_ID,
MS_FILE_REC_ID,
MS_DTMF_GEN_ID,
MS_SPEEX_ENC_ID,
MS_SPEEX_DEC_ID,
MS_GSM_ENC_ID,
MS_GSM_DEC_ID,
MS_V4L_ID,
MS_SDL_OUT_ID,
MS_H263_ENC_ID,
MS_H263_DEC_ID,
MS_ARTS_READ_ID,
MS_ARTS_WRITE_ID,
MS_WINSND_READ_ID,
MS_WINSND_WRITE_ID,
MS_SPEEX_EC_ID,
MS_PIX_CONV_ID,
MS_TEE_ID,
MS_SIZE_CONV_ID,
MS_CONF_ID,
MS_THEORA_ENC_ID,
MS_THEORA_DEC_ID,
MS_PASND_READ_ID,
MS_PASND_WRITE_ID,
MS_MPEG4_ENC_ID,
MS_MPEG4_DEC_ID,
MS_MJPEG_DEC_ID,
MS_JOIN_ID,
MS_RESAMPLE_ID,
MS_VIDEO_OUT_ID,
MS_VOLUME_ID,
MS_SNOW_DEC_ID,
MS_SNOW_ENC_ID,
MS_CA_READ_ID,
MS_CA_WRITE_ID,
MS_WINSNDDS_READ_ID,
MS_WINSNDDS_WRITE_ID,
MS_STATIC_IMAGE_ID,
MS_V4L2_CAPTURE_ID,
MS_H263_OLD_DEC_ID,
MS_H263_OLD_ENC_ID,
MS_MIRE_ID,
MS_VFW_ID,
MS_ICE_ID,
MS_VOID_SINK_ID,
MS_DSCAP_ID,
MS_AQ_READ_ID,
MS_AQ_WRITE_ID,
MS_EQUALIZER_ID,
MS_JPEG_DEC_ID,
MS_JPEG_ENC_ID,
} MSFilterId;
#endif

View file

@ -1,388 +0,0 @@
/*
mediastreamer2 library - modular sound and video processing and streaming
Copyright (C) 2009 Simon MORLAT (simon.morlat@linphone.org)
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
/* This file contains useful DSP routines from the speex project.
*/
/* Copyright (C) 2002-2006 Jean-Marc Valin
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
- Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
- Neither the name of the Xiph.org Foundation nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef ms_dsptools_h
#define ms_dsptools_h
#include <mediastreamer2/mscommon.h>
typedef int32_t ms_int32_t;
#ifdef MS_FIXED_POINT
typedef short ms_word16_t;
typedef int ms_word32_t;
typedef int ms_mem_t;
typedef short ms_coef_t;
#define QCONST16(x,bits) ((ms_word16_t)(.5+(x)*(((ms_word32_t)1)<<(bits))))
#define QCONST32(x,bits) ((ms_word32_t)(.5+(x)*(((ms_word32_t)1)<<(bits))))
#define NEG16(x) (-(x))
#define NEG32(x) (-(x))
#define EXTRACT16(x) ((ms_word16_t)(x))
#define EXTEND32(x) ((ms_word32_t)(x))
#define SHR16(a,shift) ((a) >> (shift))
#define SHL16(a,shift) ((a) << (shift))
#define SHR32(a,shift) ((a) >> (shift))
#define SHL32(a,shift) ((a) << (shift))
#define PSHR16(a,shift) (SHR16((a)+((1<<((shift))>>1)),shift))
#define PSHR32(a,shift) (SHR32((a)+((EXTEND32(1)<<((shift))>>1)),shift))
#define VSHR32(a, shift) (((shift)>0) ? SHR32(a, shift) : SHL32(a, -(shift)))
#define SATURATE16(x,a) (((x)>(a) ? (a) : (x)<-(a) ? -(a) : (x)))
#define SATURATE32(x,a) (((x)>(a) ? (a) : (x)<-(a) ? -(a) : (x)))
#define SHR(a,shift) ((a) >> (shift))
#define SHL(a,shift) ((ms_word32_t)(a) << (shift))
#define PSHR(a,shift) (SHR((a)+((EXTEND32(1)<<((shift))>>1)),shift))
#define SATURATE(x,a) (((x)>(a) ? (a) : (x)<-(a) ? -(a) : (x)))
#define ADD16(a,b) ((ms_word16_t)((ms_word16_t)(a)+(ms_word16_t)(b)))
#define SUB16(a,b) ((ms_word16_t)(a)-(ms_word16_t)(b))
#define ADD32(a,b) ((ms_word32_t)(a)+(ms_word32_t)(b))
#define SUB32(a,b) ((ms_word32_t)(a)-(ms_word32_t)(b))
/* result fits in 16 bits */
#define MULT16_16_16(a,b) ((((ms_word16_t)(a))*((ms_word16_t)(b))))
/* (ms_word32_t)(ms_word16_t) gives TI compiler a hint that it's 16x16->32 multiply */
#define MULT16_16(a,b) (((ms_word32_t)(ms_word16_t)(a))*((ms_word32_t)(ms_word16_t)(b)))
#define MAC16_16(c,a,b) (ADD32((c),MULT16_16((a),(b))))
#define MULT16_32_Q12(a,b) ADD32(MULT16_16((a),SHR((b),12)), SHR(MULT16_16((a),((b)&0x00000fff)),12))
#define MULT16_32_Q13(a,b) ADD32(MULT16_16((a),SHR((b),13)), SHR(MULT16_16((a),((b)&0x00001fff)),13))
#define MULT16_32_Q14(a,b) ADD32(MULT16_16((a),SHR((b),14)), SHR(MULT16_16((a),((b)&0x00003fff)),14))
#define MULT16_32_Q11(a,b) ADD32(MULT16_16((a),SHR((b),11)), SHR(MULT16_16((a),((b)&0x000007ff)),11))
#define MAC16_32_Q11(c,a,b) ADD32(c,ADD32(MULT16_16((a),SHR((b),11)), SHR(MULT16_16((a),((b)&0x000007ff)),11)))
#define MULT16_32_P15(a,b) ADD32(MULT16_16((a),SHR((b),15)), PSHR(MULT16_16((a),((b)&0x00007fff)),15))
#define MULT16_32_Q15(a,b) ADD32(MULT16_16((a),SHR((b),15)), SHR(MULT16_16((a),((b)&0x00007fff)),15))
#define MAC16_32_Q15(c,a,b) ADD32(c,ADD32(MULT16_16((a),SHR((b),15)), SHR(MULT16_16((a),((b)&0x00007fff)),15)))
#define MAC16_16_Q11(c,a,b) (ADD32((c),SHR(MULT16_16((a),(b)),11)))
#define MAC16_16_Q13(c,a,b) (ADD32((c),SHR(MULT16_16((a),(b)),13)))
#define MAC16_16_P13(c,a,b) (ADD32((c),SHR(ADD32(4096,MULT16_16((a),(b))),13)))
#define MULT16_16_Q11_32(a,b) (SHR(MULT16_16((a),(b)),11))
#define MULT16_16_Q13(a,b) (SHR(MULT16_16((a),(b)),13))
#define MULT16_16_Q14(a,b) (SHR(MULT16_16((a),(b)),14))
#define MULT16_16_Q15(a,b) (SHR(MULT16_16((a),(b)),15))
#define MULT16_16_P13(a,b) (SHR(ADD32(4096,MULT16_16((a),(b))),13))
#define MULT16_16_P14(a,b) (SHR(ADD32(8192,MULT16_16((a),(b))),14))
#define MULT16_16_P15(a,b) (SHR(ADD32(16384,MULT16_16((a),(b))),15))
#define MUL_16_32_R15(a,bh,bl) ADD32(MULT16_16((a),(bh)), SHR(MULT16_16((a),(bl)),15))
#define DIV32_16(a,b) ((ms_word16_t)(((ms_word32_t)(a))/((ms_word16_t)(b))))
#define PDIV32_16(a,b) ((ms_word16_t)(((ms_word32_t)(a)+((ms_word16_t)(b)>>1))/((ms_word16_t)(b))))
#define DIV32(a,b) (((ms_word32_t)(a))/((ms_word32_t)(b)))
#define PDIV32(a,b) (((ms_word32_t)(a)+((ms_word16_t)(b)>>1))/((ms_word32_t)(b)))
#ifdef ARM5E_ASM
#error "Fix me"
#elif defined (ARM4_ASM)
#error "Fix me"
#elif defined (BFIN_ASM)
#undef PDIV32_16
static inline ms_word16_t PDIV32_16(ms_word32_t a, ms_word16_t b)
{
ms_word32_t res, bb;
bb = b;
a += b>>1;
__asm__ (
"P0 = 15;\n\t"
"R0 = %1;\n\t"
"R1 = %2;\n\t"
//"R0 = R0 + R1;\n\t"
"R0 <<= 1;\n\t"
"DIVS (R0, R1);\n\t"
"LOOP divide%= LC0 = P0;\n\t"
"LOOP_BEGIN divide%=;\n\t"
"DIVQ (R0, R1);\n\t"
"LOOP_END divide%=;\n\t"
"R0 = R0.L;\n\t"
"%0 = R0;\n\t"
: "=m" (res)
: "m" (a), "m" (bb)
: "P0", "R0", "R1", "cc");
return res;
}
#undef DIV32_16
static inline ms_word16_t DIV32_16(ms_word32_t a, ms_word16_t b)
{
ms_word32_t res, bb;
bb = b;
/* Make the roundinf consistent with the C version
(do we need to do that?)*/
if (a<0)
a += (b-1);
__asm__ (
"P0 = 15;\n\t"
"R0 = %1;\n\t"
"R1 = %2;\n\t"
"R0 <<= 1;\n\t"
"DIVS (R0, R1);\n\t"
"LOOP divide%= LC0 = P0;\n\t"
"LOOP_BEGIN divide%=;\n\t"
"DIVQ (R0, R1);\n\t"
"LOOP_END divide%=;\n\t"
"R0 = R0.L;\n\t"
"%0 = R0;\n\t"
: "=m" (res)
: "m" (a), "m" (bb)
: "P0", "R0", "R1", "cc");
return res;
}
#undef MAX16
static inline ms_word16_t MAX16(ms_word16_t a, ms_word16_t b)
{
ms_word32_t res;
__asm__ (
"%1 = %1.L (X);\n\t"
"%2 = %2.L (X);\n\t"
"%0 = MAX(%1,%2);"
: "=d" (res)
: "%d" (a), "d" (b)
);
return res;
}
#undef MULT16_32_Q15
static inline ms_word32_t MULT16_32_Q15(ms_word16_t a, ms_word32_t b)
{
ms_word32_t res;
__asm__
(
"A1 = %2.L*%1.L (M);\n\t"
"A1 = A1 >>> 15;\n\t"
"%0 = (A1 += %2.L*%1.H) ;\n\t"
: "=&W" (res), "=&d" (b)
: "d" (a), "1" (b)
: "A1"
);
return res;
}
#undef MAC16_32_Q15
static inline ms_word32_t MAC16_32_Q15(ms_word32_t c, ms_word16_t a, ms_word32_t b)
{
ms_word32_t res;
__asm__
(
"A1 = %2.L*%1.L (M);\n\t"
"A1 = A1 >>> 15;\n\t"
"%0 = (A1 += %2.L*%1.H);\n\t"
"%0 = %0 + %4;\n\t"
: "=&W" (res), "=&d" (b)
: "d" (a), "1" (b), "d" (c)
: "A1"
);
return res;
}
#undef MULT16_32_Q14
static inline ms_word32_t MULT16_32_Q14(ms_word16_t a, ms_word32_t b)
{
ms_word32_t res;
__asm__
(
"%2 <<= 1;\n\t"
"A1 = %1.L*%2.L (M);\n\t"
"A1 = A1 >>> 15;\n\t"
"%0 = (A1 += %1.L*%2.H);\n\t"
: "=W" (res), "=d" (a), "=d" (b)
: "1" (a), "2" (b)
: "A1"
);
return res;
}
#undef MAC16_32_Q14
static inline ms_word32_t MAC16_32_Q14(ms_word32_t c, ms_word16_t a, ms_word32_t b)
{
ms_word32_t res;
__asm__
(
"%1 <<= 1;\n\t"
"A1 = %2.L*%1.L (M);\n\t"
"A1 = A1 >>> 15;\n\t"
"%0 = (A1 += %2.L*%1.H);\n\t"
"%0 = %0 + %4;\n\t"
: "=&W" (res), "=&d" (b)
: "d" (a), "1" (b), "d" (c)
: "A1"
);
return res;
}
#endif
#else
typedef float ms_mem_t;
typedef float ms_coef_t;
typedef float ms_lsp_t;
typedef float ms_sig_t;
typedef float ms_word16_t;
typedef float ms_word32_t;
#define Q15ONE 1.0f
#define LPC_SCALING 1.f
#define SIG_SCALING 1.f
#define LSP_SCALING 1.f
#define GAMMA_SCALING 1.f
#define GAIN_SCALING 1.f
#define GAIN_SCALING_1 1.f
#define VERY_SMALL 1e-15f
#define VERY_LARGE32 1e15f
#define VERY_LARGE16 1e15f
#define Q15_ONE ((ms_word16_t)1.f)
#define QCONST16(x,bits) (x)
#define QCONST32(x,bits) (x)
#define NEG16(x) (-(x))
#define NEG32(x) (-(x))
#define EXTRACT16(x) (x)
#define EXTEND32(x) (x)
#define SHR16(a,shift) (a)
#define SHL16(a,shift) (a)
#define SHR32(a,shift) (a)
#define SHL32(a,shift) (a)
#define PSHR16(a,shift) (a)
#define PSHR32(a,shift) (a)
#define VSHR32(a,shift) (a)
#define SATURATE16(x,a) (x)
#define SATURATE32(x,a) (x)
#define PSHR(a,shift) (a)
#define SHR(a,shift) (a)
#define SHL(a,shift) (a)
#define SATURATE(x,a) (x)
#define ADD16(a,b) ((a)+(b))
#define SUB16(a,b) ((a)-(b))
#define ADD32(a,b) ((a)+(b))
#define SUB32(a,b) ((a)-(b))
#define MULT16_16_16(a,b) ((a)*(b))
#define MULT16_16(a,b) ((ms_word32_t)(a)*(ms_word32_t)(b))
#define MAC16_16(c,a,b) ((c)+(ms_word32_t)(a)*(ms_word32_t)(b))
#define MULT16_32_Q11(a,b) ((a)*(b))
#define MULT16_32_Q13(a,b) ((a)*(b))
#define MULT16_32_Q14(a,b) ((a)*(b))
#define MULT16_32_Q15(a,b) ((a)*(b))
#define MULT16_32_P15(a,b) ((a)*(b))
#define MAC16_32_Q11(c,a,b) ((c)+(a)*(b))
#define MAC16_32_Q15(c,a,b) ((c)+(a)*(b))
#define MAC16_16_Q11(c,a,b) ((c)+(a)*(b))
#define MAC16_16_Q13(c,a,b) ((c)+(a)*(b))
#define MAC16_16_P13(c,a,b) ((c)+(a)*(b))
#define MULT16_16_Q11_32(a,b) ((a)*(b))
#define MULT16_16_Q13(a,b) ((a)*(b))
#define MULT16_16_Q14(a,b) ((a)*(b))
#define MULT16_16_Q15(a,b) ((a)*(b))
#define MULT16_16_P15(a,b) ((a)*(b))
#define MULT16_16_P13(a,b) ((a)*(b))
#define MULT16_16_P14(a,b) ((a)*(b))
#define DIV32_16(a,b) (((ms_word32_t)(a))/(ms_word16_t)(b))
#define PDIV32_16(a,b) (((ms_word32_t)(a))/(ms_word16_t)(b))
#define DIV32(a,b) (((ms_word32_t)(a))/(ms_word32_t)(b))
#define PDIV32(a,b) (((ms_word32_t)(a))/(ms_word32_t)(b))
#endif
#define MIN16(a,b) ((a) < (b) ? (a) : (b)) /**< Maximum 16-bit value. */
#ifdef __cplusplus
extern "C"{
#endif
/*abstraction layer over kiss fft, taken from speex as well*/
/** Compute tables for an FFT */
void *ms_fft_init(int size);
/** Destroy tables for an FFT */
void ms_fft_destroy(void *table);
/** Forward (real to half-complex) transform */
void ms_fft(void *table, ms_word16_t *in, ms_word16_t *out);
/** Backward (half-complex to real) transform */
void ms_ifft(void *table, ms_word16_t *in, ms_word16_t *out);
/** digital filtering api*/
void ms_fir_mem16(const ms_word16_t *x, const ms_coef_t *num, ms_word16_t *y, int N, int ord, ms_mem_t *mem);
#ifdef __cplusplus
}
#endif
#endif

View file

@ -1,29 +0,0 @@
/*
mediastreamer2 library - modular sound and video processing and streaming
Copyright (C) 2006 Simon MORLAT (simon.morlat@linphone.org)
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#ifndef dtmfgen_h
#define dtmfgen_h
#include "msfilter.h"
#define MS_DTMF_GEN_PUT MS_FILTER_METHOD(MS_DTMF_GEN_ID,0,const char)
extern MSFilterDesc ms_dtmf_gen_desc;
#endif

View file

@ -1,96 +0,0 @@
/*
mediastreamer2 library - modular sound and video processing and streaming
Copyright (C) 2006 Simon MORLAT (simon.morlat@linphone.org)
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#ifndef ice_hh
#define ice_hh
#include "msfilter.h"
#include "ortp/stun_udp.h"
#include "ortp/stun.h"
#include "ortp/ortp.h"
/* list of state for STUN connectivity check */
#define ICE_PRUNED -1
#define ICE_FROZEN 0
#define ICE_WAITING 1
#define ICE_IN_PROGRESS 2 /* STUN request was sent */
#define ICE_SUCCEEDED 3
#define ICE_FAILED 4 /* no answer or unrecoverable failure */
struct SdpCandidate {
/* mandatory attributes: draft 19 */
int foundation;
int component_id;
char transport[20];
int priority;
char conn_addr[64];
int conn_port;
char cand_type[20];
char rel_addr[64];
int rel_port;
/* optionnal attributes: draft 19 */
char extension_attr[512]; /* *(SP extension-att-name SP extension-att-value) */
};
struct CandidatePair {
struct SdpCandidate local_candidate;
struct SdpCandidate remote_candidate;
long long pair_priority;
/* additionnal information */
int rem_controlling;
UInt96 tid;
int connectivity_check;
int retransmission_number;
uint64_t retransmission_time;
int nominated_pair;
};
#define MAX_ICE_CANDIDATES 10
struct IceCheckList {
struct CandidatePair cand_pairs[MAX_ICE_CANDIDATES];
int nominated_pair_index;
char loc_ice_ufrag[256];
char loc_ice_pwd[256];
char rem_ice_ufrag[256];
char rem_ice_pwd[256];
int rem_controlling;
uint64_t tiebreak_value;
#define ICE_CL_RUNNING 0
#define ICE_CL_COMPLETED 1
#define ICE_CL_FAILED 2
int state;
int RTO;
int Ta;
uint64_t keepalive_time;
};
#define MS_ICE_SET_SESSION MS_FILTER_METHOD(MS_ICE_ID,0,RtpSession*)
#define MS_ICE_SET_CANDIDATEPAIRS MS_FILTER_METHOD(MS_ICE_ID,1,struct CandidatePair*)
extern MSFilterDesc ms_ice_desc;
#endif

View file

@ -1,212 +0,0 @@
/*
mediastreamer2 library - modular sound and video processing and streaming
Copyright (C) 2006 Simon MORLAT (simon.morlat@linphone.org)
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#ifndef MEDIASTREAM_H
#define MEDIASTREAM_H
#include "mediastreamer2/msfilter.h"
#include "mediastreamer2/msticker.h"
#include "mediastreamer2/mssndcard.h"
#include "mediastreamer2/mswebcam.h"
#include "mediastreamer2/msvideo.h"
#include "ortp/ortp.h"
#include "ortp/event.h"
#include <time.h>
#if defined(_WIN32_WCE)
time_t ms_time (time_t *t);
#else
#define ms_time time
#endif
typedef enum EchoLimiterType{
ELInactive,
ELControlMic,
ELControlSpeaker
} EchoLimiterType;
struct _AudioStream
{
MSTicker *ticker;
RtpSession *session;
MSFilter *soundread;
MSFilter *soundwrite;
MSFilter *encoder;
MSFilter *decoder;
MSFilter *rtprecv;
MSFilter *rtpsend;
MSFilter *dtmfgen;
MSFilter *ec;/*echo canceler*/
MSFilter *volsend,*volrecv; /*MSVolumes*/
MSFilter *read_resampler;
MSFilter *write_resampler;
MSFilter *equalizer;
uint64_t last_packet_count;
time_t last_packet_time;
EchoLimiterType el_type; /*use echo limiter: two MSVolume, measured input level controlling local output level*/
int ec_tail_len; /*milliseconds*/
int ec_delay; /*milliseconds*/
int ec_framesize; /* number of fft points */
bool_t play_dtmfs;
bool_t use_gc;
bool_t use_agc;
bool_t eq_active;
bool_t use_ng;/*noise gate*/
};
#ifdef __cplusplus
extern "C" {
#endif
typedef struct _AudioStream AudioStream;
struct _RingStream
{
MSTicker *ticker;
MSFilter *source;
MSFilter *sndwrite;
};
typedef struct _RingStream RingStream;
/* start a thread that does sampling->encoding->rtp_sending|rtp_receiving->decoding->playing */
AudioStream *audio_stream_start (RtpProfile * prof, int locport, const char *remip,
int remport, int payload_type, int jitt_comp, bool_t echo_cancel);
AudioStream *audio_stream_start_with_sndcards(RtpProfile * prof, int locport, const char *remip4, int remport, int payload_type, int jitt_comp, MSSndCard *playcard, MSSndCard *captcard, bool_t echocancel);
int audio_stream_start_with_files (AudioStream * stream, RtpProfile * prof,
const char *remip, int remport, int rem_rtcp_port,
int pt, int jitt_comp,
const char * infile, const char * outfile);
void audio_stream_play(AudioStream *st, const char *name);
void audio_stream_record(AudioStream *st, const char *name);
void audio_stream_set_rtcp_information(AudioStream *st, const char *cname, const char *tool);
void audio_stream_play_received_dtmfs(AudioStream *st, bool_t yesno);
/* those two function do the same as audio_stream_start() but in two steps
this is useful to make sure that sockets are open before sending an invite;
or to start to stream only after receiving an ack.*/
AudioStream *audio_stream_new(int locport, bool_t ipv6);
int audio_stream_start_now(AudioStream * stream, RtpProfile * prof, const char *remip, int remport, int rem_rtcp_port, int payload_type, int jitt_comp,MSSndCard *playcard, MSSndCard *captcard, bool_t echo_cancel);
void audio_stream_set_relay_session_id(AudioStream *stream, const char *relay_session_id);
/*returns true if we are still receiving some data from remote end in the last timeout seconds*/
bool_t audio_stream_alive(AudioStream * stream, int timeout);
/*enable echo-limiter dispositve: one MSVolume in input branch controls a MSVolume in the output branch*/
void audio_stream_enable_echo_limiter(AudioStream *stream, EchoLimiterType type);
/*enable gain control, to be done before start() */
void audio_stream_enable_gain_control(AudioStream *stream, bool_t val);
/*enable automatic gain control, to be done before start() */
void audio_stream_enable_automatic_gain_control(AudioStream *stream, bool_t val);
/*to be done before start */
void audio_stream_set_echo_canceller_params(AudioStream *st, int tail_len_ms, int delay_ms, int framesize);
void audio_stream_set_mic_gain(AudioStream *stream, float gain);
/*enable noise gate, must be done before start()*/
void audio_stream_enable_noise_gate(AudioStream *stream, bool_t val);
/*enable parametric equalizer in the stream that goes to the speaker*/
void audio_stream_enable_equalizer(AudioStream *stream, bool_t enabled);
void audio_stream_equalizer_set_gain(AudioStream *stream, int frequency, float gain, int freq_width);
/* stop the audio streaming thread and free everything*/
void audio_stream_stop (AudioStream * stream);
RingStream *ring_start (const char * file, int interval, MSSndCard *sndcard);
RingStream *ring_start_with_cb(const char * file, int interval, MSSndCard *sndcard, MSFilterNotifyFunc func, void * user_data);
void ring_stop (RingStream * stream);
/* send a dtmf */
int audio_stream_send_dtmf (AudioStream * stream, char dtmf);
void audio_stream_set_default_card(int cardindex);
/*****************
Video Support
*****************/
struct _VideoStream
{
MSTicker *ticker;
RtpSession *session;
MSFilter *source;
MSFilter *pixconv;
MSFilter *sizeconv;
MSFilter *tee;
MSFilter *output;
MSFilter *encoder;
MSFilter *decoder;
MSFilter *rtprecv;
MSFilter *rtpsend;
OrtpEvQueue *evq;
MSVideoSize sent_vsize;
int corner; /*for selfview*/
bool_t adapt_bitrate;
};
typedef struct _VideoStream VideoStream;
VideoStream *video_stream_new(int locport, bool_t use_ipv6);
void video_stream_enable_adaptive_bitrate_control(VideoStream *s, bool_t yesno);
int video_stream_start(VideoStream * stream, RtpProfile *profile, const char *remip, int remport, int rem_rtcp_port,
int payload, int jitt_comp, MSWebCam *device);
void video_stream_set_relay_session_id(VideoStream *stream, const char *relay_session_id);
void video_stream_set_rtcp_information(VideoStream *st, const char *cname, const char *tool);
/*function to call periodically to handle various events */
void video_stream_iterate(VideoStream *stream);
void video_stream_send_vfu(VideoStream *stream);
void video_stream_stop(VideoStream * stream);
void video_stream_set_sent_video_size(VideoStream *stream, MSVideoSize vsize);
void video_stream_enable_self_view(VideoStream *stream, bool_t val);
unsigned long video_stream_get_native_window_id(VideoStream *stream);
VideoStream * video_preview_start(MSWebCam *device, MSVideoSize vsize);
void video_preview_stop(VideoStream *stream);
int video_stream_recv_only_start(VideoStream * stream, RtpProfile *profile, const char *remip, int remport, int payload, int jitt_comp);
int video_stream_send_only_start(VideoStream * stream, RtpProfile *profile, const char *remip, int remport,
int rem_rtcp_port, int payload, int jitt_comp, MSWebCam *device);
void video_stream_recv_only_stop(VideoStream *stream);
void video_stream_send_only_stop(VideoStream *stream);
bool_t ms_is_ipv6(const char *address);
#ifdef __cplusplus
}
#endif
#endif

View file

@ -1,204 +0,0 @@
/*
mediastreamer2 library - modular sound and video processing and streaming
Copyright (C) 2006 Simon MORLAT (simon.morlat@linphone.org)
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#ifndef mscommon_h
#define mscommon_h
#include <ortp/ortp.h>
#define ms_malloc ortp_malloc
#define ms_malloc0 ortp_malloc0
#define ms_realloc ortp_realloc
#define ms_new ortp_new
#define ms_new0 ortp_new0
#define ms_free ortp_free
#define ms_strdup ortp_strdup
#define ms_strdup_printf ortp_strdup_printf
#define ms_mutex_t ortp_mutex_t
#define ms_mutex_init ortp_mutex_init
#define ms_mutex_destroy ortp_mutex_destroy
#define ms_mutex_lock ortp_mutex_lock
#define ms_mutex_unlock ortp_mutex_unlock
#define ms_cond_t ortp_cond_t
#define ms_cond_init ortp_cond_init
#define ms_cond_wait ortp_cond_wait
#define ms_cond_signal ortp_cond_signal
#define ms_cond_broadcast ortp_cond_broadcast
#define ms_cond_destroy ortp_cond_destroy
#ifdef WIN32
static inline void ms_debug(const char *fmt,...)
{
va_list args;
va_start (args, fmt);
ortp_logv(ORTP_DEBUG, fmt, args);
va_end (args);
}
#else
#ifdef DEBUG
static inline void ms_debug(const char *fmt,...)
{
va_list args;
va_start (args, fmt);
ortp_logv(ORTP_DEBUG, fmt, args);
va_end (args);
}
#else
#define ms_debug(...)
#endif
#endif
#define ms_message ortp_message
#define ms_warning ortp_warning
#define ms_error ortp_error
#define ms_fatal ortp_fatal
#define ms_return_val_if_fail(_expr_,_ret_)\
if (!(_expr_)) { ms_error("assert "#_expr_ "failed"); return (_ret_);}
#define ms_return_if_fail(_expr_) \
if (!(_expr_)){ ms_error("assert "#_expr_ "failed"); return ;}
#define ms_thread_t ortp_thread_t
#define ms_thread_create ortp_thread_create
#define ms_thread_join ortp_thread_join
#define ms_thread_exit ortp_thread_exit
struct _MSList {
struct _MSList *next;
struct _MSList *prev;
void *data;
};
typedef struct _MSList MSList;
#define ms_list_next(elem) ((elem)->next)
#ifdef __cplusplus
extern "C"{
#endif
MSList * ms_list_append(MSList *elem, void * data);
MSList * ms_list_prepend(MSList *elem, void * data);
MSList * ms_list_free(MSList *elem);
MSList * ms_list_concat(MSList *first, MSList *second);
MSList * ms_list_remove(MSList *first, void *data);
int ms_list_size(const MSList *first);
void ms_list_for_each(const MSList *list, void (*func)(void *));
void ms_list_for_each2(const MSList *list, void (*func)(void *, void *), void *user_data);
MSList *ms_list_remove_link(MSList *list, MSList *elem);
MSList *ms_list_find(MSList *list, void *data);
MSList *ms_list_find_custom(MSList *list, int (*compare_func)(const void *, const void*), void *user_data);
void * ms_list_nth_data(const MSList *list, int index);
int ms_list_position(const MSList *list, MSList *elem);
int ms_list_index(const MSList *list, void *data);
MSList *ms_list_insert_sorted(MSList *list, void *data, int (*compare_func)(const void *, const void*));
MSList *ms_list_insert(MSList *list, MSList *before, void *data);
MSList *ms_list_copy(const MSList *list);
#undef MIN
#define MIN(a,b) ((a)>(b) ? (b) : (a))
#undef MAX
#define MAX(a,b) ((a)>(b) ? (a) : (b))
/**
* @file mscommon.h
* @brief mediastreamer2 mscommon.h include file
*
* This file provide the API needed to initialize
* and reset the mediastreamer2 library.
*
*/
/**
* @defgroup mediastreamer2_init Init API - manage mediastreamer2 library.
* @ingroup mediastreamer2_api
* @{
*/
/**
* Initialize the mediastreamer2 library.
*
* This must be called once before calling any other API.
*/
void ms_init(void);
/**
* Load plugins from a specific directory.
* This method basically loads all libraries in the specified directory and attempts to call a C function called
* \<libraryname\>_init. For example if a library 'libdummy.so' or 'libdummy.dll' is found, then the loader tries to locate
* a C function called 'libdummy_init()' and calls it if it exists.
* ms_load_plugins() can be used to load non-mediastreamer2 plugins as it does not expect mediastreamer2 specific entry points.
*
* @param directory A directory where plugins library are available.
*
* Returns: >0 if successfull, 0 if not plugins loaded, -1 otherwise.
*/
int ms_load_plugins(const char *directory);
/**
* Release resource allocated in the mediastreamer2 library.
*
* This must be called once before closing program.
*/
void ms_exit(void);
struct _MSSndCardDesc;
void ms_sleep(int seconds);
/**
* The max payload size allowed.
* Filters that generate data that can be sent through RTP should make packets
* whose size is below ms_get_payload_max_size().
* The default value is 1440 computed as the standart internet MTU minus IPv6 header,
* UDP header and RTP header. As IPV4 header is smaller than IPv6 header, this
* value works for both.
*
**/
int ms_get_payload_max_size();
void ms_set_payload_max_size(int size);
/**
* Returns the network Max Transmission Unit to reach destination_host.
* This will attempt to send one or more big packets to destination_host, to a random port.
* Those packets are filled with zeroes.
**/
int ms_discover_mtu(const char *destination_host);
/**
* Set mediastreamer default mtu, used to compute the default RTP max payload size.
* This function will call ms_set_payload_max_size(mtu-[ipv6 header size]).
**/
void ms_set_mtu(int mtu);
/** @} */
#ifdef __cplusplus
}
#endif
#endif

View file

@ -1,44 +0,0 @@
/*
mediastreamer2 library - modular sound and video processing and streaming
Copyright (C) 2009 Simon MORLAT (simon.morlat@linphone.org)
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#ifndef msequalizer_h
#define msequalizer_h
#include <mediastreamer2/msfilter.h>
typedef struct _MSEqualizerGain{
float frequency; ///< In hz
float gain; ///< between 0-1.2
float width; ///< frequency band width around mid frequency for which the gain is applied, in Hz. Use 0 for the lowest frequency resolution.
}MSEqualizerGain;
#define MS_EQUALIZER_SET_GAIN MS_FILTER_METHOD(MS_EQUALIZER_ID,0,MSEqualizerGain)
#define MS_EQUALIZER_GET_GAIN MS_FILTER_METHOD(MS_EQUALIZER_ID,1,MSEqualizerGain)
#define MS_EQUALIZER_SET_ACTIVE MS_FILTER_METHOD(MS_EQUALIZER_ID,2,int)
/**dump the spectral response into a table of float. The table must be sized according to the value returned by
* MS_EQUALIZER_GET_NUM_FREQUENCIES
**/
#define MS_EQUALIZER_DUMP_STATE MS_FILTER_METHOD(MS_EQUALIZER_ID,3,float)
/**returns the number of frequencies*/
#define MS_EQUALIZER_GET_NUM_FREQUENCIES MS_FILTER_METHOD(MS_EQUALIZER_ID,4,int)
#endif

View file

@ -1,43 +0,0 @@
/*
mediastreamer2 library - modular sound and video processing and streaming
Copyright (C) 2006 Simon MORLAT (simon.morlat@linphone.org)
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#ifndef msfileplayer_h
#define msfileplayer_h
#include "msfilter.h"
/*methods*/
#define MS_FILE_PLAYER_OPEN MS_FILTER_METHOD(MS_FILE_PLAYER_ID,0,const char*)
#define MS_FILE_PLAYER_START MS_FILTER_METHOD_NO_ARG(MS_FILE_PLAYER_ID,1)
#define MS_FILE_PLAYER_STOP MS_FILTER_METHOD_NO_ARG(MS_FILE_PLAYER_ID,2)
#define MS_FILE_PLAYER_CLOSE MS_FILTER_METHOD_NO_ARG(MS_FILE_PLAYER_ID,3)
/* set loop mode:
-1: no looping,
0: loop at end of file,
x>0, loop after x miliseconds after eof
*/
#define MS_FILE_PLAYER_LOOP MS_FILTER_METHOD(MS_FILE_PLAYER_ID,4,int)
#define MS_FILE_PLAYER_DONE MS_FILTER_METHOD(MS_FILE_PLAYER_ID,5,int)
#define MS_FILE_PLAYER_BIG_BUFFER MS_FILTER_METHOD(MS_FILE_PLAYER_ID,6,int)
/*events*/
#define MS_FILE_PLAYER_EOF MS_FILTER_EVENT_NO_ARG(MS_FILE_PLAYER_ID,0)
#endif

View file

@ -1,33 +0,0 @@
/*
mediastreamer2 library - modular sound and video processing and streaming
Copyright (C) 2006 Simon MORLAT (simon.morlat@linphone.org)
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#ifndef msfilerec_h
#define msfilerec_h
#include "msfilter.h"
extern MSFilterDesc ms_file_rec_desc;
#define MS_FILE_REC_OPEN MS_FILTER_METHOD(MS_FILE_REC_ID,0,const char)
#define MS_FILE_REC_START MS_FILTER_METHOD_NO_ARG(MS_FILE_REC_ID,1)
#define MS_FILE_REC_STOP MS_FILTER_METHOD_NO_ARG(MS_FILE_REC_ID,2)
#define MS_FILE_REC_CLOSE MS_FILTER_METHOD_NO_ARG(MS_FILE_REC_ID,3)
#endif

View file

@ -1,508 +0,0 @@
/*
mediastreamer2 library - modular sound and video processing and streaming
Copyright (C) 2006 Simon MORLAT (simon.morlat@linphone.org)
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#ifndef msfilter_h
#define msfilter_h
#include "mscommon.h"
#include "msqueue.h"
#include "allfilters.h"
/**
* @file msfilter.h
* @brief mediastreamer2 msfilter.h include file
*
* This file provide the API needed to create, link,
* unlink, find and destroy filter.
*
* It also provides definitions if you wish to implement
* your own filters.
*
*/
/**
* @defgroup mediastreamer2_filter Filter API - manage mediastreamer2 filters.
* @ingroup mediastreamer2_api
* @{
*/
/**
* Structure for filter's methods (init, preprocess, process, postprocess, uninit).
* @var MSFilterFunc
*/
typedef void (*MSFilterFunc)(struct _MSFilter *f);
/**
* Structure for filter's methods used to set filter's options.
* @var MSFilterMethodFunc
*/
typedef int (*MSFilterMethodFunc)(struct _MSFilter *f, void *arg);
/**
* Structure for filter's methods used as a callback to notify events.
* @var MSFilterNotifyFunc
*/
typedef void (*MSFilterNotifyFunc)(void *userdata , unsigned int id, void *arg);
struct _MSFilterMethod{
int id;
MSFilterMethodFunc method;
};
/**
* Structure for holding filter's methods to set filter's options.
* @var MSFilterMethod
*/
typedef struct _MSFilterMethod MSFilterMethod;
enum _MSFilterCategory{
MS_FILTER_OTHER,
MS_FILTER_ENCODER,
MS_FILTER_DECODER
};
/**
* Structure to describe filter's category.
* <PRE>
* MS_FILTER_OTHER
* MS_FILTER_ENCODER
* MS_FILTER_DECODER
* </PRE>
* @var MSFilterCategory
*/
typedef enum _MSFilterCategory MSFilterCategory;
enum _MSFilterFlags{
MS_FILTER_IS_PUMP = 1
};
typedef enum _MSFilterFlags MSFilterFlags;
struct _MSFilterDesc{
MSFilterId id; /* the id declared in allfilters.h */
const char *name; /* filter name */
const char *text; /*some descriptive text*/
MSFilterCategory category;
const char *enc_fmt; /* must be set if MS_FILTER_ENCODER/MS_FILTER_DECODER */
int ninputs; /*number of inputs */
int noutputs; /*number of outputs */
MSFilterFunc init;
MSFilterFunc preprocess; /* called once before processing */
MSFilterFunc process; /* called every tick to do the filter's job*/
MSFilterFunc postprocess; /*called once after processing */
MSFilterFunc uninit;
MSFilterMethod *methods;
unsigned int flags;
};
/**
* Structure for filter's description.
* @var MSFilterDesc
*/
typedef struct _MSFilterDesc MSFilterDesc;
struct _MSFilter{
MSFilterDesc *desc;
/*protected attributes */
ms_mutex_t lock;
MSQueue **inputs;
MSQueue **outputs;
MSFilterNotifyFunc notify;
void *notify_ud;
void *data;
struct _MSTicker *ticker;
/*private attributes */
uint32_t last_tick;
bool_t seen;
};
/**
* Structure to create/link/unlink/destroy filter's object.
* @var MSFilter
*/
typedef struct _MSFilter MSFilter;
struct _MSConnectionPoint{
MSFilter *filter;
int pin;
};
/**
* Structure that represents a connection point of a MSFilter
* @var MSConnectionPoint
*/
typedef struct _MSConnectionPoint MSConnectionPoint;
struct _MSConnectionHelper{
MSConnectionPoint last;
};
/**
* Structure that holds data when using the ms_connection_helper_* functions.
* @var MSConnectionHelper
**/
typedef struct _MSConnectionHelper MSConnectionHelper;
#ifdef __cplusplus
extern "C"{
#endif
/**
* Register a filter description. (plugins use only!)
*
* When you build your own plugin, this method will
* add the encoder or decoder to the internal list
* of supported codec. Then, this plugin can be used
* transparently from the application.
*
* ms_filter_get_encoder, ms_filter_get_decoder,
* ms_filter_create_encoder, ms_filter_create_decoder
* and ms_filter_codec_supported
* can then be used as if the codec was internally.
* supported.
*
* @param desc a filter description.
*/
void ms_filter_register(MSFilterDesc *desc);
/**
* Retrieve encoders according to codec name.
*
* Internal supported codecs:
* PCMU, PCMA, speex, gsm
* Existing Public plugins:
* iLBC
*
* @param mime A string indicating the codec.
*
* Returns: a MSFilterDesc if successfull, NULL otherwise.
*/
MSFilterDesc * ms_filter_get_encoder(const char *mime);
/**
* Retrieve decoders according to codec name.
*
* Internal supported codecs:
* PCMU, PCMA, speex, gsm
* Existing Public plugins:
* iLBC
*
* @param mime A string indicating the codec.
*
* Returns: a MSFilterDesc if successfull, NULL otherwise.
*/
MSFilterDesc * ms_filter_get_decoder(const char *mime);
/**
* Create encoder filter according to codec name.
*
* Internal supported codecs:
* PCMU, PCMA, speex, gsm
* Existing Public plugins:
* iLBC
*
* @param mime A string indicating the codec.
*
* Returns: a MSFilter if successfull, NULL otherwise.
*/
MSFilter * ms_filter_create_encoder(const char *mime);
/**
* Create decoder filter according to codec name.
*
* Internal supported codecs:
* PCMU, PCMA, speex, gsm
* Existing Public plugins:
* iLBC
*
* @param mime A string indicating the codec.
*
* Returns: a MSFilter if successfull, NULL otherwise.
*/
MSFilter * ms_filter_create_decoder(const char *mime);
/**
* Check if a encode or decode filter exists for a codec name.
*
* Internal supported codecs:
* PCMU, PCMA, speex, gsm
* Existing Public plugins:
* iLBC
*
* @param mime A string indicating the codec.
*
* Returns: TRUE if successfull, FALSE otherwise.
*/
bool_t ms_filter_codec_supported(const char *mime);
/**
* Create decoder filter according to a filter's MSFilterId.
*
* @param id A MSFilterId identifier for the filter.
*
* Returns: a MSFilter if successfull, NULL otherwise.
*/
MSFilter *ms_filter_new(MSFilterId id);
/**
* Create decoder filter according to a filter's name.
*
* @param name A name for the filter.
*
* Returns: a MSFilter if successfull, NULL otherwise.
*/
MSFilter *ms_filter_new_from_name(const char *name);
/**
* Create decoder filter according to a filter's description.
*
* The primary use is to create your own filter's in your
* application and avoid registration inside mediastreamer2.
*
* @param desc A MSFilterDesc for the filter.
*
* Returns: a MSFilter if successfull, NULL otherwise.
*/
MSFilter *ms_filter_new_from_desc(MSFilterDesc *desc);
/**
* Link one OUTPUT pin from a filter to an INPUT pin of another filter.
*
* All data coming from the OUTPUT pin of one filter will be distributed
* to the INPUT pin of the second filter.
*
* @param f1 A MSFilter object containing the OUTPUT pin
* @param pin1 An index of an OUTPUT pin.
* @param f2 A MSFilter object containing the INPUT pin
* @param pin2 An index of an INPUT pin.
*
* Returns: 0 if sucessful, -1 otherwise.
*/
int ms_filter_link(MSFilter *f1, int pin1, MSFilter *f2, int pin2);
/**
* Unlink one OUTPUT pin from a filter to an INPUT pin of another filter.
*
* @param f1 A MSFilter object containing the OUTPUT pin
* @param pin1 An index of an OUTPUT pin.
* @param f2 A MSFilter object containing the INPUT pin
* @param pin2 An index of an INPUT pin.
*
* Returns: 0 if sucessful, -1 otherwise.
*/
int ms_filter_unlink(MSFilter *f1, int pin1, MSFilter *f2, int pin2);
/**
* Call a filter's method to set or get options.
*
* @param f A MSFilter object.
* @param id A private filter ID for the option.
* @param arg A private user data for the filter.
*
* Returns: 0 if successfull, -1 otherwise.
*/
int ms_filter_call_method(MSFilter *f, unsigned int id, void *arg);
/**
* Call a filter's method to set options.
*
* @param f A MSFilter object.
* @param id A private filter ID for the option.
*
* Returns: 0 if successfull, -1 otherwise.
*/
int ms_filter_call_method_noarg(MSFilter *f, unsigned int id);
/**
* Set a callback on filter's to be informed of private filter's event.
*
* @param f A MSFilter object.
* @param fn A MSFilterNotifyFunc that will be called.
* @param userdata A pointer to private data.
*
* Returns: 0 if successfull, -1 otherwise.
*/
void ms_filter_set_notify_callback(MSFilter *f, MSFilterNotifyFunc fn, void *userdata);
/**
* Get MSFilterId's filter.
*
* @param f A MSFilter object.
*
* Returns: MSFilterId if successfull, -1 otherwise.
*/
MSFilterId ms_filter_get_id(MSFilter *f);
/**
* Obtain the list of current filter's neighbours, ie filters that are part of same graph.
*
* Returns: a MSList of MSFilter, that needs to be freed by the caller when no more needed.
**/
MSList * ms_filter_find_neighbours(MSFilter *me);
/**
* Destroy a filter object.
*
* @param f A MSFilter object.
*
*/
void ms_filter_destroy(MSFilter *f);
/**
* Initialize a MSConnectionHelper.
*
* @param h A MSConnectionHelper, usually (but not necessarily) on stack
*
**/
void ms_connection_helper_start(MSConnectionHelper *h);
/**
* \brief Enter a MSFilter to be connected into the MSConnectionHelper object.
*
* This functions enters a MSFilter to be connected into the MSConnectionHelper
* object and connects it to the last entered if not the first one.
* The MSConnectionHelper is useful to reduce the amount of code necessary to create graphs in case
* the connections are made in an ordered manner and some filters are present conditionally in graphs.
* For example, instead of writing
* \code
* ms_filter_link(f1,0,f2,1);
* ms_filter_link(f2,0,f3,0);
* ms_filter_link(f3,1,f4,0);
* \endcode
* You can write:
* \code
* MSConnectionHelper h;
* ms_connection_helper_start(&h);
* ms_connection_helper_link(&h,f1,-1,0);
* ms_connection_helper_link(&h,f2,1,0);
* ms_connection_helper_link(&h,f3,0,1);
* ms_connection_helper_link(&h,f4,0,-1);
* \endcode
* Which is a bit longer to write here, but now imagine f2 needs to be present in the graph only
* in certain conditions: in the first case you have rewrite the two first lines, in the second case
* you just need to replace the fourth line by:
* \code
* if (my_condition) ms_connection_helper_link(&h,f2,1,0);
* \endcode
*
* @param h a connection helper
* @param f a MSFilter
* @param inpin an input pin number with which the MSFilter needs to connect to previously entered MSFilter
* @param outpin an output pin number with which the MSFilter needs to be connected to the next entered MSFilter
*
* Returns: the return value of ms_filter_link() that is called internally to this function.
**/
int ms_connection_helper_link(MSConnectionHelper *h, MSFilter *f, int inpin, int outpin);
/**
* \brief Enter a MSFilter to be disconnected into the MSConnectionHelper object.
* Process exactly the same way as ms_connection_helper_link() but calls ms_filter_unlink() on the
* entered filters.
**/
int ms_connection_helper_unlink(MSConnectionHelper *h, MSFilter *f, int inpin, int outpin);
/* I define the id taking the lower bits of the address of the MSFilterDesc object,
the method index (_cnt_) and the argument size */
/* I hope using this to avoid type mismatch (calling a method on the wrong filter)*/
#define MS_FILTER_METHOD_ID(_id_,_cnt_,_argsize_) \
( (((unsigned long)(_id_)) & 0xFFFF)<<16 | (_cnt_<<8) | (_argsize_ & 0xFF ))
#define MS_FILTER_METHOD(_id_,_count_,_argtype_) \
MS_FILTER_METHOD_ID(_id_,_count_,sizeof(_argtype_))
#define MS_FILTER_METHOD_NO_ARG(_id_,_count_) \
MS_FILTER_METHOD_ID(_id_,_count_,0)
#define MS_FILTER_BASE_METHOD(_count_,_argtype_) \
MS_FILTER_METHOD_ID(MS_FILTER_BASE_ID,_count_,sizeof(_argtype_))
#define MS_FILTER_BASE_METHOD_NO_ARG(_count_) \
MS_FILTER_METHOD_ID(MS_FILTER_BASE_ID,_count_,0)
#define MS_FILTER_EVENT(_id_,_count_,_argtype_) \
MS_FILTER_METHOD_ID(_id_,_count_,sizeof(_argtype_))
#define MS_FILTER_EVENT_NO_ARG(_id_,_count_)\
MS_FILTER_METHOD_ID(_id_,_count_,0)
/* some MSFilter base generic methods:*/
#define MS_FILTER_SET_SAMPLE_RATE MS_FILTER_BASE_METHOD(0,int)
#define MS_FILTER_GET_SAMPLE_RATE MS_FILTER_BASE_METHOD(1,int)
#define MS_FILTER_SET_BITRATE MS_FILTER_BASE_METHOD(2,int)
#define MS_FILTER_GET_BITRATE MS_FILTER_BASE_METHOD(3,int)
#define MS_FILTER_GET_NCHANNELS MS_FILTER_BASE_METHOD(5,int)
#define MS_FILTER_SET_NCHANNELS MS_FILTER_BASE_METHOD(6,int)
#define MS_FILTER_ADD_FMTP MS_FILTER_BASE_METHOD(7,const char)
#define MS_FILTER_ADD_ATTR MS_FILTER_BASE_METHOD(8,const char)
#define MS_FILTER_SET_MTU MS_FILTER_BASE_METHOD(9,int)
#define MS_FILTER_GET_MTU MS_FILTER_BASE_METHOD(10,int)
/* more specific methods: to be moved into implementation specific header files*/
#define MS_FILTER_SET_FRAMESIZE MS_FILTER_BASE_METHOD(11,int)
#define MS_FILTER_SET_FILTERLENGTH MS_FILTER_BASE_METHOD(12,int)
#define MS_FILTER_SET_OUTPUT_SAMPLE_RATE MS_FILTER_BASE_METHOD(13,int)
#define MS_FILTER_ENABLE_DIRECTMODE MS_FILTER_BASE_METHOD(14,int)
#define MS_FILTER_ENABLE_VAD MS_FILTER_BASE_METHOD(15,int)
#define MS_FILTER_GET_STAT_DISCARDED MS_FILTER_BASE_METHOD(16,int)
#define MS_FILTER_GET_STAT_MISSED MS_FILTER_BASE_METHOD(17,int)
#define MS_FILTER_GET_STAT_INPUT MS_FILTER_BASE_METHOD(18,int)
#define MS_FILTER_GET_STAT_OUTPUT MS_FILTER_BASE_METHOD(19,int)
#define MS_FILTER_ENABLE_AGC MS_FILTER_BASE_METHOD(20,int)
#define MS_FILTER_SET_PLAYBACKDELAY MS_FILTER_BASE_METHOD(21,int)
#define MS_FILTER_ENABLE_HALFDUPLEX MS_FILTER_BASE_METHOD(22,int)
#define MS_FILTER_SET_VAD_PROB_START MS_FILTER_BASE_METHOD(23,int)
#define MS_FILTER_SET_VAD_PROB_CONTINUE MS_FILTER_BASE_METHOD(24,int)
#define MS_FILTER_SET_MAX_GAIN MS_FILTER_BASE_METHOD(25,int)
#define MS_CONF_SPEEX_PREPROCESS_MIC MS_FILTER_EVENT(MS_CONF_ID, 1, void*)
#define MS_CONF_CHANNEL_VOLUME MS_FILTER_EVENT(MS_CONF_ID, 3, void*)
#define MS_SPEEX_EC_PREPROCESS_MIC MS_FILTER_EVENT(MS_SPEEX_EC_ID, 1, void*)
#define MS_SPEEX_EC_ECHO_STATE MS_FILTER_EVENT(MS_SPEEX_EC_ID, 2, void*)
/** @} */
/*private methods*/
void ms_filter_process(MSFilter *f);
void ms_filter_preprocess(MSFilter *f, struct _MSTicker *t);
void ms_filter_postprocess(MSFilter *f);
bool_t ms_filter_inputs_have_data(MSFilter *f);
void ms_filter_notify(MSFilter *f, unsigned int id, void *arg);
void ms_filter_notify_no_arg(MSFilter *f, unsigned int id);
#define ms_filter_lock(f) ms_mutex_lock(&(f)->lock)
#define ms_filter_unlock(f) ms_mutex_unlock(&(f)->lock)
void ms_filter_unregister_all(void);
#ifdef __cplusplus
}
#endif
/* used by awk script in Makefile.am to generate alldescs.c */
#define MS_FILTER_DESC_EXPORT(desc)
/* xgettext markup */
#define N_(String) String
#endif

View file

@ -1,117 +0,0 @@
/*
mediastreamer2 library - modular sound and video processing and streaming
Copyright (C) 2006 Simon MORLAT (simon.morlat@linphone.org)
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#ifndef MSQUEUE_H
#define MSQUEUE_H
#include "ortp/str_utils.h"
/* for the moment these are stupid queues limited to one element*/
typedef struct _MSCPoint{
struct _MSFilter *filter;
int pin;
} MSCPoint;
typedef struct _MSQueue
{
queue_t q;
MSCPoint prev;
MSCPoint next;
}MSQueue;
MSQueue * ms_queue_new(struct _MSFilter *f1, int pin1, struct _MSFilter *f2, int pin2 );
static inline mblk_t *ms_queue_get(MSQueue *q){
return getq(&q->q);
}
static inline void ms_queue_put(MSQueue *q, mblk_t *m){
putq(&q->q,m);
return;
}
static inline mblk_t * ms_queue_peek_last(MSQueue *q){
return qlast(&q->q);
}
static inline bool_t ms_queue_empty(MSQueue *q){
return qempty(&q->q);
}
#ifdef __cplusplus
extern "C"
{
#endif
/*init a queue on stack*/
void ms_queue_init(MSQueue *q);
void ms_queue_flush(MSQueue *q);
void ms_queue_destroy(MSQueue *q);
#define mblk_set_timestamp_info(m,ts) (m)->reserved1=(ts);
#define mblk_get_timestamp_info(m) ((m)->reserved1)
#define mblk_set_marker_info(m,bit) (m)->reserved2=((m)->reserved2|bit)
#define mblk_get_marker_info(m) ((m)->reserved2&0x1)
#define mblk_set_rate(m,bits) (m)->reserved2=((m)->reserved2|(bits)<<1)
#define mblk_get_rate(m) (((m)->reserved2>>1)&0x3)
#define mblk_set_payload_type(m,bits) (m)->reserved2=((m)->reserved2|(bits<<3))
#define mblk_get_payload_type(m) (((m)->reserved2>>3)&0x7F)
#define mblk_set_precious_flag(m,bit) (m)->reserved2=(m)->reserved2|((bit & 0x1)<<10) /*use to prevent mirroring*/
#define mblk_get_precious_flag(m) (((m)->reserved2)>>10 & 0x1)
struct _MSBufferizer{
queue_t q;
int size;
};
typedef struct _MSBufferizer MSBufferizer;
/*allocates and initialize */
MSBufferizer * ms_bufferizer_new(void);
/*initialize in memory */
void ms_bufferizer_init(MSBufferizer *obj);
void ms_bufferizer_put(MSBufferizer *obj, mblk_t *m);
/* put every mblk_t from q, into the bufferizer */
void ms_bufferizer_put_from_queue(MSBufferizer *obj, MSQueue *q);
int ms_bufferizer_read(MSBufferizer *obj, uint8_t *data, int datalen);
/* returns the number of bytes available in the bufferizer*/
static inline int ms_bufferizer_get_avail(MSBufferizer *obj){
return obj->size;
}
/* purge all data pending in the bufferizer */
void ms_bufferizer_flush(MSBufferizer *obj);
void ms_bufferizer_uninit(MSBufferizer *obj);
void ms_bufferizer_destroy(MSBufferizer *obj);
#ifdef __cplusplus
}
#endif
#endif

View file

@ -1,45 +0,0 @@
/*
mediastreamer2 library - modular sound and video processing and streaming
Copyright (C) 2006 Simon MORLAT (simon.morlat@linphone.org)
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#ifndef msrtp_hh
#define msrtp_hh
#include "msfilter.h"
#include "ice.h"
#include "ortp/ortp.h"
#define MS_RTP_RECV_SET_SESSION MS_FILTER_METHOD(MS_RTP_RECV_ID,0,RtpSession*)
#define MS_RTP_SEND_SET_SESSION MS_FILTER_METHOD(MS_RTP_SEND_ID,0,RtpSession*)
#define MS_RTP_SEND_SEND_DTMF MS_FILTER_METHOD(MS_RTP_SEND_ID,1,const char)
#define MS_RTP_SEND_MUTE_MIC MS_FILTER_METHOD_NO_ARG(MS_RTP_SEND_ID,3)
#define MS_RTP_SEND_UNMUTE_MIC MS_FILTER_METHOD_NO_ARG(MS_RTP_SEND_ID,4)
#define MS_RTP_SEND_SET_RELAY_SESSION_ID MS_FILTER_METHOD(MS_RTP_SEND_ID,5,const char *)
#define MS_RTP_SEND_SET_DTMF_DURATION MS_FILTER_METHOD(MS_RTP_SEND_ID,1,int)
extern MSFilterDesc ms_rtp_send_desc;
extern MSFilterDesc ms_rtp_recv_desc;
#endif

View file

@ -1,436 +0,0 @@
/*
mediastreamer2 library - modular sound and video processing and streaming
Copyright (C) 2006 Simon MORLAT (simon.morlat@linphone.org)
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#ifndef sndcard_h
#define sndcard_h
#include "mscommon.h"
/**
* @file mssndcard.h
* @brief mediastreamer2 mssndcard.h include file
*
* This file provide the API needed to manage
* soundcard filters.
*
*/
/**
* @defgroup mediastreamer2_soundcard Sound Card API - manage audio capture/play filters.
* @ingroup mediastreamer2_api
* @{
*/
struct _MSSndCardManager{
MSList *cards;
MSList *descs;
};
/**
* Structure for sound card manager object.
* @var MSSndCardManager
*/
typedef struct _MSSndCardManager MSSndCardManager;
enum _MSSndCardMixerElem{
MS_SND_CARD_MASTER,
MS_SND_CARD_PLAYBACK,
MS_SND_CARD_CAPTURE
};
/**
* Structure for sound card mixer values.
* @var MSSndCardMixerElem
*/
typedef enum _MSSndCardMixerElem MSSndCardMixerElem;
enum _MSSndCardCapture {
MS_SND_CARD_MIC,
MS_SND_CARD_LINE
};
/**
* Structure for sound card capture source values.
* @var MSSndCardCapture
*/
typedef enum _MSSndCardCapture MSSndCardCapture;
enum _MSSndCardControlElem {
MS_SND_CARD_MASTER_MUTE,
MS_SND_CARD_PLAYBACK_MUTE,
MS_SND_CARD_CAPTURE_MUTE
};
/**
* Structure for sound card mixer values.
* @var MSSndCardControlElem
*/
typedef enum _MSSndCardControlElem MSSndCardControlElem;
struct _MSSndCard;
typedef void (*MSSndCardDetectFunc)(MSSndCardManager *obj);
typedef void (*MSSndCardInitFunc)(struct _MSSndCard *obj);
typedef void (*MSSndCardUninitFunc)(struct _MSSndCard *obj);
typedef void (*MSSndCardSetLevelFunc)(struct _MSSndCard *obj, MSSndCardMixerElem e, int percent);
typedef void (*MSSndCardSetCaptureFunc)(struct _MSSndCard *obj, MSSndCardCapture e);
typedef int (*MSSndCardGetLevelFunc)(struct _MSSndCard *obj, MSSndCardMixerElem e);
typedef int (*MSSndCardSetControlFunc)(struct _MSSndCard *obj, MSSndCardControlElem e, int val);
typedef int (*MSSndCardGetControlFunc)(struct _MSSndCard *obj, MSSndCardControlElem e);
typedef struct _MSFilter * (*MSSndCardCreateReaderFunc)(struct _MSSndCard *obj);
typedef struct _MSFilter * (*MSSndCardCreateWriterFunc)(struct _MSSndCard *obj);
typedef struct _MSSndCard * (*MSSndCardDuplicateFunc)(struct _MSSndCard *obj);
typedef void (*MSSndCardUnloadFunc)(MSSndCardManager *obj);
struct _MSSndCardDesc{
const char *driver_type;
MSSndCardDetectFunc detect;
MSSndCardInitFunc init;
MSSndCardSetLevelFunc set_level;
MSSndCardGetLevelFunc get_level;
MSSndCardSetCaptureFunc set_capture;
MSSndCardSetControlFunc set_control;
MSSndCardGetControlFunc get_control;
MSSndCardCreateReaderFunc create_reader;
MSSndCardCreateWriterFunc create_writer;
MSSndCardUninitFunc uninit;
MSSndCardDuplicateFunc duplicate;
MSSndCardUnloadFunc unload;
};
/**
* Structure for sound card description object.
* @var MSSndCardDesc
*/
typedef struct _MSSndCardDesc MSSndCardDesc;
#define MS_SND_CARD_CAP_DISABLED (0)
#define MS_SND_CARD_CAP_CAPTURE (1)
#define MS_SND_CARD_CAP_PLAYBACK (1<<1)
struct _MSSndCard{
MSSndCardDesc *desc;
char *name;
char *id;
unsigned int capabilities;
void *data;
};
/**
* Structure for sound card object.
* @var MSSndCard
*/
typedef struct _MSSndCard MSSndCard;
#ifdef __cplusplus
extern "C"{
#endif
/**
* @defgroup mediastreamer2_soundcardmanager Sound Card Manager API
* @ingroup mediastreamer2_soundcard
* @{
*/
/**
* Retreive a sound card manager object.
*
* Returns: MSSndCardManager if successfull, NULL otherwise.
*/
MSSndCardManager * ms_snd_card_manager_get(void);
/**
* Destroy a sound card manager object.
*
*/
void ms_snd_card_manager_destroy(void);
/**
* Retreive a sound card object based on its name.
*
* @param m A sound card manager containing sound cards.
* @param id A name for card to search.
*
* Returns: MSSndCard if successfull, NULL otherwise.
*/
MSSndCard * ms_snd_card_manager_get_card(MSSndCardManager *m, const char *id);
/**
* Retreive the default sound card object.
*
* @param m A sound card manager containing sound cards.
*
* Returns: MSSndCard if successfull, NULL otherwise.
*/
MSSndCard * ms_snd_card_manager_get_default_card(MSSndCardManager *m);
/**
* Retreive the default capture sound card object.
*
* @param m A sound card manager containing sound cards.
*
* Returns: MSSndCard if successfull, NULL otherwise.
*/
MSSndCard * ms_snd_card_manager_get_default_capture_card(MSSndCardManager *m);
/**
* Retreive the default playback sound card object.
*
* @param m A sound card manager containing sound cards.
*
* Returns: MSSndCard if successfull, NULL otherwise.
*/
MSSndCard * ms_snd_card_manager_get_default_playback_card(MSSndCardManager *m);
/**
* Retreive the list of sound card objects.
*
* @param m A sound card manager containing sound cards.
*
* Returns: MSList of cards if successfull, NULL otherwise.
*/
const MSList * ms_snd_card_manager_get_list(MSSndCardManager *m);
/**
* Add a sound card object in a sound card manager's list.
*
* @param m A sound card manager containing sound cards.
* @param c A sound card object.
*
*/
void ms_snd_card_manager_add_card(MSSndCardManager *m, MSSndCard *c);
/**
* Register a sound card description in a sound card manager.
*
* @param m A sound card manager containing sound cards.
* @param desc A sound card description object.
*
*/
void ms_snd_card_manager_register_desc(MSSndCardManager *m, MSSndCardDesc *desc);
/**
* Ask all registered MSSndCardDesc to re-detect their soundcards.
* @param m The sound card manager.
**/
void ms_snd_card_manager_reload(MSSndCardManager *m);
/** @} */
/**
* @defgroup mediastreamer2_soundcardfilter Sound Card Filter API
* @ingroup mediastreamer2_soundcard
* @{
*/
/**
* Create an INPUT filter based on the selected sound card.
*
* @param obj A sound card object.
*
* Returns: A MSFilter if successfull, NULL otherwise.
*/
struct _MSFilter * ms_snd_card_create_reader(MSSndCard *obj);
/**
* Create an OUPUT filter based on the selected sound card.
*
* @param obj A sound card object.
*
* Returns: A MSFilter if successfull, NULL otherwise.
*/
struct _MSFilter * ms_snd_card_create_writer(MSSndCard *obj);
/**
* Create a new sound card object.
*
* @param desc A sound card description object.
*
* Returns: MSSndCard if successfull, NULL otherwise.
*/
MSSndCard * ms_snd_card_new(MSSndCardDesc *desc);
/**
* Destroy sound card object.
*
* @param obj A MSSndCard object.
*/
void ms_snd_card_destroy(MSSndCard *obj);
/**
* Duplicate a sound card object.
*
* This helps to open several time a sound card.
*
* @param card A sound card object.
*
* Returns: MSSndCard if successfull, NULL otherwise.
*/
MSSndCard * ms_snd_card_dup(MSSndCard *card);
/**
* Retreive a sound card's driver type string.
*
* Internal driver types are either: "OSS, ALSA, WINSND, PASND, CA"
*
* @param obj A sound card object.
*
* Returns: a string if successfull, NULL otherwise.
*/
const char *ms_snd_card_get_driver_type(const MSSndCard *obj);
/**
* Retreive a sound card's name.
*
* @param obj A sound card object.
*
* Returns: a string if successfull, NULL otherwise.
*/
const char *ms_snd_card_get_name(const MSSndCard *obj);
/**
* Retreive sound card's name ($driver_type: $name).
*
* @param obj A sound card object.
*
* Returns: A string if successfull, NULL otherwise.
*/
const char *ms_snd_card_get_string_id(MSSndCard *obj);
/**
* Retreive sound card's capabilities.
*
* <PRE>
* MS_SND_CARD_CAP_CAPTURE
* MS_SND_CARD_CAP_PLAYBACK
* MS_SND_CARD_CAP_CAPTURE|MS_SND_CARD_CAP_PLAYBACK
* </PRE>
*
* @param obj A sound card object.
*
* Returns: A unsigned int if successfull, 0 otherwise.
*/
unsigned int ms_snd_card_get_capabilities(const MSSndCard *obj);
/**
* Set some mixer level value.
*
* <PRE>
* MS_SND_CARD_MASTER,
* MS_SND_CARD_PLAYBACK,
* MS_SND_CARD_CAPTURE
* </PRE>
* Note: not implemented on all sound card filters.
*
* @param obj A sound card object.
* @param e A sound card mixer object.
* @param percent A volume level.
*
*/
void ms_snd_card_set_level(MSSndCard *obj, MSSndCardMixerElem e, int percent);
/**
* Get some mixer level value.
*
* <PRE>
* MS_SND_CARD_MASTER,
* MS_SND_CARD_PLAYBACK,
* MS_SND_CARD_CAPTURE
* </PRE>
* Note: not implemented on all sound card filters.
*
* @param obj A sound card object.
* @param e A sound card mixer object.
*
* Returns: A int if successfull, <0 otherwise.
*/
int ms_snd_card_get_level(MSSndCard *obj, MSSndCardMixerElem e);
/**
* Set some source for capture.
*
* <PRE>
* MS_SND_CARD_MIC,
* MS_SND_CARD_LINE
* </PRE>
* Note: not implemented on all sound card filters.
*
* @param obj A sound card object.
* @param c A sound card capture value.
*
* Returns: A int if successfull, 0 otherwise.
*/
void ms_snd_card_set_capture(MSSndCard *obj, MSSndCardCapture c);
/**
* Set some mixer control.
*
* <PRE>
* MS_SND_CARD_MASTER_MUTE, -> 0: unmute, 1: mute
* MS_SND_CARD_PLAYBACK_MUTE, -> 0: unmute, 1: mute
* MS_SND_CARD_CAPTURE_MUTE -> 0: unmute, 1: mute
* </PRE>
* Note: not implemented on all sound card filters.
*
* @param obj A sound card object.
* @param e A sound card control object.
* @param percent A value for control.
*
* Returns: 0 if successfull, <0 otherwise.
*/
int ms_snd_card_set_control(MSSndCard *obj, MSSndCardControlElem e, int val);
/**
* Get some mixer control.
*
* <PRE>
* MS_SND_CARD_MASTER_MUTE, -> return 0: unmute, 1: mute
* MS_SND_CARD_PLAYBACK_MUTE, -> return 0: unmute, 1: mute
* MS_SND_CARD_CAPTURE_MUTE -> return 0: unmute, 1: mute
* </PRE>
* Note: not implemented on all sound card filters.
*
* @param obj A sound card object.
* @param e A sound card mixer object.
*
* Returns: A int if successfull, <0 otherwise.
*/
int ms_snd_card_get_control(MSSndCard *obj, MSSndCardControlElem e);
/**
* Create a alsa card with user supplied pcm name and mixer name.
* @param pcmdev The pcm device name following alsa conventions (ex: plughw:0)
* @param mixdev The mixer device name following alsa conventions.
*
* Returns: a MSSndCard object, NULL if alsa support is not available.
*/
MSSndCard * ms_alsa_card_new_custom(const char *pcmdev, const char *mixdev);
/** @} */
#ifdef __cplusplus
}
#endif
/** @} */
#endif

View file

@ -1,38 +0,0 @@
/*
mediastreamer2 library - modular sound and video processing and streaming
Copyright (C) 2006-2009 Simon MORLAT (simon.morlat@linphone.org)
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
msspeexec.h : interface of the speex echo canceler integration in mediastreamer2
*/
#ifndef msspeexec_h
#define msspeexec_h
#include <mediastreamer2/msfilter.h>
/** sets the tail length in milliseconds*/
#define MS_SPEEX_EC_SET_TAIL_LENGTH MS_FILTER_METHOD(MS_SPEEX_EC_ID,0,int)
/** sets the minimum delay of the echo if known. This optimizes the convergence*/
#define MS_SPEEX_EC_SET_DELAY MS_FILTER_METHOD(MS_SPEEX_EC_ID,1,int)
/** sets the frame size for the AU-MDF algorithm, in number of fft points*/
#define MS_SPEEX_EC_SET_FRAME_SIZE MS_FILTER_METHOD(MS_SPEEX_EC_ID,2,int)
#endif

View file

@ -1,30 +0,0 @@
/*
mediastreamer2 library - modular sound and video processing and streaming
Copyright (C) 2006 Simon MORLAT (simon.morlat@linphone.org)
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#ifndef mstee_h
#define mstee_h
#include "msfilter.h"
/*mute/unmute some outputs of the MSTee */
#define MS_TEE_UNMUTE MS_FILTER_METHOD(MS_TEE_ID,0,int)
#define MS_TEE_MUTE MS_FILTER_METHOD(MS_TEE_ID,1,int)
#endif

View file

@ -1,153 +0,0 @@
/*
mediastreamer2 library - modular sound and video processing and streaming
Copyright (C) 2006 Simon MORLAT (simon.morlat@linphone.org)
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#ifndef MS_TICKER_H
#define MS_TICKER_H
#include "msfilter.h"
#include "mscommon.h"
/**
* @file msticker.h
* @brief mediastreamer2 msticker.h include file
*
* This file provide the API needed to create, start
* and stop a graph.
*
*/
/**
* @defgroup mediastreamer2_ticker Ticker API - manage mediastreamer2 graphs.
* @ingroup mediastreamer2_api
* @{
*/
/**
* Structure for method getting time in miliseconds from an external source.
* @var MSTickerTimeFunc
*/
typedef uint64_t (*MSTickerTimeFunc)(void *);
struct _MSTicker
{
ms_mutex_t lock;
ms_cond_t cond;
MSList *execution_list; /* the list of source filters to be executed.*/
ms_thread_t thread; /* the thread ressource*/
int interval; /* in miliseconds*/
int exec_id;
uint32_t ticks;
uint64_t time; /* a time since the start of the ticker expressed in milisec*/
uint64_t orig; /* a relative time to take in account difference between time base given by consecutive get_cur_time_ptr() functions.*/
MSTickerTimeFunc get_cur_time_ptr;
void *get_cur_time_data;
char *name;
bool_t run; /* flag to indicate whether the ticker must be run or not */
#ifdef WIN32_TIMERS
HANDLE TimeEvent;
#endif
};
/**
* Structure for ticker object.
* @var MSTicker
*/
typedef struct _MSTicker MSTicker;
#ifdef __cplusplus
extern "C"{
#endif
/**
* Create a ticker that will be used to start
* and stop a graph.
*
* Returns: MSTicker * if successfull, NULL otherwise.
*/
MSTicker *ms_ticker_new(void);
/**
* Set a name to the ticker (used for logging)
**/
void ms_ticker_set_name(MSTicker *ticker, const char *name);
/**
* Attach a chain of filters to a ticker.
* The processing chain will be executed until ms_ticker_detach
* will be called.
*
* @param ticker A #MSTicker object.
* @param f A #MSFilter object.
*
* Returns: 0 if successfull, -1 otherwise.
*/
int ms_ticker_attach(MSTicker *ticker,MSFilter *f);
/**
* Dettach a chain of filters to a ticker.
* The processing chain will no more be executed.
*
* @param ticker A #MSTicker object.
* @param f A #MSFilter object.
*
*
* Returns: 0 if successfull, -1 otherwise.
*/
int ms_ticker_detach(MSTicker *ticker,MSFilter *f);
/**
* Destroy a ticker.
*
* @param ticker A #MSTicker object.
*
*/
void ms_ticker_destroy(MSTicker *ticker);
/**
* Override MSTicker's time function.
* This can be used to control the ticker from an external time provider, for example the
* clock of a sound card.
*
* @param ticker A #MSTicker object.
* @param func A replacement method for calculating "current time"
* @param user_data Any pointer to user private data.
*/
void ms_ticker_set_time_func(MSTicker *ticker, MSTickerTimeFunc func, void *user_data);
/**
* Print on stdout all filters of a ticker. (INTERNAL: DO NOT USE)
*
* @param ticker A #MSTicker object.
*/
void ms_ticker_print_graphs(MSTicker *ticker);
/* private functions:*/
#ifdef __cplusplus
}
#endif
/** @} */
#endif

View file

@ -1,30 +0,0 @@
/*
mediastreamer2 library - modular sound and video processing and streaming
Copyright (C) 2006 Simon MORLAT (simon.morlat@linphone.org)
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#ifndef msv4l_h
#define msv4l_h
#include "msfilter.h"
#define MS_V4L_START MS_FILTER_METHOD_NO_ARG(MS_V4L_ID,0)
#define MS_V4L_STOP MS_FILTER_METHOD_NO_ARG(MS_V4L_ID,1)
#define MS_V4L_SET_DEVICE MS_FILTER_METHOD(MS_V4L_ID,2,int)
#define MS_V4L_SET_IMAGE MS_FILTER_METHOD(MS_V4L_ID,3,char)
#endif

View file

@ -1,191 +0,0 @@
/*
mediastreamer2 library - modular sound and video processing and streaming
Copyright (C) 2006 Simon MORLAT (simon.morlat@linphone.org)
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#ifndef msvideo_h
#define msvideo_h
#include "msfilter.h"
/* some global constants for video MSFilter(s) */
#define MS_VIDEO_SIZE_SQCIF_W 128
#define MS_VIDEO_SIZE_SQCIF_H 96
#define MS_VIDEO_SIZE_QCIF_W 176
#define MS_VIDEO_SIZE_QCIF_H 144
#define MS_VIDEO_SIZE_CIF_W 352
#define MS_VIDEO_SIZE_CIF_H 288
#define MS_VIDEO_SIZE_ICIF_W 352
#define MS_VIDEO_SIZE_ICIF_H 576
#define MS_VIDEO_SIZE_4CIF_W 704
#define MS_VIDEO_SIZE_4CIF_H 576
#define MS_VIDEO_SIZE_QQVGA_W 160
#define MS_VIDEO_SIZE_QQVGA_H 120
#define MS_VIDEO_SIZE_QVGA_W 320
#define MS_VIDEO_SIZE_QVGA_H 240
#define MS_VIDEO_SIZE_VGA_W 640
#define MS_VIDEO_SIZE_VGA_H 480
#define MS_VIDEO_SIZE_SVGA_W 800
#define MS_VIDEO_SIZE_SVGA_H 600
#define MS_VIDEO_SIZE_NS1_W 324
#define MS_VIDEO_SIZE_NS1_H 248
#define MS_VIDEO_SIZE_QSIF_W 176
#define MS_VIDEO_SIZE_QSIF_H 120
#define MS_VIDEO_SIZE_SIF_W 352
#define MS_VIDEO_SIZE_SIF_H 240
#define MS_VIDEO_SIZE_ISIF_W 352
#define MS_VIDEO_SIZE_ISIF_H 480
#define MS_VIDEO_SIZE_4SIF_W 704
#define MS_VIDEO_SIZE_4SIF_H 480
#define MS_VIDEO_SIZE_288P_W 512
#define MS_VIDEO_SIZE_288P_H 288
#define MS_VIDEO_SIZE_448P_W 768
#define MS_VIDEO_SIZE_448P_H 448
#define MS_VIDEO_SIZE_576P_W 1024
#define MS_VIDEO_SIZE_576P_H 576
#define MS_VIDEO_SIZE_720P_W 1280
#define MS_VIDEO_SIZE_720P_H 720
#define MS_VIDEO_SIZE_1080P_W 1920
#define MS_VIDEO_SIZE_1080P_H 1080
#define MS_VIDEO_SIZE_SDTV_W 768
#define MS_VIDEO_SIZE_SDTV_H 576
#define MS_VIDEO_SIZE_HDTVP_W 1920
#define MS_VIDEO_SIZE_HDTVP_H 1200
#define MS_VIDEO_SIZE_XGA_W 1024
#define MS_VIDEO_SIZE_XGA_H 768
#define MS_VIDEO_SIZE_WXGA_W 1080
#define MS_VIDEO_SIZE_WXGA_H 768
#define MS_VIDEO_SIZE_MAX_W MS_VIDEO_SIZE_1024_W
#define MS_VIDEO_SIZE_MAX_H MS_VIDEO_SIZE_1024_H
/* those structs are part of the ABI: don't change their size otherwise binary plugins will be broken*/
typedef struct MSVideoSize{
int width,height;
} MSVideoSize;
typedef struct MSRect{
int x,y,w,h;
} MSRect;
#define MS_VIDEO_SIZE_CIF (MSVideoSize){MS_VIDEO_SIZE_CIF_W,MS_VIDEO_SIZE_CIF_H}
#define MS_VIDEO_SIZE_QCIF (MSVideoSize){MS_VIDEO_SIZE_QCIF_W,MS_VIDEO_SIZE_QCIF_H}
#define MS_VIDEO_SIZE_4CIF (MSVideoSize){MS_VIDEO_SIZE_4CIF_W,MS_VIDEO_SIZE_4CIF_H}
#define MS_VIDEO_SIZE_QQVGA (MSVideoSize){MS_VIDEO_SIZE_QQVGA_W,MS_VIDEO_SIZE_QQVGA_H}
#define MS_VIDEO_SIZE_QVGA (MSVideoSize){MS_VIDEO_SIZE_QVGA_W,MS_VIDEO_SIZE_QVGA_H}
#define MS_VIDEO_SIZE_VGA (MSVideoSize){MS_VIDEO_SIZE_VGA_W,MS_VIDEO_SIZE_VGA_H}
#define MS_VIDEO_SIZE_720P (MSVideoSize){MS_VIDEO_SIZE_720P_W, MS_VIDEO_SIZE_720P_H}
#define MS_VIDEO_SIZE_NS1 (MSVideoSize){MS_VIDEO_SIZE_NS1_W,MS_VIDEO_SIZE_NS1_H}
#define MS_VIDEO_SIZE_XGA (MSVideoSize){MS_VIDEO_SIZE_XGA_W, MS_VIDEO_SIZE_XGA_H}
#define MS_VIDEO_SIZE_SVGA (MSVideoSize){MS_VIDEO_SIZE_SVGA_W, MS_VIDEO_SIZE_SVGA_H}
/*deprecated: use MS_VIDEO_SIZE_SVGA*/
#define MS_VIDEO_SIZE_800X600_W MS_VIDEO_SIZE_SVGA_W
#define MS_VIDEO_SIZE_800X600_H MS_VIDEO_SIZE_SVGA_H
#define MS_VIDEO_SIZE_800X600 MS_VIDEO_SIZE_SVGA
/*deprecated use MS_VIDEO_SIZE_XGA*/
#define MS_VIDEO_SIZE_1024_W 1024
#define MS_VIDEO_SIZE_1024_H 768
#define MS_VIDEO_SIZE_1024 MS_VIDEO_SIZE_XGA
typedef enum{
MS_YUV420P,
MS_YUYV,
MS_RGB24,
MS_RGB24_REV, /*->microsoft down-top bitmaps */
MS_MJPEG,
MS_UYVY,
MS_YUY2, /* -> same as MS_YUYV */
MS_PIX_FMT_UNKNOWN
}MSPixFmt;
typedef struct _MSPicture{
int w,h;
uint8_t *planes[4]; /*we usually use 3 planes, 4th is for compatibility */
int strides[4]; /*with ffmpeg's swscale.h */
}MSPicture;
typedef struct _MSPicture YuvBuf; /*for backward compatibility*/
#ifdef __cplusplus
extern "C"{
#endif
int ms_pix_fmt_to_ffmpeg(MSPixFmt fmt);
MSPixFmt ffmpeg_pix_fmt_to_ms(int fmt);
MSPixFmt ms_fourcc_to_pix_fmt(uint32_t fourcc);
void ms_ffmpeg_check_init(void);
int yuv_buf_init_from_mblk(MSPicture *buf, mblk_t *m);
void yuv_buf_init_from_mblk_with_size(MSPicture *buf, mblk_t *m, int w, int h);
mblk_t * yuv_buf_alloc(MSPicture *buf, int w, int h);
void yuv_buf_copy(uint8_t *src_planes[], const int src_strides[],
uint8_t *dst_planes[], const int dst_strides[3], MSVideoSize roi);
void yuv_buf_mirror(YuvBuf *buf);
void rgb24_revert(uint8_t *buf, int w, int h, int linesize);
void rgb24_copy_revert(uint8_t *dstbuf, int dstlsz,
const uint8_t *srcbuf, int srclsz, MSVideoSize roi);
static inline bool_t ms_video_size_greater_than(MSVideoSize vs1, MSVideoSize vs2){
return (vs1.width>=vs2.width) && (vs1.height>=vs2.height);
}
static inline MSVideoSize ms_video_size_max(MSVideoSize vs1, MSVideoSize vs2){
return ms_video_size_greater_than(vs1,vs2) ? vs1 : vs2;
}
static inline MSVideoSize ms_video_size_min(MSVideoSize vs1, MSVideoSize vs2){
return ms_video_size_greater_than(vs1,vs2) ? vs2 : vs1;
}
static inline bool_t ms_video_size_equal(MSVideoSize vs1, MSVideoSize vs2){
return vs1.width==vs2.width && vs1.height==vs2.height;
}
MSVideoSize ms_video_size_get_just_lower_than(MSVideoSize vs);
#ifdef __cplusplus
}
#endif
#define MS_FILTER_SET_VIDEO_SIZE MS_FILTER_BASE_METHOD(100,MSVideoSize)
#define MS_FILTER_GET_VIDEO_SIZE MS_FILTER_BASE_METHOD(101,MSVideoSize)
#define MS_FILTER_SET_PIX_FMT MS_FILTER_BASE_METHOD(102,MSPixFmt)
#define MS_FILTER_GET_PIX_FMT MS_FILTER_BASE_METHOD(103,MSPixFmt)
#define MS_FILTER_SET_FPS MS_FILTER_BASE_METHOD(104,float)
#define MS_FILTER_GET_FPS MS_FILTER_BASE_METHOD(105,float)
/* request a video-fast-update (=I frame for H263,MP4V-ES) to a video encoder*/
#define MS_FILTER_REQ_VFU MS_FILTER_BASE_METHOD_NO_ARG(106)
#define MS_FILTER_SET_IMAGE MS_FILTER_BASE_METHOD(107,char)
#endif

View file

@ -1,104 +0,0 @@
/*
mediastreamer2 library - modular sound and video processing and streaming
Copyright (C) 2006 Simon MORLAT (simon.morlat@linphone.org)
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#ifndef msvideoout_h
#define msvideoout_h
#include <mediastreamer2/msfilter.h>
#include <mediastreamer2/msvideo.h>
struct _MSDisplay;
typedef enum _MSDisplayEventType{
MS_DISPLAY_RESIZE_EVENT
}MSDisplayEventType;
typedef struct _MSDisplayEvent{
MSDisplayEventType evtype;
int w,h;
}MSDisplayEvent;
typedef struct _MSDisplayDesc{
/*init requests setup of the display window at the proper size, given
in frame_buffer argument. Memory buffer (data,strides) must be fulfilled
at return. init() might be called several times upon screen resize*/
bool_t (*init)(struct _MSDisplay *, MSPicture *frame_buffer);
void (*lock)(struct _MSDisplay *);/*lock before writing to the framebuffer*/
void (*unlock)(struct _MSDisplay *);/*unlock after writing to the framebuffer*/
void (*update)(struct _MSDisplay *); /*display the picture to the screen*/
void (*uninit)(struct _MSDisplay *);
bool_t (*pollevent)(struct _MSDisplay *, MSDisplayEvent *ev);
long default_window_id;
}MSDisplayDesc;
typedef struct _MSDisplay{
MSDisplayDesc *desc;
long window_id; /*window id if the display should use an existing window*/
void *data;
bool_t use_external_window;
} MSDisplay;
#define ms_display_init(d,fbuf) (d)->desc->init(d,fbuf)
#define ms_display_lock(d) if ((d)->desc->lock) (d)->desc->lock(d)
#define ms_display_unlock(d) if ((d)->desc->unlock) (d)->desc->unlock(d)
#define ms_display_update(d) if ((d)->desc->update) (d)->desc->update(d)
bool_t ms_display_poll_event(MSDisplay *d, MSDisplayEvent *ev);
extern MSDisplayDesc ms_sdl_display_desc;
#if (defined(WIN32) || defined(_WIN32_WCE)) && !defined(MEDIASTREAMER_STATIC)
#if defined(MEDIASTREAMER2_EXPORTS) && defined(INVIDEOUT_C)
#define MSVAR_DECLSPEC __declspec(dllexport)
#else
#define MSVAR_DECLSPEC __declspec(dllimport)
#endif
#else
#define MSVAR_DECLSPEC extern
#endif
#ifdef __cplusplus
extern "C"{
#endif
/*plugins can set their own display using this method:*/
void ms_display_desc_set_default(MSDisplayDesc *desc);
MSDisplayDesc * ms_display_desc_get_default(void);
void ms_display_desc_set_default_window_id(MSDisplayDesc *desc, long id);
MSVAR_DECLSPEC MSDisplayDesc ms_win_display_desc;
MSDisplay *ms_display_new(MSDisplayDesc *desc);
void ms_display_set_window_id(MSDisplay *d, long window_id);
void ms_display_destroy(MSDisplay *d);
#define MS_VIDEO_OUT_SET_DISPLAY MS_FILTER_METHOD(MS_VIDEO_OUT_ID,0,MSDisplay*)
#define MS_VIDEO_OUT_HANDLE_RESIZING MS_FILTER_METHOD_NO_ARG(MS_VIDEO_OUT_ID,1)
#define MS_VIDEO_OUT_SET_CORNER MS_FILTER_METHOD(MS_VIDEO_OUT_ID,2,int)
#define MS_VIDEO_OUT_AUTO_FIT MS_FILTER_METHOD(MS_VIDEO_OUT_ID,3,int)
#define MS_VIDEO_OUT_ENABLE_MIRRORING MS_FILTER_METHOD(MS_VIDEO_OUT_ID,4,int)
#define MS_VIDEO_OUT_GET_NATIVE_WINDOW_ID MS_FILTER_METHOD(MS_VIDEO_OUT_ID,5,unsigned long)
#ifdef __cplusplus
}
#endif
#endif

View file

@ -1,63 +0,0 @@
/*
mediastreamer2 library - modular sound and video processing and streaming
Copyright (C) 2006 Simon MORLAT (simon.morlat@linphone.org)
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#ifndef msvolume_h
#define msvolume_h
#include "msfilter.h"
/**
* The Volume MSFilter can do:
* - measurements of the input signal power, returned in dbm0 or linear scale
* - apply a gain to the input signal and output this amplified signal to its output.
* By default gain is 1, in which case the filter does not modify the signal (and even does not
* copy the buffers, just post them on its output queue.
**/
/*returns a volume meter in db0 (max=0 db0)*/
#define MS_VOLUME_GET MS_FILTER_METHOD(MS_VOLUME_ID,0,float)
/*returns a volume in linear scale between 0 and 1 */
#define MS_VOLUME_GET_LINEAR MS_FILTER_METHOD(MS_VOLUME_ID,1,float)
/* set a gain */
#define MS_VOLUME_SET_GAIN MS_FILTER_METHOD(MS_VOLUME_ID,2,float)
#define MS_VOLUME_GET_EA_STATE MS_FILTER_METHOD(MS_VOLUME_ID,3, int)
#define MS_VOLUME_SET_PEER MS_FILTER_METHOD(MS_VOLUME_ID,4, MSFilter )
#define MS_VOLUME_SET_EA_THRESHOLD MS_FILTER_METHOD(MS_VOLUME_ID,5,float)
#define MS_VOLUME_SET_EA_SPEED MS_FILTER_METHOD(MS_VOLUME_ID,6,float)
#define MS_VOLUME_SET_EA_FORCE MS_FILTER_METHOD(MS_VOLUME_ID,7,float)
#define MS_VOLUME_ENABLE_AGC MS_FILTER_METHOD(MS_VOLUME_ID,8,int)
#define MS_VOLUME_ENABLE_NOISE_GATE MS_FILTER_METHOD(MS_VOLUME_ID,9,int)
#define MS_VOLUME_SET_NOISE_GATE_THRESHOLD MS_FILTER_METHOD(MS_VOLUME_ID,10,float)
#define MS_VOLUME_SET_EA_SUSTAIN MS_FILTER_METHOD(MS_VOLUME_ID,11,int)
#define MS_VOLUME_SET_NOISE_GATE_FLOORGAIN MS_FILTER_METHOD(MS_VOLUME_ID,12,float)
extern MSFilterDesc ms_volume_desc;
#endif

View file

@ -1,233 +0,0 @@
/*
mediastreamer2 library - modular sound and video processing and streaming
Copyright (C) 2006 Simon MORLAT (simon.morlat@linphone.org)
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#ifndef webcam_h
#define webcam_h
#include "mscommon.h"
/**
* @file mswebcam.h
* @brief mediastreamer2 mswebcam.h include file
*
* This file provide the API needed to manage
* soundcard filters.
*
*/
/**
* @defgroup mediastreamer2_webcam Camera API - manage video capture devices
* @ingroup mediastreamer2_api
* @{
*/
struct _MSWebCamManager{
MSList *cams;
MSList *descs;
};
/**
* Structure for webcam manager object.
* @var MSWebCamManager
*/
typedef struct _MSWebCamManager MSWebCamManager;
struct _MSWebCam;
typedef void (*MSWebCamDetectFunc)(MSWebCamManager *obj);
typedef void (*MSWebCamInitFunc)(struct _MSWebCam *obj);
typedef void (*MSWebCamUninitFunc)(struct _MSWebCam *obj);
typedef struct _MSFilter * (*MSWebCamCreateReaderFunc)(struct _MSWebCam *obj);
struct _MSWebCamDesc{
const char *driver_type;
MSWebCamDetectFunc detect;
MSWebCamInitFunc init;
MSWebCamCreateReaderFunc create_reader;
MSWebCamUninitFunc uninit;
};
/**
* Structure for sound card description object.
* @var MSWebCamDesc
*/
typedef struct _MSWebCamDesc MSWebCamDesc;
struct _MSWebCam{
MSWebCamDesc *desc;
char *name;
char *id;
void *data;
};
/**
* Structure for sound card object.
* @var MSWebCam
*/
typedef struct _MSWebCam MSWebCam;
#ifdef __cplusplus
extern "C"{
#endif
/**
* Retreive a webcam manager object.
*
* Returns: MSWebCamManager if successfull, NULL otherwise.
*/
MSWebCamManager * ms_web_cam_manager_get(void);
/**
* Destroy the webcam manager object.
*
*/
void ms_web_cam_manager_destroy(void);
/**
* Retreive a webcam object based on its name.
*
* @param m A webcam manager containing webcam.
* @param id A name for card to search.
*
* Returns: MSWebCam if successfull, NULL otherwise.
*/
MSWebCam * ms_web_cam_manager_get_cam(MSWebCamManager *m, const char *id);
/**
* Retreive the default webcam object.
*
* @param m A webcam manager containing webcams.
*
* Returns: MSWebCam if successfull, NULL otherwise.
*/
MSWebCam * ms_web_cam_manager_get_default_cam(MSWebCamManager *m);
/**
* Retreive the list of webcam objects.
*
* @param m A webcam manager containing webcams.
*
* Returns: MSList of cards if successfull, NULL otherwise.
*/
const MSList * ms_web_cam_manager_get_list(MSWebCamManager *m);
/**
* Add a webcam object in a webcam manager's list.
*
* @param m A webcam manager containing webcams
* @param c A web cam object.
*
*/
void ms_web_cam_manager_add_cam(MSWebCamManager *m, MSWebCam *c);
/**
* Add a webcam object on top of list of the webcam manager's list.
*
* @param m A webcam manager containing webcams
* @param c A web cam object.
*
*/
void ms_web_cam_manager_prepend_cam(MSWebCamManager *m, MSWebCam *c);
/**
* Register a webcam descriptor in a webcam manager.
*
* @param m A webcam manager containing sound cards.
* @param desc A webcam descriptor object.
*
*/
void ms_web_cam_manager_register_desc(MSWebCamManager *m, MSWebCamDesc *desc);
/**
* Ask all registered MSWebCamDesc to detect the webcams again.
*
* @param m A webcam manager
**/
void ms_web_cam_manager_reload(MSWebCamManager *m);
/**
* Create an INPUT filter based on the selected camera.
*
* @param obj A webcam object.
*
* Returns: A MSFilter if successfull, NULL otherwise.
*/
struct _MSFilter * ms_web_cam_create_reader(MSWebCam *obj);
/**
* Create a new webcam object.
*
* @param desc A webcam description object.
*
* Returns: MSWebCam if successfull, NULL otherwise.
*/
MSWebCam * ms_web_cam_new(MSWebCamDesc *desc);
/**
* Destroy webcam object.
*
* @param obj A MSWebCam object.
*/
void ms_web_cam_destroy(MSWebCam *obj);
/**
* Retreive a webcam's driver type string.
*
* Internal driver types are either: "V4L V4LV2"
*
* @param obj A webcam object.
*
* Returns: a string if successfull, NULL otherwise.
*/
const char *ms_web_cam_get_driver_type(const MSWebCam *obj);
/**
* Retreive a webcam's name.
*
* @param obj A webcam object.
*
* Returns: a string if successfull, NULL otherwise.
*/
const char *ms_web_cam_get_name(const MSWebCam *obj);
/**
* Retreive webcam's id: ($driver_type: $name).
*
* @param obj A webcam object.
*
* Returns: A string if successfull, NULL otherwise.
*/
const char *ms_web_cam_get_string_id(MSWebCam *obj);
/*specific methods for static image:*/
void ms_static_image_set_default_image(const char *path);
#ifdef __cplusplus
}
#endif
/** @} */
#endif

View file

@ -1,60 +0,0 @@
/*
mediastreamer2 library - modular sound and video processing and streaming
Copyright (C) 2006 Simon MORLAT (simon.morlat@linphone.org)
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#ifndef rfc3984_h
#define rfc3984_h
#include "mediastreamer2/mscommon.h"
#include "mediastreamer2/msqueue.h"
#ifdef __cplusplus
extern "C"{
#endif
typedef struct Rfc3984Context{
MSQueue q;
mblk_t *m;
int maxsz;
uint32_t last_ts;
uint8_t mode;
bool_t stap_a_allowed;
uint8_t reserved;
} Rfc3984Context;
void rfc3984_init(Rfc3984Context *ctx);
void rfc3984_set_mode(Rfc3984Context *ctx, int mode);
/* some stupid phones don't decode STAP-A packets ...*/
void rfc3984_enable_stap_a(Rfc3984Context *ctx, bool_t yesno);
/*process NALUs and pack them into rtp payloads */
void rfc3984_pack(Rfc3984Context *ctx, MSQueue *naluq, MSQueue *rtpq, uint32_t ts);
/*process incoming rtp data and output NALUs, whenever possible*/
void rfc3984_unpack(Rfc3984Context *ctx, mblk_t *im, MSQueue *naluq);
void rfc3984_uninit(Rfc3984Context *ctx);
#ifdef __cplusplus
}
#endif
#endif

View file

@ -1,96 +0,0 @@
/*
mediastreamer2 library - modular sound and video processing and streaming
Copyright (C) 2006 Simon MORLAT (simon.morlat@linphone.org)
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
/* the following code was taken from a free software utility that I don't remember the name. */
/* sorry */
#ifdef HAVE_CONFIG_H
#include "mediastreamer-config.h"
#endif
#ifndef waveheader_h
#define waveheader_h
#ifdef swap16
#else
/* all integer in wav header must be read in least endian order */
static inline uint16_t swap16(uint16_t a)
{
return ((a & 0xFF) << 8) | ((a & 0xFF00) >> 8);
}
#endif
#ifdef swap32
#else
static inline uint32_t swap32(uint32_t a)
{
return ((a & 0xFF) << 24) | ((a & 0xFF00) << 8) |
((a & 0xFF0000) >> 8) | ((a & 0xFF000000) >> 24);
}
#endif
#ifdef WORDS_BIGENDIAN
#define le_uint32(a) (swap32((a)))
#define le_uint16(a) (swap16((a)))
#define le_int16(a) ( (int16_t) swap16((uint16_t)((a))) )
#else
#define le_uint32(a) (a)
#define le_uint16(a) (a)
#define le_int16(a) (a)
#endif
typedef struct _riff_t {
char riff[4] ; /* "RIFF" (ASCII characters) */
uint32_t len ; /* Length of package (binary, little endian) */
char wave[4] ; /* "WAVE" (ASCII characters) */
} riff_t;
/* The FORMAT chunk */
typedef struct _format_t {
char fmt[4] ; /* "fmt_" (ASCII characters) */
uint32_t len ; /* length of FORMAT chunk (always 0x10) */
uint16_t type; /* codec type*/
uint16_t channel ; /* Channel numbers (0x01 = mono, 0x02 = stereo) */
uint32_t rate ; /* Sample rate (binary, in Hz) */
uint32_t bps ; /* Average Bytes Per Second */
uint16_t blockalign ; /*number of bytes per sample */
uint16_t bitpspl ; /* bits per sample */
} format_t;
/* The DATA chunk */
typedef struct _data_t {
char data[4] ; /* "data" (ASCII characters) */
int len ; /* length of data */
} data_t;
typedef struct _wave_header_t
{
riff_t riff_chunk;
format_t format_chunk;
data_t data_chunk;
} wave_header_t;
#define wave_header_get_rate(header) le_uint32((header)->format_chunk.rate)
#define wave_header_get_channel(header) le_uint16((header)->format_chunk.channel)
#define wave_header_get_bpsmpl(header) \
le_uint16((header)->format_chunk.blockalign)
#endif

View file

@ -1,11 +0,0 @@
# This is a comment
prefix=@prefix@
exec_prefix=@exec_prefix@
includedir=@includedir@
Name: mediastreamer
Description: A mediastreaming library for telephony applications
Requires: ortp
Version: @MEDIASTREAMER_VERSION@
Libs: -L@libdir@ -lmediastreamer
Cflags: -I@includedir@ @MS_PUBLIC_CFLAGS@

View file

@ -1,81 +0,0 @@
# -*- rpm-spec -*-
#
# mediastreamer2 -- A mediastreaming library for telephony applications
#
%ifarch %ix86
%define mediastreamer2_cpu pentium4
%endif
Summary: Audio/Video real-time streaming
Name: mediastreamer2
Version: @MEDIASTREAMER2_PKGCONFIG_VERSION@
Release: 1
License: LGPL
Group: Applications/Communications
URL: http://linphone.org/mediastreamer2/
Source0: %{name}-@MEDIASTREAMER2_PKGCONFIG_VERSION@.tar.gz
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot
%ifarch %ix86
BuildArch: i686
%endif
%description
Mediastreamer2 is a GPL licensed library to make audio and video
real-time streaming and processing. Written in pure C, it is based
upon the oRTP library.
%package devel
Summary: Headers, libraries and docs for the mediastreamer2 library
Group: Development/Libraries
Requires: %{name} = %{version}-%{release}
%description devel
Mediastreamer2 is a GPL licensed library to make audio and video
real-time streaming and processing. Written in pure C, it is based
upon the ortp library.
This package contains header files and development libraries needed to
develop programs using the mediastreamer2 library.
%ifarch %ix86
%define mediastreamer2_arch_cflags -malign-double -march=i686 -mcpu=%{mediastreamer2_cpu}
%else
# Must be non-empty
%define mediastreamer2_arch_cflags -Wall
%endif
%define mediastreamer2_cflags %mediastreamer2_arch_cflags -Wall -g -pipe -pthread -O3 -fomit-frame-pointer -fno-schedule-insns -fschedule-insns2 -fstrict-aliasing
%prep
%setup -q
%build
%configure \
--enable-gtk-doc=no \
--enable-shared --enable-static
make -j$RPM_BUILD_NCPUS CFLAGS="%mediastreamer2_cflags" CXXFLAGS="%mediastreamer2_cflags"
%install
rm -rf $RPM_BUILD_ROOT
%makeinstall
%clean
rm -rf $RPM_BUILD_ROOT
%files
%defattr(-,root,root,-)
%doc AUTHORS COPYING ChangeLog INSTALL NEWS README TODO
%{_libdir}/*.so.*
%files devel
%defattr(-,root,root,-)
%doc docs/html
%{_libdir}/*.la
%{_libdir}/*.a
%{_libdir}/*.so
%{_libdir}/pkgconfig/*.pc
%{_includedir}
%changelog
* Tue Oct 25 2005 Francois-Xavier Kowalski <fix@hp.com>
- Add to mediastreamer2 distribution with "make rpm" target

View file

@ -1,43 +0,0 @@
# -*- rpm-spec -*- ############################################################
#
# EPM list file. See epm(1) and epm.list(5) for details
#
###############################################################################
%product ${SUMMARY}
%version ${VERSION}
%release ${RELEASE}
%description ${SUMMARY}
%vendor ${VENDOR}
%copyright ${LICENSE}
%license ${LICENSE}
%readme ${srcdir}/README
%packager ${PACKAGER}
%system linux
# Compress man pages
%define __spec_install_post /usr/lib/rpm/brp-compress || :
# Package all-in one: should be split later on...
%provides ortp-devel
%postinstall << EOF
ldconfig 2>&1 | logger -i -s -t ${PACKAGE}
makewhatis -u -w 2>&1 | logger -i -s -t ${PACKAGE}
EOF
%postremove << EOF
ldconfig 2>&1 | logger -i -s -t ${PACKAGE}
makewhatis -u -w 2>&1 | logger -i -s -t ${PACKAGE}
EOF
%system hpux
%system all
%include files.list
%provides mediastreamer2
%replaces mediastreamer2

View file

@ -1,3 +0,0 @@
Makefile
Makefile.in
plugins.mk

View file

@ -1,340 +0,0 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.

View file

@ -1,236 +0,0 @@
Installation Instructions
*************************
Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005 Free
Software Foundation, Inc.
This file is free documentation; the Free Software Foundation gives
unlimited permission to copy, distribute and modify it.
Basic Installation
==================
These are generic installation instructions.
The `configure' shell script attempts to guess correct values for
various system-dependent variables used during compilation. It uses
those values to create a `Makefile' in each directory of the package.
It may also create one or more `.h' files containing system-dependent
definitions. Finally, it creates a shell script `config.status' that
you can run in the future to recreate the current configuration, and a
file `config.log' containing compiler output (useful mainly for
debugging `configure').
It can also use an optional file (typically called `config.cache'
and enabled with `--cache-file=config.cache' or simply `-C') that saves
the results of its tests to speed up reconfiguring. (Caching is
disabled by default to prevent problems with accidental use of stale
cache files.)
If you need to do unusual things to compile the package, please try
to figure out how `configure' could check whether to do them, and mail
diffs or instructions to the address given in the `README' so they can
be considered for the next release. If you are using the cache, and at
some point `config.cache' contains results you don't want to keep, you
may remove or edit it.
The file `configure.ac' (or `configure.in') is used to create
`configure' by a program called `autoconf'. You only need
`configure.ac' if you want to change it or regenerate `configure' using
a newer version of `autoconf'.
The simplest way to compile this package is:
1. `cd' to the directory containing the package's source code and type
`./configure' to configure the package for your system. If you're
using `csh' on an old version of System V, you might need to type
`sh ./configure' instead to prevent `csh' from trying to execute
`configure' itself.
Running `configure' takes awhile. While running, it prints some
messages telling which features it is checking for.
2. Type `make' to compile the package.
3. Optionally, type `make check' to run any self-tests that come with
the package.
4. Type `make install' to install the programs and any data files and
documentation.
5. You can remove the program binaries and object files from the
source code directory by typing `make clean'. To also remove the
files that `configure' created (so you can compile the package for
a different kind of computer), type `make distclean'. There is
also a `make maintainer-clean' target, but that is intended mainly
for the package's developers. If you use it, you may have to get
all sorts of other programs in order to regenerate files that came
with the distribution.
Compilers and Options
=====================
Some systems require unusual options for compilation or linking that the
`configure' script does not know about. Run `./configure --help' for
details on some of the pertinent environment variables.
You can give `configure' initial values for configuration parameters
by setting variables in the command line or in the environment. Here
is an example:
./configure CC=c89 CFLAGS=-O2 LIBS=-lposix
*Note Defining Variables::, for more details.
Compiling For Multiple Architectures
====================================
You can compile the package for more than one kind of computer at the
same time, by placing the object files for each architecture in their
own directory. To do this, you must use a version of `make' that
supports the `VPATH' variable, such as GNU `make'. `cd' to the
directory where you want the object files and executables to go and run
the `configure' script. `configure' automatically checks for the
source code in the directory that `configure' is in and in `..'.
If you have to use a `make' that does not support the `VPATH'
variable, you have to compile the package for one architecture at a
time in the source code directory. After you have installed the
package for one architecture, use `make distclean' before reconfiguring
for another architecture.
Installation Names
==================
By default, `make install' installs the package's commands under
`/usr/local/bin', include files under `/usr/local/include', etc. You
can specify an installation prefix other than `/usr/local' by giving
`configure' the option `--prefix=PREFIX'.
You can specify separate installation prefixes for
architecture-specific files and architecture-independent files. If you
pass the option `--exec-prefix=PREFIX' to `configure', the package uses
PREFIX as the prefix for installing programs and libraries.
Documentation and other data files still use the regular prefix.
In addition, if you use an unusual directory layout you can give
options like `--bindir=DIR' to specify different values for particular
kinds of files. Run `configure --help' for a list of the directories
you can set and what kinds of files go in them.
If the package supports it, you can cause programs to be installed
with an extra prefix or suffix on their names by giving `configure' the
option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
Optional Features
=================
Some packages pay attention to `--enable-FEATURE' options to
`configure', where FEATURE indicates an optional part of the package.
They may also pay attention to `--with-PACKAGE' options, where PACKAGE
is something like `gnu-as' or `x' (for the X Window System). The
`README' should mention any `--enable-' and `--with-' options that the
package recognizes.
For packages that use the X Window System, `configure' can usually
find the X include and library files automatically, but if it doesn't,
you can use the `configure' options `--x-includes=DIR' and
`--x-libraries=DIR' to specify their locations.
Specifying the System Type
==========================
There may be some features `configure' cannot figure out automatically,
but needs to determine by the type of machine the package will run on.
Usually, assuming the package is built to be run on the _same_
architectures, `configure' can figure that out, but if it prints a
message saying it cannot guess the machine type, give it the
`--build=TYPE' option. TYPE can either be a short name for the system
type, such as `sun4', or a canonical name which has the form:
CPU-COMPANY-SYSTEM
where SYSTEM can have one of these forms:
OS KERNEL-OS
See the file `config.sub' for the possible values of each field. If
`config.sub' isn't included in this package, then this package doesn't
need to know the machine type.
If you are _building_ compiler tools for cross-compiling, you should
use the option `--target=TYPE' to select the type of system they will
produce code for.
If you want to _use_ a cross compiler, that generates code for a
platform different from the build platform, you should specify the
"host" platform (i.e., that on which the generated programs will
eventually be run) with `--host=TYPE'.
Sharing Defaults
================
If you want to set default values for `configure' scripts to share, you
can create a site shell script called `config.site' that gives default
values for variables like `CC', `cache_file', and `prefix'.
`configure' looks for `PREFIX/share/config.site' if it exists, then
`PREFIX/etc/config.site' if it exists. Or, you can set the
`CONFIG_SITE' environment variable to the location of the site script.
A warning: not all `configure' scripts look for a site script.
Defining Variables
==================
Variables not defined in a site shell script can be set in the
environment passed to `configure'. However, some packages may run
configure again during the build, and the customized values of these
variables may be lost. In order to avoid this problem, you should set
them in the `configure' command line, using `VAR=value'. For example:
./configure CC=/usr/local2/bin/gcc
causes the specified `gcc' to be used as the C compiler (unless it is
overridden in the site shell script). Here is a another example:
/bin/bash ./configure CONFIG_SHELL=/bin/bash
Here the `CONFIG_SHELL=/bin/bash' operand causes subsequent
configuration-related scripts to be executed by `/bin/bash'.
`configure' Invocation
======================
`configure' recognizes the following options to control how it operates.
`--help'
`-h'
Print a summary of the options to `configure', and exit.
`--version'
`-V'
Print the version of Autoconf used to generate the `configure'
script, and exit.
`--cache-file=FILE'
Enable the cache: use and save the results of the tests in FILE,
traditionally `config.cache'. FILE defaults to `/dev/null' to
disable caching.
`--config-cache'
`-C'
Alias for `--cache-file=config.cache'.
`--quiet'
`--silent'
`-q'
Do not print messages saying which checks are being made. To
suppress all normal output, redirect it to `/dev/null' (any error
messages will still be shown).
`--srcdir=DIR'
Look for the package's source code in directory DIR. Usually
`configure' can determine that directory automatically.
`configure' also accepts some other, not widely useful, options. Run
`configure --help' for more details.

View file

@ -1,11 +0,0 @@
EXTRA_DIST=ilbc-rfc3951.tar.gz
plugindir=$(PACKAGE_PLUGINS_DIR)
plugin_LTLIBRARIES=libmsilbc.la
libmsilbc_la_SOURCES=ilbc.c
libmsilbc_la_LIBADD=$(ILBC_LIBS)
AM_CFLAGS=$(ILBC_CFLAGS)

View file

@ -1,13 +0,0 @@
* compile and install the ilbc source:
tar -xvzf ilbc-rfc3951.tar.gz
cd ilbc-rfc2951
./configure --prefix=/usr && make
make install (as root)
cd ..
* compile and install the plugin:
./configure --prefix=<prefix of linphone/mediastreamer installation>
make
make install

View file

@ -1,152 +0,0 @@
dnl Process this file with autoconf to produce a configure script.
AC_INIT([msilbc],[2.0.0])
AM_INIT_AUTOMAKE([tar-ustar])
AC_CANONICAL_SYSTEM
AC_MSG_CHECKING([warning make an error on compilation])
AC_ARG_ENABLE(strict,
[ --enable-strict Enable error on compilation warning [default=yes]],
[wall_werror=$enableval],
[wall_werror=yes]
)
AC_ARG_ENABLE(debug,
[ --enable-debug=[yes/no] enables the display of traces showing the execution of the library. [default=yes]],
[case "${enableval}" in
yes) debug_enabled=yes;;
no) debug_enabled=no;;
*) AC_MSG_ERROR("Bad value for --enable-debug");;
esac],
[debug_enabled=no] )
dnl Checks for programs.
AC_PROG_CC
AC_PROG_LIBTOOL
AC_ENABLE_SHARED(yes)
AC_ENABLE_STATIC(no)
if test "$GCC" != "yes" ; then
case $host_os in
*hpux*)
dnl we are probably using HPUX cc compiler, so add a +O2 to CFLAGS
CFLAGS="$CFLAGS +O2 -g "
;;
esac
else
CFLAGS="$CFLAGS -Wall"
fi
if test $debug_enabled = "yes"; then
CFLAGS="$CFLAGS -DDEBUG"
fi
dnl Checks for header files.
AC_HEADER_STDC
dnl Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST
AC_C_INLINE
AC_HEADER_TIME
AC_WORDS_BIGENDIAN
if test x$ac_cv_c_bigendian = xyes ; then
CFLAGS="$CFLAGS -D_BIGENDIAN"
fi
if test $GCC = yes && test $wall_werror = yes; then
CFLAGS="$CFLAGS -Werror "
fi
PKG_CHECK_MODULES(MEDIASTREAMER, mediastreamer >= 2.0.0)
AC_ARG_WITH( ilbc,
[ --with-ilbc Sets the installation prefix of ilbc codec, [default=/usr] ],
[ ilbcdir=${withval}],[ ilbcdir=/usr ])
if test "$ilbcdir" != "/usr" ; then
ILBC_CFLAGS="$ilbcdir/include"
ILBC_LIBS="$ilbcdir/lib"
fi
ILBC_LIBS="$ILBC_LIBS -lilbc"
AC_SUBST(ILBC_CFLAGS)
AC_SUBST(ILBC_LIBS)
CFLAGS="$CFLAGS \$(MEDIASTREAMER_CFLAGS) "
LIBS="$LIBS \$(MEDIASTREAMER_LIBS) "
LDFLAGS="$LDFLAGS -rdynamic "
dnl define path of plugins:
PACKAGE_PLUGINS_DIR=`eval echo $prefix/lib/mediastreamer/plugins`
AC_DEFINE_UNQUOTED(PACKAGE_PLUGINS_DIR, "$PACKAGE_PLUGINS_DIR" ,[path of plugins])
AC_SUBST(PACKAGE_PLUGINS_DIR)
dnl ##################################################
dnl # Check for ESP Packager
dnl ##################################################
AC_PATH_PROG(EPM,epm,false)
AC_PATH_PROG(MKEPMLIST,mkepmlist,false)
AC_PATH_PROG(EPMINSTALL,epminstall,false)
AM_CONDITIONAL(WITH_EPM,test $EPM != false && test $MKEPMLIST != false && test $EPMINSTALL != false)
# Preferred packaging system, as per EPM terminology
case $target in
*-*-linux*)
if test -f /etc/debian_version ; then
EPM_PKG_EXT=deb
else
EPM_PKG_EXT=rpm
fi
;;
*-hp-hpux*)
EPM_PKG_EXT=depot.gz;;
*-dec-osf*)
EPM_PKG_EXT=setld;;
esac
AC_SUBST(EPM_PKG_EXT)
# System software User & Group names
case $target in
*-*-linux*)
SYS_USER=root
SYS_GROUP=root
;;
*-*-hpux*|*-dec-osf*)
SYS_USER=bin
SYS_GROUP=bin
;;
esac
AC_SUBST(SYS_USER)
AC_SUBST(SYS_GROUP)
# CPU Architecture
case $target_cpu in
i?86) ARCH=i386;;
*) ARCH=$target_cpu;;
esac
AC_SUBST(ARCH)
# Various other packaging variables, that can be over-ridden ad `make
# package' time
SUMMARY="A mediastreamer plugin."
AC_SUBST(SUMMARY)
PACKAGER=anonymous
AC_SUBST(PACKAGER)
LICENSE=GPL
AC_SUBST(LICENSE)
VENDOR=Linphone
AC_SUBST(VENDOR)
RELEASE=1
AC_SUBST(RELEASE)
AC_OUTPUT(
Makefile
)

View file

@ -1,283 +0,0 @@
/*
NO LICENSE
*/
#include <ilbc/iLBC_encode.h>
#include <ilbc/iLBC_decode.h>
#include "mediastreamer2/msfilter.h"
typedef struct EncState{
int nsamples;
int nbytes;
int ms_per_frame;
int ptime;
uint32_t ts;
MSBufferizer bufferizer;
iLBC_Enc_Inst_t ilbc_enc;
}EncState;
static void enc_init(MSFilter *f){
EncState *s=ms_new(EncState,1);
s->nsamples=BLOCKL_20MS;
s->nbytes=NO_OF_BYTES_20MS;
s->ms_per_frame=20;
s->ptime=0;
s->ts=0;
ms_bufferizer_init(&s->bufferizer);
f->data=s;
}
static void enc_uninit(MSFilter *f){
EncState *s=(EncState*)f->data;
ms_bufferizer_uninit(&s->bufferizer);
ms_free(f->data);
}
static void enc_preprocess(MSFilter *f){
EncState *s=(EncState*)f->data;
initEncode(&s->ilbc_enc,s->ms_per_frame);
}
static int enc_add_fmtp(MSFilter *f, void *arg){
char buf[64];
const char *fmtp=(const char *)arg;
EncState *s=(EncState*)f->data;
memset(buf, '\0', sizeof(buf));
fmtp_get_value(fmtp, "mode", buf, sizeof(buf));
if (buf[0]=='\0'){
ms_warning("unsupported fmtp parameter (%s)!", fmtp);
}
else if (strstr(buf,"20")!=NULL){
s->nsamples=BLOCKL_20MS;
s->nbytes=NO_OF_BYTES_20MS;
s->ms_per_frame=20;
}else if (strstr(buf,"30")!=NULL){
s->nsamples=BLOCKL_30MS;
s->nbytes=NO_OF_BYTES_30MS;
s->ms_per_frame=30;
}
return 0;
}
static int enc_add_attr(MSFilter *f, void *arg){
const char *fmtp=(const char *)arg;
EncState *s=(EncState*)f->data;
if (strstr(fmtp,"ptime:20")!=NULL){
s->ptime=20;
}else if (strstr(fmtp,"ptime:30")!=NULL){
s->ptime=30;
}else if (strstr(fmtp,"ptime:40")!=NULL){
s->ptime=40;
}else if (strstr(fmtp,"ptime:60")!=NULL){
s->ptime=60;
}else if (strstr(fmtp,"ptime:80")!=NULL){
s->ptime=80;
}else if (strstr(fmtp,"ptime:90")!=NULL){
s->ptime=90;
}else if (strstr(fmtp,"ptime:100")!=NULL){
s->ptime=100;
}else if (strstr(fmtp,"ptime:120")!=NULL){
s->ptime=120;
}else if (strstr(fmtp,"ptime:140")!=NULL){
s->ptime=140;
}
return 0;
}
static void enc_process(MSFilter *f){
EncState *s=(EncState*)f->data;
mblk_t *im,*om;
int size=s->nsamples*2;
int16_t samples[1610]; /* BLOCKL_MAX * 7 is the largest size for ptime == 140 */
float samples2[BLOCKL_MAX];
int i;
int frame_per_packet=1;
if (s->ptime>=20 && s->ms_per_frame>0 && s->ptime%s->ms_per_frame==0)
{
frame_per_packet = s->ptime/s->ms_per_frame;
}
if (frame_per_packet<=0)
frame_per_packet=1;
if (frame_per_packet>7) /* 7*20 == 140 ms max */
frame_per_packet=7;
while((im=ms_queue_get(f->inputs[0]))!=NULL){
ms_bufferizer_put(&s->bufferizer,im);
}
while(ms_bufferizer_read(&s->bufferizer,(uint8_t*)samples,size*frame_per_packet)==(size*frame_per_packet)){
int k;
om=allocb(s->nbytes*frame_per_packet,0);
for (k=0;k<frame_per_packet;k++)
{
for (i=0;i<s->nsamples;i++){
samples2[i]=samples[i+(s->nsamples*k)];
}
iLBC_encode((uint8_t*)om->b_wptr,samples2,&s->ilbc_enc);
om->b_wptr+=s->nbytes;
s->ts+=s->nsamples;
}
mblk_set_timestamp_info(om,s->ts-s->nsamples);
ms_queue_put(f->outputs[0],om);
}
}
static MSFilterMethod enc_methods[]={
{ MS_FILTER_ADD_FMTP, enc_add_fmtp },
{ MS_FILTER_ADD_ATTR, enc_add_attr},
{ 0 , NULL }
};
#ifdef _MSC_VER
MSFilterDesc ms_ilbc_enc_desc={
MS_FILTER_PLUGIN_ID,
"MSIlbcEnc",
"iLBC encoder",
MS_FILTER_ENCODER,
"iLBC",
1,
1,
enc_init,
enc_preprocess,
enc_process,
NULL,
enc_uninit,
enc_methods
};
#else
MSFilterDesc ms_ilbc_enc_desc={
.id=MS_FILTER_PLUGIN_ID,
.name="MSIlbcEnc",
.text="iLBC encoder",
.category=MS_FILTER_ENCODER,
.enc_fmt="iLBC",
.ninputs=1,
.noutputs=1,
.init=enc_init,
.preprocess=enc_preprocess,
.process=enc_process,
.uninit=enc_uninit,
.methods=enc_methods
};
#endif
typedef struct DecState{
int nsamples;
int nbytes;
int ms_per_frame;
iLBC_Dec_Inst_t ilbc_dec;
}DecState;
static void dec_init(MSFilter *f){
DecState *s=ms_new(DecState,1);
s->nsamples=0;
s->nbytes=0;
s->ms_per_frame=0;
f->data=s;
}
static void dec_uninit(MSFilter *f){
ms_free(f->data);
}
static void dec_process(MSFilter *f){
DecState *s=(DecState*)f->data;
mblk_t *im,*om;
int nbytes;
float samples[BLOCKL_MAX];
int i;
while ((im=ms_queue_get(f->inputs[0]))!=NULL){
nbytes=msgdsize(im);
if (nbytes<=0)
return;
if (nbytes%38!=0 && nbytes%50!=0)
return;
if (nbytes%38==0 && s->nbytes!=NO_OF_BYTES_20MS)
{
/* not yet configured, or misconfigured */
s->ms_per_frame=20;
s->nbytes=NO_OF_BYTES_20MS;
s->nsamples=BLOCKL_20MS;
initDecode(&s->ilbc_dec,s->ms_per_frame,0);
}
else if (nbytes%50==0 && s->nbytes!=NO_OF_BYTES_30MS)
{
/* not yet configured, or misconfigured */
s->ms_per_frame=30;
s->nbytes=NO_OF_BYTES_30MS;
s->nsamples=BLOCKL_30MS;
initDecode(&s->ilbc_dec,s->ms_per_frame,0);
}
if (s->nbytes>0 && nbytes>=s->nbytes){
int frame_per_packet = nbytes/s->nbytes;
int k;
for (k=0;k<frame_per_packet;k++)
{
om=allocb(s->nsamples*2,0);
iLBC_decode(samples,(uint8_t*)im->b_rptr+(k*s->nbytes),&s->ilbc_dec,1);
for (i=0;i<s->nsamples;i++,om->b_wptr+=2){
*((int16_t*)om->b_wptr)=samples[i];
}
ms_queue_put(f->outputs[0],om);
}
}else{
ms_warning("bad iLBC frame !");
}
freemsg(im);
}
}
#ifdef _MSC_VER
MSFilterDesc ms_ilbc_dec_desc={
MS_FILTER_PLUGIN_ID,
"MSIlbcDec",
"iLBC decoder",
MS_FILTER_DECODER,
"iLBC",
1,
1,
dec_init,
NULL,
dec_process,
NULL,
dec_uninit,
NULL
};
#else
MSFilterDesc ms_ilbc_dec_desc={
.id=MS_FILTER_PLUGIN_ID,
.name="MSIlbcDec",
.text="iLBC decoder",
.category=MS_FILTER_DECODER,
.enc_fmt="iLBC",
.ninputs=1,
.noutputs=1,
.init=dec_init,
.process=dec_process,
.uninit=dec_uninit
};
#endif
#ifdef _MSC_VER
#define MS_PLUGIN_DECLARE(type) __declspec(dllexport) type
#else
#define MS_PLUGIN_DECLARE(type) type
#endif
MS_PLUGIN_DECLARE(void) libmsilbc_init(){
ms_filter_register(&ms_ilbc_enc_desc);
ms_filter_register(&ms_ilbc_dec_desc);
}

View file

@ -1 +0,0 @@
Simon Morlat <simon.morlat@linphone.org>

View file

@ -1,340 +0,0 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.

View file

@ -1,302 +0,0 @@
Installation Instructions
*************************
Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
2006, 2007, 2008, 2009 Free Software Foundation, Inc.
This file is free documentation; the Free Software Foundation gives
unlimited permission to copy, distribute and modify it.
Basic Installation
==================
Briefly, the shell commands `./configure; make; make install' should
configure, build, and install this package. The following
more-detailed instructions are generic; see the `README' file for
instructions specific to this package.
The `configure' shell script attempts to guess correct values for
various system-dependent variables used during compilation. It uses
those values to create a `Makefile' in each directory of the package.
It may also create one or more `.h' files containing system-dependent
definitions. Finally, it creates a shell script `config.status' that
you can run in the future to recreate the current configuration, and a
file `config.log' containing compiler output (useful mainly for
debugging `configure').
It can also use an optional file (typically called `config.cache'
and enabled with `--cache-file=config.cache' or simply `-C') that saves
the results of its tests to speed up reconfiguring. Caching is
disabled by default to prevent problems with accidental use of stale
cache files.
If you need to do unusual things to compile the package, please try
to figure out how `configure' could check whether to do them, and mail
diffs or instructions to the address given in the `README' so they can
be considered for the next release. If you are using the cache, and at
some point `config.cache' contains results you don't want to keep, you
may remove or edit it.
The file `configure.ac' (or `configure.in') is used to create
`configure' by a program called `autoconf'. You need `configure.ac' if
you want to change it or regenerate `configure' using a newer version
of `autoconf'.
The simplest way to compile this package is:
1. `cd' to the directory containing the package's source code and type
`./configure' to configure the package for your system.
Running `configure' might take a while. While running, it prints
some messages telling which features it is checking for.
2. Type `make' to compile the package.
3. Optionally, type `make check' to run any self-tests that come with
the package.
4. Type `make install' to install the programs and any data files and
documentation.
5. You can remove the program binaries and object files from the
source code directory by typing `make clean'. To also remove the
files that `configure' created (so you can compile the package for
a different kind of computer), type `make distclean'. There is
also a `make maintainer-clean' target, but that is intended mainly
for the package's developers. If you use it, you may have to get
all sorts of other programs in order to regenerate files that came
with the distribution.
6. Often, you can also type `make uninstall' to remove the installed
files again.
Compilers and Options
=====================
Some systems require unusual options for compilation or linking that
the `configure' script does not know about. Run `./configure --help'
for details on some of the pertinent environment variables.
You can give `configure' initial values for configuration parameters
by setting variables in the command line or in the environment. Here
is an example:
./configure CC=c99 CFLAGS=-g LIBS=-lposix
*Note Defining Variables::, for more details.
Compiling For Multiple Architectures
====================================
You can compile the package for more than one kind of computer at the
same time, by placing the object files for each architecture in their
own directory. To do this, you can use GNU `make'. `cd' to the
directory where you want the object files and executables to go and run
the `configure' script. `configure' automatically checks for the
source code in the directory that `configure' is in and in `..'.
With a non-GNU `make', it is safer to compile the package for one
architecture at a time in the source code directory. After you have
installed the package for one architecture, use `make distclean' before
reconfiguring for another architecture.
On MacOS X 10.5 and later systems, you can create libraries and
executables that work on multiple system types--known as "fat" or
"universal" binaries--by specifying multiple `-arch' options to the
compiler but only a single `-arch' option to the preprocessor. Like
this:
./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
CPP="gcc -E" CXXCPP="g++ -E"
This is not guaranteed to produce working output in all cases, you
may have to build one architecture at a time and combine the results
using the `lipo' tool if you have problems.
Installation Names
==================
By default, `make install' installs the package's commands under
`/usr/local/bin', include files under `/usr/local/include', etc. You
can specify an installation prefix other than `/usr/local' by giving
`configure' the option `--prefix=PREFIX'.
You can specify separate installation prefixes for
architecture-specific files and architecture-independent files. If you
pass the option `--exec-prefix=PREFIX' to `configure', the package uses
PREFIX as the prefix for installing programs and libraries.
Documentation and other data files still use the regular prefix.
In addition, if you use an unusual directory layout you can give
options like `--bindir=DIR' to specify different values for particular
kinds of files. Run `configure --help' for a list of the directories
you can set and what kinds of files go in them.
If the package supports it, you can cause programs to be installed
with an extra prefix or suffix on their names by giving `configure' the
option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
Optional Features
=================
Some packages pay attention to `--enable-FEATURE' options to
`configure', where FEATURE indicates an optional part of the package.
They may also pay attention to `--with-PACKAGE' options, where PACKAGE
is something like `gnu-as' or `x' (for the X Window System). The
`README' should mention any `--enable-' and `--with-' options that the
package recognizes.
For packages that use the X Window System, `configure' can usually
find the X include and library files automatically, but if it doesn't,
you can use the `configure' options `--x-includes=DIR' and
`--x-libraries=DIR' to specify their locations.
Particular systems
==================
On HP-UX, the default C compiler is not ANSI C compatible. If GNU
CC is not installed, it is recommended to use the following options in
order to use an ANSI C compiler:
./configure CC="cc -Ae -D_XOPEN_SOURCE=500"
and if that doesn't work, install pre-built binaries of GCC for HP-UX.
On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
parse its `<wchar.h>' header file. The option `-nodtk' can be used as
a workaround. If GNU CC is not installed, it is therefore recommended
to try
./configure CC="cc"
and if that doesn't work, try
./configure CC="cc -nodtk"
On Solaris, don't put `/usr/ucb' early in your `PATH'. This
directory contains several dysfunctional programs; working variants of
these programs are available in `/usr/bin'. So, if you need `/usr/ucb'
in your `PATH', put it _after_ `/usr/bin'.
On Haiku, software installed for all users goes in `/boot/common',
not `/usr/local'. It is recommended to use the following options:
./configure --prefix=/boot/common
Specifying the System Type
==========================
There may be some features `configure' cannot figure out
automatically, but needs to determine by the type of machine the package
will run on. Usually, assuming the package is built to be run on the
_same_ architectures, `configure' can figure that out, but if it prints
a message saying it cannot guess the machine type, give it the
`--build=TYPE' option. TYPE can either be a short name for the system
type, such as `sun4', or a canonical name which has the form:
CPU-COMPANY-SYSTEM
where SYSTEM can have one of these forms:
OS
KERNEL-OS
See the file `config.sub' for the possible values of each field. If
`config.sub' isn't included in this package, then this package doesn't
need to know the machine type.
If you are _building_ compiler tools for cross-compiling, you should
use the option `--target=TYPE' to select the type of system they will
produce code for.
If you want to _use_ a cross compiler, that generates code for a
platform different from the build platform, you should specify the
"host" platform (i.e., that on which the generated programs will
eventually be run) with `--host=TYPE'.
Sharing Defaults
================
If you want to set default values for `configure' scripts to share,
you can create a site shell script called `config.site' that gives
default values for variables like `CC', `cache_file', and `prefix'.
`configure' looks for `PREFIX/share/config.site' if it exists, then
`PREFIX/etc/config.site' if it exists. Or, you can set the
`CONFIG_SITE' environment variable to the location of the site script.
A warning: not all `configure' scripts look for a site script.
Defining Variables
==================
Variables not defined in a site shell script can be set in the
environment passed to `configure'. However, some packages may run
configure again during the build, and the customized values of these
variables may be lost. In order to avoid this problem, you should set
them in the `configure' command line, using `VAR=value'. For example:
./configure CC=/usr/local2/bin/gcc
causes the specified `gcc' to be used as the C compiler (unless it is
overridden in the site shell script).
Unfortunately, this technique does not work for `CONFIG_SHELL' due to
an Autoconf bug. Until the bug is fixed you can use this workaround:
CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash
`configure' Invocation
======================
`configure' recognizes the following options to control how it
operates.
`--help'
`-h'
Print a summary of all of the options to `configure', and exit.
`--help=short'
`--help=recursive'
Print a summary of the options unique to this package's
`configure', and exit. The `short' variant lists options used
only in the top level, while the `recursive' variant lists options
also present in any nested packages.
`--version'
`-V'
Print the version of Autoconf used to generate the `configure'
script, and exit.
`--cache-file=FILE'
Enable the cache: use and save the results of the tests in FILE,
traditionally `config.cache'. FILE defaults to `/dev/null' to
disable caching.
`--config-cache'
`-C'
Alias for `--cache-file=config.cache'.
`--quiet'
`--silent'
`-q'
Do not print messages saying which checks are being made. To
suppress all normal output, redirect it to `/dev/null' (any error
messages will still be shown).
`--srcdir=DIR'
Look for the package's source code in directory DIR. Usually
`configure' can determine that directory automatically.
`--prefix=DIR'
Use DIR as the installation prefix. *Note Installation Names::
for more details, including other options available for fine-tuning
the installation locations.
`--no-create'
`-n'
Run the configure checks, but stop before creating any output
files.
`configure' also accepts some other, not widely useful, options. Run
`configure --help' for more details.

View file

@ -1,48 +0,0 @@
EXTRA_DIST=autogen.sh
SUBDIRS=src
INSTALLDIR=$(shell cd $(top_builddir) && pwd)/$(PACKAGE)-install
INSTALLDIR_WITH_PREFIX=$(INSTALLDIR)/$(prefix)
ZIPFILE=$(shell cd $(top_builddir) && pwd)/$(PACKAGE)-win32-$(VERSION).zip
ZIP_EXCLUDED=include
ISS_SCRIPT=msx264.iss
ISS_SCRIPT_PATH=$(shell cd $(top_srcdir) && pwd)/$(ISS_SCRIPT)
#path to Inno Setup 5 compiler
ISCC=/c/Program\ Files/Inno\ Setup\ 5/ISCC.exe
PACKAGE_WIN32_FILELIST=$(PACKAGE)-win32.filelist
setup.exe: zip
cd $(INSTALLDIR_WITH_PREFIX) && \
rm -f $(PACKAGE_WIN32_FILELIST) && \
for file in `find` ; do \
if ! test -d $$file ; then \
echo "Source: $$file; Destdir: {app}\\`dirname $$file`; Flags: ignoreversion" \
>> $(PACKAGE_WIN32_FILELIST) ;\
fi \
done
cp $(ISS_SCRIPT) $(INSTALLDIR_WITH_PREFIX)/.
cd $(INSTALLDIR_WITH_PREFIX) && \
$(ISCC) $(ISS_SCRIPT)
mv $(INSTALLDIR_WITH_PREFIX)/Output/setup.exe $(PACKAGE)-$(VERSION)-setup.exe
rm -rf $(INSTALLDIR_WITH_PREFIX)/Output
rm -f $(INSTALLDIR_WITH_PREFIX)/$(PACKAGE_WIN32_FILELIST)
rm -f $(INSTALLDIR_WITH_PREFIX)/$(ISS_SCRIPT)
zip:
rm -f $(ZIPFILE)
rm -rf $(INSTALLDIR)
mkdir -p $(INSTALLDIR)
make install DESTDIR=$(INSTALLDIR)
cp -f $(top_srcdir)/README $(INSTALLDIR_WITH_PREFIX)/.
cp -f $(top_srcdir)/COPYING $(INSTALLDIR_WITH_PREFIX)/.
cd $(INSTALLDIR)/$(prefix) && rm -rf $(ZIP_EXCLUDED) && \
zip -r $(ZIPFILE) *
clean-local:
-rm -rf $(PACKAGE)-install
-rm -f $(PACKAGE)-win32-$(VERSION).zip

View file

@ -1,8 +0,0 @@
Wednesday December 2, 2009: msx264-1.3.0
- use new official x264 support of multislicing (forked version no more required)
Friday July 4, 2009 : msx264-1.2.0
- modified to compile against new multisliced version of x264 to allow packetization-mode=0
Wednesday August 20, 2008: msx264-1.1.0
- compiled together with x264-snapshot-20080421-2245+multislicing-patch.tar.gz, allows packetization-mode=0

View file

@ -1,18 +0,0 @@
msx264 - a GPL plugin to bring video H264 encoding/decoding capabilities to mediastreamer2 applications.
It is based on ffmpeg for decoding and x264 for encoding.
It works with x264 version later to september 2009.
So:
* compile msx264 with ./configure && make && make install
A bit of history
****************
The multislicing feature of x264 is something that has been contributed several time, but never merged (why ?).
The linphone.org version of x264 was inspired by a patch submitted on x264-devel mailing list:
http://mailman.videolan.org/pipermail/x264-devel/2008-April/004427.html
http://download.savannah.gnu.org/releases/linphone/plugins/sources/x264-snapshot-20090704-linphone-org.tar.gz
This version is no more required since in august 2009, x264 team introduces new parameters
controlling slicing.

View file

@ -1,19 +0,0 @@
#!/bin/sh
AM_VERSION=1.10
if ! type aclocal-$AM_VERSION 1>/dev/null 2>&1; then
ACLOCAL=aclocal
AUTOMAKE=automake
else
ACLOCAL=aclocal-${AM_VERSION}
AUTOMAKE=automake-${AM_VERSION}
fi
echo "Generating build scripts in this mediastreamer plugin"
set -x
libtoolize --copy --force
$ACLOCAL
$AUTOMAKE --force-missing --add-missing --copy
autoconf

View file

@ -1,159 +0,0 @@
dnl Process this file with autoconf to produce a configure script.
AC_INIT([msx264],[1.3.0])
AM_INIT_AUTOMAKE([tar-ustar])
AC_CANONICAL_SYSTEM
AC_MSG_CHECKING([warning make an error on compilation])
AC_ARG_ENABLE(strict,
[ --enable-strict Enable error on compilation warning [default=yes]],
[wall_werror=$enableval],
[wall_werror=yes]
)
dnl Checks for programs.
AC_PROG_CC
AC_LIBTOOL_WIN32_DLL
AC_DISABLE_STATIC
AC_PROG_LIBTOOL
case $target_os in
*mingw*)
mingw_found=yes
;;
esac
AM_CONDITIONAL(BUILD_WIN32, test x$mingw_found = xyes)
AC_CONFIG_COMMANDS([libtool-hacking],[
if test "$mingw_found" = "yes" ; then
AC_MSG_NOTICE([Hacking libtool to work with mingw...])
sed -e 's/\*\" \$a_deplib \"\*/\*/' < ./libtool > libtool.tmp
cp -f ./libtool.tmp ./libtool
rm -f ./libtool.tmp
fi
],[mingw_found=$mingw_found])
CFLAGS="$CFLAGS -Wall"
dnl Checks for header files.
AC_HEADER_STDC
dnl Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST
AC_C_INLINE
AC_HEADER_TIME
AC_WORDS_BIGENDIAN
if test x$ac_cv_c_bigendian = xyes ; then
CFLAGS="$CFLAGS -D_BIGENDIAN"
fi
if test $GCC = yes && test $wall_werror = yes; then
CFLAGS="$CFLAGS -Werror "
fi
PKG_CHECK_MODULES(MEDIASTREAMER, mediastreamer >= 2.1.0)
PKG_CHECK_MODULES(X264, x264 >= 0.67.0)
dnl test for ffmpeg presence
PKG_CHECK_MODULES(LIBAVCODEC, [libavcodec >= 50.0.0 ],ffmpeg_found=yes , ffmpeg_found=no)
dnl workaround for debian...
PKG_CHECK_MODULES(LIBAVCODEC, [libavcodec >= 0d.50.0.0 ], ffmpeg_found=yes, ffmpeg_found=no)
if test x$ffmpeg_found = xno ; then
AC_MSG_ERROR([Could not find ffmpeg headers and library. This is mandatory for video support])
fi
PKG_CHECK_MODULES(LIBSWSCALE, [libswscale >= 0.7.0])
dnl check for new/old ffmpeg header file layout
CPPFLAGS_save=$CPPFLAGS
CPPFLAGS=$LIBAVCODEC_CFLAGS
AC_CHECK_HEADERS(libavcodec/avcodec.h)
CPPFLAGS=$CPPFLAGS_save
if test "$hacked_x264" = "yes" ; then
AC_MSG_NOTICE([Trying to compile with multislicing patched version of X264])
CFLAGS="$CFLAGS -DHACKED_X264"
fi
LDFLAGS="$LDFLAGS -rdynamic "
dnl define path of plugins:
PACKAGE_PLUGINS_DIR="\$(libdir)/mediastreamer/plugins"
AC_SUBST(PACKAGE_PLUGINS_DIR)
dnl ##################################################
dnl # Check for ESP Packager
dnl ##################################################
AC_PATH_PROG(EPM,epm,false)
AC_PATH_PROG(MKEPMLIST,mkepmlist,false)
AC_PATH_PROG(EPMINSTALL,epminstall,false)
AM_CONDITIONAL(WITH_EPM,test $EPM != false && test $MKEPMLIST != false && test $EPMINSTALL != false)
# Preferred packaging system, as per EPM terminology
case $target in
*-*-linux*)
if test -f /etc/debian_version ; then
EPM_PKG_EXT=deb
else
EPM_PKG_EXT=rpm
fi
;;
*-hp-hpux*)
EPM_PKG_EXT=depot.gz;;
*-dec-osf*)
EPM_PKG_EXT=setld;;
esac
AC_SUBST(EPM_PKG_EXT)
# System software User & Group names
case $target in
*-*-linux*)
SYS_USER=root
SYS_GROUP=root
;;
*-*-hpux*|*-dec-osf*)
SYS_USER=bin
SYS_GROUP=bin
;;
esac
AC_SUBST(SYS_USER)
AC_SUBST(SYS_GROUP)
# CPU Architecture
case $target_cpu in
i?86) ARCH=i386;;
*) ARCH=$target_cpu;;
esac
AC_SUBST(ARCH)
# Various other packaging variables, that can be over-ridden ad `make
# package' time
SUMMARY="A H264 codec mediastreamer plugin"
AC_SUBST(SUMMARY)
PACKAGER=anonymous
AC_SUBST(PACKAGER)
LICENSE=GPL
AC_SUBST(LICENSE)
VENDOR=Linphone
AC_SUBST(VENDOR)
RELEASE=1
AC_SUBST(RELEASE)
AC_OUTPUT(
Makefile
src/Makefile
msx264.iss
)

View file

@ -1,34 +0,0 @@
; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
[Setup]
AppName=msx264
AppVerName=msx264 version @VERSION@ , an H.264 plugin for linphone.
AppPublisher=linphone.org
AppPublisherURL=http://www.linphone.org
AppSupportURL=http://www.linphone.org
AppUpdatesURL=http://www.linphone.org
DefaultDirName={pf}\Linphone
DefaultGroupName=Linphone
LicenseFile=COPYING
InfoBeforeFile=README
OutputBaseFilename=setup
Compression=lzma
SolidCompression=yes
[Languages]
Name: "english"; MessagesFile: "compiler:Default.isl"
[Tasks]
;Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
[Files]
#include "msx264-win32.filelist"
[Icons]
;Name: "{group}\Linphone"; Filename: "{app}\linphone-wx.exe" ; WorkingDir: "{app}"
;Name: "{userdesktop}\Linphone"; Filename: "{app}\linphone-wx.exe"; WorkingDir: "{app}" ; Tasks: desktopicon
[Run]
;Filename: "{app}\linphone-wx.exe"; Description: "{cm:LaunchProgram,Linphone}"; WorkingDir: "{app}" ; Flags: nowait postinstall skipifsilent

View file

@ -1,27 +0,0 @@
pluginsdir=$(PACKAGE_PLUGINS_DIR)
plugins_LTLIBRARIES=libmsx264.la
libmsx264_la_SOURCES=msx264.c
libmsx264_la_LIBADD=\
$(LIBAVCODEC_LIBS) \
$(LIBSWSCALE_LIBS) \
$(MEDIASTREAMER_LIBS) \
$(X264_LIBS)
libmsx264_la_LDFLAGS=-no-undefined
AM_CFLAGS= $(LIBAVCODEC_CFLAGS) \
$(LIBSWSCALE_CFLAGS) \
$(MEDIASTREAMER_CFLAGS)\
$(X264_CFLAGS)
if BUILD_WIN32
#hack for mingw to force plugins dll to be where we want them to be.
install-data-hook:
mv $(DESTDIR)$(pluginsdir)/../bin/*.dll \
$(DESTDIR)$(pluginsdir)/.
rm -f $(DESTDIR)$(pluginsdir)/*.la
rm -f $(DESTDIR)$(pluginsdir)/*.dll.a
endif

View file

@ -1,563 +0,0 @@
/*
mediastreamer2 x264 plugin
Copyright (C) 2006 Simon MORLAT (simon.morlat@linphone.org)
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#include "mediastreamer2/msfilter.h"
#include "mediastreamer2/msticker.h"
#include "mediastreamer2/msvideo.h"
#include "mediastreamer2/rfc3984.h"
#include "ortp/b64.h"
#include <x264.h>
#ifdef HAVE_LIBAVCODEC_AVCODEC_H
#include <libavcodec/avcodec.h>
#include <libswscale/swscale.h>
#else
#include <ffmpeg/avcodec.h>
#include <ffmpeg/swscale.h>
#endif
#define REMOVE_PREVENTING_BYTES 1
typedef struct _EncData{
x264_t *enc;
MSVideoSize vsize;
int bitrate;
float fps;
int mode;
uint64_t framenum;
Rfc3984Context packer;
int keyframe_int;
bool_t generate_keyframe;
}EncData;
static void enc_init(MSFilter *f){
EncData *d=ms_new(EncData,1);
d->enc=NULL;
d->bitrate=384000;
d->vsize=MS_VIDEO_SIZE_CIF;
d->fps=30;
d->keyframe_int=10; /*10 seconds */
d->mode=0;
d->framenum=0;
d->generate_keyframe=FALSE;
f->data=d;
}
static void enc_uninit(MSFilter *f){
EncData *d=(EncData*)f->data;
ms_free(d);
}
static void enc_preprocess(MSFilter *f){
EncData *d=(EncData*)f->data;
x264_param_t params;
rfc3984_init(&d->packer);
rfc3984_set_mode(&d->packer,d->mode);
rfc3984_enable_stap_a(&d->packer,FALSE);
x264_param_default(&params);
params.i_threads=1;
params.i_sync_lookahead=0;
params.i_width=d->vsize.width;
params.i_height=d->vsize.height;
params.i_fps_num=(int)d->fps;
params.i_fps_den=1;
params.i_slice_max_size=ms_get_payload_max_size()-100; /*-100 security margin*/
/*params.i_level_idc=30;*/
params.rc.i_rc_method = X264_RC_ABR;
params.rc.i_bitrate=(int)( ( ((float)d->bitrate)*0.8)/1000.0);
params.rc.f_rate_tolerance=0.1;
params.rc.i_vbv_max_bitrate=(int) (((float)d->bitrate)*0.9/1000.0);
params.rc.i_vbv_buffer_size=params.rc.i_vbv_max_bitrate;
params.rc.f_vbv_buffer_init=0.5;
params.rc.i_lookahead=0;
/*enable this by config ?*/
/*
params.i_keyint_max = (int)d->fps*d->keyframe_int;
params.i_keyint_min = (int)d->fps;
*/
params.b_repeat_headers=1;
params.b_cabac=0;//disable cabac to be baseline
params.i_bframe=0;/*no B frames*/
d->enc=x264_encoder_open(&params);
if (d->enc==NULL) ms_error("Fail to create x264 encoder.");
d->framenum=0;
}
static void x264_nals_to_msgb(x264_nal_t *xnals, int num_nals, MSQueue * nalus){
int i;
mblk_t *m;
/*int bytes;*/
for (i=0;i<num_nals;++i){
m=allocb(xnals[i].i_payload+10,0);
memcpy(m->b_wptr,xnals[i].p_payload+4,xnals[i].i_payload-4);
m->b_wptr+=xnals[i].i_payload-4;
if (xnals[i].i_type==7) {
ms_message("A SPS is being sent.");
}else if (xnals[i].i_type==8) {
ms_message("A PPS is being sent.");
}
ms_queue_put(nalus,m);
}
}
static void enc_process(MSFilter *f){
EncData *d=(EncData*)f->data;
uint32_t ts=f->ticker->time*90LL;
mblk_t *im;
MSPicture pic;
MSQueue nalus;
ms_queue_init(&nalus);
while((im=ms_queue_get(f->inputs[0]))!=NULL){
if (yuv_buf_init_from_mblk(&pic,im)==0){
x264_picture_t xpic;
x264_picture_t oxpic;
x264_nal_t *xnals=NULL;
int num_nals=0;
/*send I frame 2 seconds and 4 seconds after the beginning */
if (d->framenum==(int)d->fps*2 || d->framenum==(int)d->fps*4)
d->generate_keyframe=TRUE;
if (d->generate_keyframe){
xpic.i_type=X264_TYPE_IDR;
d->generate_keyframe=FALSE;
}else xpic.i_type=X264_TYPE_AUTO;
xpic.i_qpplus1=0;
xpic.i_pts=d->framenum;
xpic.param=NULL;
xpic.img.i_csp=X264_CSP_I420;
xpic.img.i_plane=3;
xpic.img.i_stride[0]=pic.strides[0];
xpic.img.i_stride[1]=pic.strides[1];
xpic.img.i_stride[2]=pic.strides[2];
xpic.img.i_stride[3]=0;
xpic.img.plane[0]=pic.planes[0];
xpic.img.plane[1]=pic.planes[1];
xpic.img.plane[2]=pic.planes[2];
xpic.img.plane[3]=0;
if (x264_encoder_encode(d->enc,&xnals,&num_nals,&xpic,&oxpic)>=0){
x264_nals_to_msgb(xnals,num_nals,&nalus);
rfc3984_pack(&d->packer,&nalus,f->outputs[0],ts);
d->framenum++;
}else{
ms_error("x264_encoder_encode() error.");
}
}
freemsg(im);
}
}
static void enc_postprocess(MSFilter *f){
EncData *d=(EncData*)f->data;
rfc3984_uninit(&d->packer);
if (d->enc!=NULL){
x264_encoder_close(d->enc);
d->enc=NULL;
}
}
static int enc_set_br(MSFilter *f, void *arg){
EncData *d=(EncData*)f->data;
d->bitrate=*(int*)arg;
if (d->bitrate>=1024000){
d->vsize=MS_VIDEO_SIZE_VGA;
d->fps=25;
}else if (d->bitrate>=512000){
d->vsize=MS_VIDEO_SIZE_VGA;
d->fps=15;
}else if (d->bitrate>=384000){
d->vsize=MS_VIDEO_SIZE_CIF;
d->fps=30;
}else if (d->bitrate>=256000){
d->vsize=MS_VIDEO_SIZE_CIF;
d->fps=15;
}else if (d->bitrate>=128000){
d->vsize=MS_VIDEO_SIZE_CIF;
d->fps=15;
}else if (d->bitrate>=64000){
d->vsize=MS_VIDEO_SIZE_CIF;
d->fps=10;
}else if (d->bitrate>=32000){
d->vsize=MS_VIDEO_SIZE_QCIF;
d->fps=10;
}else{
d->vsize=MS_VIDEO_SIZE_QCIF;
d->fps=5;
}
ms_message("bitrate set to %i",d->bitrate);
return 0;
}
static int enc_set_fps(MSFilter *f, void *arg){
EncData *d=(EncData*)f->data;
d->fps=*(float*)arg;
return 0;
}
static int enc_get_fps(MSFilter *f, void *arg){
EncData *d=(EncData*)f->data;
*(float*)arg=d->fps;
return 0;
}
static int enc_get_vsize(MSFilter *f, void *arg){
EncData *d=(EncData*)f->data;
*(MSVideoSize*)arg=d->vsize;
return 0;
}
static int enc_set_vsize(MSFilter *f, void *arg){
EncData *d=(EncData*)f->data;
d->vsize=*(MSVideoSize*)arg;
return 0;
}
static int enc_add_fmtp(MSFilter *f, void *arg){
EncData *d=(EncData*)f->data;
const char *fmtp=(const char *)arg;
char value[12];
if (fmtp_get_value(fmtp,"packetization-mode",value,sizeof(value))){
d->mode=atoi(value);
ms_message("packetization-mode set to %i",d->mode);
}
return 0;
}
static int enc_req_vfu(MSFilter *f, void *arg){
EncData *d=(EncData*)f->data;
d->generate_keyframe=TRUE;
return 0;
}
static MSFilterMethod enc_methods[]={
{ MS_FILTER_SET_FPS , enc_set_fps },
{ MS_FILTER_SET_BITRATE , enc_set_br },
{ MS_FILTER_GET_FPS , enc_get_fps },
{ MS_FILTER_GET_VIDEO_SIZE, enc_get_vsize },
{ MS_FILTER_SET_VIDEO_SIZE, enc_set_vsize },
{ MS_FILTER_ADD_FMTP , enc_add_fmtp },
{ MS_FILTER_REQ_VFU , enc_req_vfu },
{ 0 , NULL }
};
static MSFilterDesc x264_enc_desc={
.id=MS_FILTER_PLUGIN_ID,
.name="MSX264Enc",
.text="A H264 encoder based on x264 project (with multislicing enabled)",
.category=MS_FILTER_ENCODER,
.enc_fmt="H264",
.ninputs=1,
.noutputs=1,
.init=enc_init,
.preprocess=enc_preprocess,
.process=enc_process,
.postprocess=enc_postprocess,
.uninit=enc_uninit,
.methods=enc_methods
};
typedef struct _DecData{
mblk_t *yuv_msg;
mblk_t *sps,*pps;
Rfc3984Context unpacker;
MSPicture outbuf;
struct SwsContext *sws_ctx;
AVCodecContext av_context;
unsigned int packet_num;
uint8_t *bitstream;
int bitstream_size;
}DecData;
static void ffmpeg_init(){
static bool_t done=FALSE;
if (!done){
avcodec_init();
avcodec_register_all();
done=TRUE;
}
}
static void dec_open(DecData *d){
AVCodec *codec;
int error;
codec=avcodec_find_decoder(CODEC_ID_H264);
if (codec==NULL) ms_fatal("Could not find H264 decoder in ffmpeg.");
avcodec_get_context_defaults(&d->av_context);
error=avcodec_open(&d->av_context,codec);
if (error!=0){
ms_fatal("avcodec_open() failed.");
}
}
static void dec_init(MSFilter *f){
DecData *d=(DecData*)ms_new(DecData,1);
ffmpeg_init();
d->yuv_msg=NULL;
d->sps=NULL;
d->pps=NULL;
d->sws_ctx=NULL;
rfc3984_init(&d->unpacker);
d->packet_num=0;
dec_open(d);
d->outbuf.w=0;
d->outbuf.h=0;
d->bitstream_size=65536;
d->bitstream=ms_malloc0(d->bitstream_size);
f->data=d;
}
static void dec_reinit(DecData *d){
avcodec_close(&d->av_context);
dec_open(d);
}
static void dec_uninit(MSFilter *f){
DecData *d=(DecData*)f->data;
rfc3984_uninit(&d->unpacker);
avcodec_close(&d->av_context);
if (d->yuv_msg) freemsg(d->yuv_msg);
if (d->sps) freemsg(d->sps);
if (d->pps) freemsg(d->pps);
ms_free(d->bitstream);
ms_free(d);
}
static mblk_t *get_as_yuvmsg(MSFilter *f, DecData *s, AVFrame *orig){
AVCodecContext *ctx=&s->av_context;
if (s->outbuf.w!=ctx->width || s->outbuf.h!=ctx->height){
if (s->sws_ctx!=NULL){
sws_freeContext(s->sws_ctx);
s->sws_ctx=NULL;
freemsg(s->yuv_msg);
s->yuv_msg=NULL;
}
ms_message("Getting yuv picture of %ix%i",ctx->width,ctx->height);
s->yuv_msg=yuv_buf_alloc(&s->outbuf,ctx->width,ctx->height);
s->outbuf.w=ctx->width;
s->outbuf.h=ctx->height;
s->sws_ctx=sws_getContext(ctx->width,ctx->height,ctx->pix_fmt,
ctx->width,ctx->height,PIX_FMT_YUV420P,SWS_FAST_BILINEAR,
NULL, NULL, NULL);
}
if (sws_scale(s->sws_ctx,orig->data,orig->linesize, 0,
ctx->height, s->outbuf.planes, s->outbuf.strides)<0){
ms_error("%s: error in sws_scale().",f->desc->name);
}
return dupmsg(s->yuv_msg);
}
static void update_sps(DecData *d, mblk_t *sps){
if (d->sps)
freemsg(d->sps);
d->sps=dupb(sps);
}
static void update_pps(DecData *d, mblk_t *pps){
if (d->pps)
freemsg(d->pps);
if (pps) d->pps=dupb(pps);
else d->pps=NULL;
}
static bool_t check_sps_pps_change(DecData *d, mblk_t *sps, mblk_t *pps){
bool_t ret1=FALSE,ret2=FALSE;
if (d->sps){
if (sps){
ret1=(msgdsize(sps)!=msgdsize(d->sps)) || (memcmp(d->sps->b_rptr,sps->b_rptr,msgdsize(sps))!=0);
if (ret1) {
update_sps(d,sps);
ms_message("SPS changed !");
update_pps(d,NULL);
}
}
}else if (sps) {
ms_message("Receiving first SPS");
update_sps(d,sps);
}
if (d->pps){
if (pps){
ret2=(msgdsize(pps)!=msgdsize(d->pps)) || (memcmp(d->pps->b_rptr,pps->b_rptr,msgdsize(pps))!=0);
if (ret2) {
update_sps(d,pps);
ms_message("PPS changed ! %i,%i",msgdsize(pps),msgdsize(d->pps));
}
}
}else if (pps) {
ms_message("Receiving first PPS");
update_pps(d,pps);
}
return ret1 || ret2;
}
static void enlarge_bitstream(DecData *d, int new_size){
d->bitstream_size=new_size;
d->bitstream=ms_realloc(d->bitstream,d->bitstream_size);
}
static int nalusToFrame(DecData *d, MSQueue *naluq, bool_t *new_sps_pps){
mblk_t *im;
uint8_t *dst=d->bitstream,*src,*end;
int nal_len;
bool_t start_picture=TRUE;
uint8_t nalu_type;
*new_sps_pps=FALSE;
end=d->bitstream+d->bitstream_size;
while((im=ms_queue_get(naluq))!=NULL){
src=im->b_rptr;
nal_len=im->b_wptr-src;
if (dst+nal_len+100>end){
int pos=dst-d->bitstream;
enlarge_bitstream(d, d->bitstream_size+nal_len+100);
dst=d->bitstream+pos;
end=d->bitstream+d->bitstream_size;
}
nalu_type=(*src) & ((1<<5)-1);
if (nalu_type==7)
*new_sps_pps=check_sps_pps_change(d,im,NULL) || *new_sps_pps;
if (nalu_type==8)
*new_sps_pps=check_sps_pps_change(d,NULL,im) || *new_sps_pps;
if (start_picture || nalu_type==7/*SPS*/ || nalu_type==8/*PPS*/ ){
*dst++=0;
start_picture=FALSE;
}
/*prepend nal marker*/
*dst++=0;
*dst++=0;
*dst++=1;
*dst++=*src++;
while(src<(im->b_wptr-3)){
if (src[0]==0 && src[1]==0 && src[2]<3){
*dst++=0;
*dst++=0;
*dst++=3;
src+=2;
}
*dst++=*src++;
}
*dst++=*src++;
*dst++=*src++;
*dst++=*src++;
freemsg(im);
}
return dst-d->bitstream;
}
static void dec_process(MSFilter *f){
DecData *d=(DecData*)f->data;
mblk_t *im;
MSQueue nalus;
AVFrame orig;
ms_queue_init(&nalus);
while((im=ms_queue_get(f->inputs[0]))!=NULL){
/*push the sps/pps given in sprop-parameter-sets if any*/
if (d->packet_num==0 && d->sps && d->pps){
mblk_set_timestamp_info(d->sps,mblk_get_timestamp_info(im));
mblk_set_timestamp_info(d->pps,mblk_get_timestamp_info(im));
rfc3984_unpack(&d->unpacker,d->sps,&nalus);
rfc3984_unpack(&d->unpacker,d->pps,&nalus);
d->sps=NULL;
d->pps=NULL;
}
rfc3984_unpack(&d->unpacker,im,&nalus);
if (!ms_queue_empty(&nalus)){
int size;
uint8_t *p,*end;
bool_t need_reinit=FALSE;
size=nalusToFrame(d,&nalus,&need_reinit);
if (need_reinit)
dec_reinit(d);
p=d->bitstream;
end=d->bitstream+size;
while (end-p>0) {
int len;
int got_picture=0;
AVPacket pkt;
avcodec_get_frame_defaults(&orig);
av_init_packet(&pkt);
pkt.data = p;
pkt.size = end-p;
len=avcodec_decode_video2(&d->av_context,&orig,&got_picture,&pkt);
if (len<=0) {
ms_warning("ms_AVdecoder_process: error %i.",len);
break;
}
if (got_picture) {
ms_queue_put(f->outputs[0],get_as_yuvmsg(f,d,&orig));
}
p+=len;
}
}
d->packet_num++;
}
}
static int dec_add_fmtp(MSFilter *f, void *arg){
DecData *d=(DecData*)f->data;
const char *fmtp=(const char *)arg;
char value[256];
if (fmtp_get_value(fmtp,"sprop-parameter-sets",value,sizeof(value))){
char * b64_sps=value;
char * b64_pps=strchr(value,',');
if (b64_pps){
*b64_pps='\0';
++b64_pps;
ms_message("Got sprop-parameter-sets : sps=%s , pps=%s",b64_sps,b64_pps);
d->sps=allocb(sizeof(value),0);
d->sps->b_wptr+=b64_decode(b64_sps,strlen(b64_sps),d->sps->b_wptr,sizeof(value));
d->pps=allocb(sizeof(value),0);
d->pps->b_wptr+=b64_decode(b64_pps,strlen(b64_pps),d->pps->b_wptr,sizeof(value));
}
}
return 0;
}
static MSFilterMethod h264_dec_methods[]={
{ MS_FILTER_ADD_FMTP , dec_add_fmtp },
{ 0 , NULL }
};
static MSFilterDesc h264_dec_desc={
.id=MS_FILTER_PLUGIN_ID,
.name="MSH264Dec",
.text="A H264 decoder based on ffmpeg project.",
.category=MS_FILTER_DECODER,
.enc_fmt="H264",
.ninputs=1,
.noutputs=1,
.init=dec_init,
.process=dec_process,
.uninit=dec_uninit,
.methods=h264_dec_methods
};
void libmsx264_init(void){
ms_filter_register(&x264_enc_desc);
ms_filter_register(&h264_dec_desc);
}

View file

@ -1,8 +0,0 @@
Makefile.in
Makefile
.libs
.deps
*.la
*.lo
alldescs.h
filterdescs.txt

View file

@ -1,188 +0,0 @@
EXTRA_DIST= winsnd2.c winsnd.c winvideo.c \
winvideods.c wincevideods.c dxfilter.h dxfilter.cpp \
msfileplayer_win.c msfilerec_win.c winsndds.cpp nowebcamCIF.jpg winsnd3.c vfw-missing.h \
winvideo2.c
BUILT_SOURCES=alldescs.h
CLEANFILES=alldescs.h filterdescs.txt
INCLUDES=-I$(top_srcdir)/include/
lib_LTLIBRARIES=libmediastreamer.la
libmediastreamer_la_SOURCES= mscommon.c \
msfilter.c \
msqueue.c \
msticker.c \
alaw.c \
ulaw.c \
mssndcard.c \
msrtp.c \
dtmfgen.c \
ice.c \
tee.c \
msconf.c \
msjoin.c \
g711common.h \
msvolume.c \
mswebcam.c \
mtu.c \
void.c \
dsptools.c \
kiss_fft.c \
_kiss_fft_guts.h \
kiss_fft.h \
kiss_fftr.c \
kiss_fftr.h \
equalizer.c
#dummy c++ file to force libtool to use c++ linking (because of msdscap-mingw.cc)
nodist_EXTRA_libmediastreamer_la_SOURCES = dummy.cxx
libmediastreamer_la_SOURCES+=audiostream.c
if BUILD_SPEEX
libmediastreamer_la_SOURCES+=msspeex.c speexec.c
endif
if BUILD_GSM
libmediastreamer_la_SOURCES+=gsm.c
endif
if BUILD_WIN32
libmediastreamer_la_SOURCES+= winsnd3.c \
msfileplayer_win.c msfilerec_win.c
else
libmediastreamer_la_SOURCES+= msfileplayer.c \
msfilerec.c
endif
if BUILD_RESAMPLE
libmediastreamer_la_SOURCES+=msresample.c
endif
if BUILD_ALSA
libmediastreamer_la_SOURCES+=alsa.c
endif
if BUILD_OSS
libmediastreamer_la_SOURCES+=oss.c
endif
if BUILD_ARTS
libmediastreamer_la_SOURCES+=arts.c
endif
if BUILD_PORTAUDIO
libmediastreamer_la_SOURCES+=pasnd.c
endif
if BUILD_MACSND
libmediastreamer_la_SOURCES+=macsnd.c
endif
if BUILD_MACAQSND
libmediastreamer_la_SOURCES+=aqsnd.c
endif
if BUILD_VIDEO
if BUILD_MACOSX
libmediastreamer_la_SOURCES+=msv4m.m
endif
if BUILD_V4L
libmediastreamer_la_SOURCES+=msv4l.c msv4l2.c
endif
if BUILD_WIN32
libmediastreamer_la_SOURCES+=msdscap-mingw.cc
endif
if BUILD_THEORA
libmediastreamer_la_SOURCES+=theora.c
endif
libmediastreamer_la_SOURCES+= videoenc.c \
videodec.c \
pixconv.c \
sizeconv.c \
rfc2429.h \
nowebcam.c nowebcam.h \
videoout.c \
msvideo.c \
rfc3984.c \
mire.c \
swscale.h ffmpeg-priv.h
libmediastreamer_la_SOURCES+=videostream.c
endif
alldescs.h: Makefile.am $(libmediastreamer_la_SOURCES)
builddir=`pwd` && cd $(srcdir) && \
awk 'BEGIN { FS="[()]" ; }; /^\t*MS_FILTER_DESC_EXPORT/{ printf("%s\n", $$2) } ' > $$builddir/filterdescs.txt $(libmediastreamer_la_SOURCES) && \
awk 'BEGIN { print("#include \"mediastreamer2/msfilter.h\"\n") } { printf("extern MSFilterDesc %s;\n",$$1) } ' $$builddir/filterdescs.txt > $$builddir/$@ && \
awk 'BEGIN { print("MSFilterDesc * ms_filter_descs[]={") } { printf("&%s,\n",$$1) } END{ print("NULL\n};\n") } ' $$builddir/filterdescs.txt >> $$builddir/$@
libmediastreamer_la_LIBADD= $(ORTP_LIBS) \
$(PORTAUDIO_LIBS) \
$(ALSA_LIBS) \
$(ARTS_LIBS) \
$(SPEEX_LIBS) \
$(GSM_LIBS) \
$(LIBV4L1_LIBS) \
$(LIBV4L2_LIBS)
if !BUILD_WIN32
libmediastreamer_la_LDFLAGS=-rdynamic
else
libmediastreamer_la_LDFLAGS=-no-undefined
endif
if BUILD_VIDEO
libmediastreamer_la_LIBADD+= $(VIDEO_LIBS) \
$(THEORA_LIBS)
if BUILD_WIN32
libmediastreamer_la_LIBADD+= -lole32 \
-loleaut32\
-lwinmm \
-luuid
endif
endif
if BUILD_WIN32_WCE
libmediastreamer_la_LIBADD+= -lmmtimer
endif
AM_CFLAGS= -I$(top_srcdir) \
$(ORTP_CFLAGS) \
$(SPEEX_CFLAGS) \
$(GSM_CFLAGS) \
$(STRICT_OPTIONS)
AM_CXXFLAGS= -I$(top_srcdir) \
$(ORTP_CFLAGS) \
$(STRICT_OPTIONS)
if BUILD_VIDEO
AM_CFLAGS+=$(VIDEO_CFLAGS)
endif
AM_OBJCFLAGS=$(AM_CFLAGS)
imgdir=$(datadir)/images/
img_DATA=nowebcamCIF.jpg

Some files were not shown because too many files have changed in this diff Show more