From Alejandro Vaquero:

The "listen_rtp" plugin that allows to listen audio RTP 
conversations.

    The plugin is integrated to the "Voip Calls" feature. There is a new 
"listen" button in the "Voip Calls" that once the calls are selected and 
the "listen" is clicked, a new window will open. In this window you can 
change the simulated jitter buffer to be used for decoding the RTP 
packets. In this first implementation, only a static jitter buffer can 
be simulated. Then pressing "decode" will decode all the RTP and 
generate the graphical view of the audio channels. From there you can 
select up to two channels at the same time (to be played in the left and 
right channels) and then play, pause, stop,etc.....ok, the attached 
screenshot it is self explanatory (hopefully).
    The only codecs available from now are G711u and G711a law.

    The PortAudio (www.portaudio.com) library is used to play audio. 
This is an open source cross-platform Audio library. I have tested this 
on Windows XP  and in a linux FC4.

NOTE: only the plugin soure files checked in at this time.

svn path=/trunk/; revision=18588
This commit is contained in:
Anders Broman 2006-06-27 21:44:07 +00:00
parent 93f7312e1d
commit 40cbc01b87
13 changed files with 2162 additions and 0 deletions

View File

@ -0,0 +1,5 @@
$Id$
Author:
Alejandro Vaquero <alejandrovaquero [AT] yahoo.com>

View File

@ -0,0 +1,54 @@
# Makefile.am
# Automake file for listen_rtp Ethereal plugin
#
# $Id$
#
# Ethereal - Network traffic analyzer
# By Gerald Combs <gerald@ethereal.com>
# Copyright 1998 Gerald Combs
#
# 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.
#
INCLUDES = -I$(top_srcdir) @PORTAUDIO_INCLUDES@
plugindir = @plugindir@
plugin_LTLIBRARIES = listen_rtp.la
listen_rtp_la_SOURCES = \
listen_rtp_plugin.c \
main_listen_rtp.c \
main_listen_rtp.h \
codecs/G711a/G711adecode.c codecs/G711a/G711adecode.h \
codecs/G711u/G711udecode.c codecs/G711u/G711udecode.h
listen_rtp_la_LDFLAGS = -module -avoid-version
listen_rtp_la_LIBADD = @PLUGIN_LIBS@ @PORTAUDIO_LIBS@
# Libs must be cleared, or else libtool won't create a shared module.
# If your module needs to be linked against any particular libraries,
# add them here.
LIBS =
CLEANFILES = \
listen_rtp \
*~
MAINTAINERCLEANFILES = \
Makefile.in
EXTRA_DIST = \
Makefile.nmake

View File

@ -0,0 +1,53 @@
#
# $Id$
#
include ..\..\config.nmake
include <win32.mak>
PA_CFLAGS=/I$(PORTAUDIO_DIR)\pa_common
WIN_LIBS=winmm.lib
############### no need to modify below this line #########
CFLAGS=/DHAVE_CONFIG_H /I../.. /I../../wiretap $(GTK2_CFLAGS) $(GLIB_CFLAGS) \
/I$(PCAP_DIR)\include -D_U_="" $(LOCAL_CFLAGS) $(PA_CFLAGS)
PACFLAGS = -c /Zi /W1 /Od $(PA_CFLAGS)
.c.obj::
$(CC) $(CFLAGS) -Fdlisten_rtp.pdb -c $<
LDFLAGS = /NOLOGO /INCREMENTAL:no /MACHINE:I386 $(LOCAL_LDFLAGS)
!IFDEF ENABLE_LIBWIRESHARK
LINK_PLUGIN_WITH=..\..\epan\libwireshark.lib
CFLAGS=/DHAVE_WIN32_LIBWIRESHARK_LIB /D_NEED_VAR_IMPORT_ $(CFLAGS)
OBJECTS=listen_rtp_plugin.obj main_listen_rtp.obj pa_lib.obj pa_win_wmme.obj \
G711udecode.obj G711adecode.obj
listen_rtp.dll listen_rtp.exp listen_rtp.lib : $(OBJECTS) $(LINK_PLUGIN_WITH)
link -dll /out:listen_rtp.dll $(LDFLAGS) $(OBJECTS) $(LINK_PLUGIN_WITH) \
$(GLIB_LIBS) $(GTK2_LIBS) $(WIN_LIBS)
!ENDIF
pa_lib.obj: $(PORTAUDIO_DIR)\pa_common\pa_lib.c
$(CC) $(PACFLAGS) $(PORTAUDIO_DIR)\pa_common\pa_lib.c -o $@
pa_win_wmme.obj: $(PORTAUDIO_DIR)\pa_win_wmme\pa_win_wmme.c
$(CC) $(PACFLAGS) $(PORTAUDIO_DIR)\pa_win_wmme\pa_win_wmme.c -o $@
G711adecode.obj: codecs\G711a\G711adecode.c codecs\G711a\G711adecode.h codecs\G711a\G711atable.h
$(CC) $(CFLAGS) -c /Zi /W1 /Od codecs\G711a\G711adecode.c -o $@
G711udecode.obj: codecs\G711u\G711udecode.c codecs\G711u\G711udecode.h codecs\G711u\G711utable.h
$(CC) $(CFLAGS) -c /Zi /W1 /Od codecs\G711u\G711udecode.c -o $@
clean:
rm -f $(OBJECTS) listen_rtp.dll listen_rtp.exp listen_rtp.lib *.pdb
distclean: clean
maintainer-clean: distclean

1
plugins/listen_rtp/NEWS Normal file
View File

@ -0,0 +1 @@
$Id$

View File

@ -0,0 +1,18 @@
#include <glib.h>
#include "G711adecode.h"
#include "G711atable.h"
int
decodeG711a(void *input, int inputSizeBytes, void *output, int *outputSizeBytes)
{
guint8 *dataIn = (guint8 *)input;
gint16 *dataOut = (gint16 *)output;
int i;
for (i=0; i<inputSizeBytes; i++)
{
dataOut[i] = alaw_exp_table[dataIn[i]];
}
*outputSizeBytes = inputSizeBytes * 2;
return 0;
}

View File

@ -0,0 +1,3 @@
decodeG711a(void *input, int inputSizeBytes, void *output, int *outputSizeBytes);

View File

@ -0,0 +1,36 @@
gint16 alaw_exp_table[256] = {
-5504, -5248, -6016, -5760, -4480, -4224, -4992, -4736,
-7552, -7296, -8064, -7808, -6528, -6272, -7040, -6784,
-2752, -2624, -3008, -2880, -2240, -2112, -2496, -2368,
-3776, -3648, -4032, -3904, -3264, -3136, -3520, -3392,
-22016,-20992,-24064,-23040,-17920,-16896,-19968,-18944,
-30208,-29184,-32256,-31232,-26112,-25088,-28160,-27136,
-11008,-10496,-12032,-11520, -8960, -8448, -9984, -9472,
-15104,-14592,-16128,-15616,-13056,-12544,-14080,-13568,
-344, -328, -376, -360, -280, -264, -312, -296,
-472, -456, -504, -488, -408, -392, -440, -424,
-88, -72, -120, -104, -24, -8, -56, -40,
-216, -200, -248, -232, -152, -136, -184, -168,
-1376, -1312, -1504, -1440, -1120, -1056, -1248, -1184,
-1888, -1824, -2016, -1952, -1632, -1568, -1760, -1696,
-688, -656, -752, -720, -560, -528, -624, -592,
-944, -912, -1008, -976, -816, -784, -880, -848,
5504, 5248, 6016, 5760, 4480, 4224, 4992, 4736,
7552, 7296, 8064, 7808, 6528, 6272, 7040, 6784,
2752, 2624, 3008, 2880, 2240, 2112, 2496, 2368,
3776, 3648, 4032, 3904, 3264, 3136, 3520, 3392,
22016, 20992, 24064, 23040, 17920, 16896, 19968, 18944,
30208, 29184, 32256, 31232, 26112, 25088, 28160, 27136,
11008, 10496, 12032, 11520, 8960, 8448, 9984, 9472,
15104, 14592, 16128, 15616, 13056, 12544, 14080, 13568,
344, 328, 376, 360, 280, 264, 312, 296,
472, 456, 504, 488, 408, 392, 440, 424,
88, 72, 120, 104, 24, 8, 56, 40,
216, 200, 248, 232, 152, 136, 184, 168,
1376, 1312, 1504, 1440, 1120, 1056, 1248, 1184,
1888, 1824, 2016, 1952, 1632, 1568, 1760, 1696,
688, 656, 752, 720, 560, 528, 624, 592,
944, 912, 1008, 976, 816, 784, 880, 848};

View File

@ -0,0 +1,18 @@
#include <glib.h>
#include "G711udecode.h"
#include "G711utable.h"
int
decodeG711u(void *input, int inputSizeBytes, void *output, int *outputSizeBytes)
{
guint8 *dataIn = (guint8 *)input;
gint16 *dataOut = (gint16 *)output;
int i;
for (i=0; i<inputSizeBytes; i++)
{
dataOut[i] = ulaw_exp_table[dataIn[i]];
}
*outputSizeBytes = inputSizeBytes * 2;
return 0;
}

View File

@ -0,0 +1,3 @@
decodeG711u(void *input, int inputSizeBytes, void *output, int *outputSizeBytes);

View File

@ -0,0 +1,36 @@
gint16 ulaw_exp_table[256] = {
-32124,-31100,-30076,-29052,-28028,-27004,-25980,-24956,
-23932,-22908,-21884,-20860,-19836,-18812,-17788,-16764,
-15996,-15484,-14972,-14460,-13948,-13436,-12924,-12412,
-11900,-11388,-10876,-10364, -9852, -9340, -8828, -8316,
-7932, -7676, -7420, -7164, -6908, -6652, -6396, -6140,
-5884, -5628, -5372, -5116, -4860, -4604, -4348, -4092,
-3900, -3772, -3644, -3516, -3388, -3260, -3132, -3004,
-2876, -2748, -2620, -2492, -2364, -2236, -2108, -1980,
-1884, -1820, -1756, -1692, -1628, -1564, -1500, -1436,
-1372, -1308, -1244, -1180, -1116, -1052, -988, -924,
-876, -844, -812, -780, -748, -716, -684, -652,
-620, -588, -556, -524, -492, -460, -428, -396,
-372, -356, -340, -324, -308, -292, -276, -260,
-244, -228, -212, -196, -180, -164, -148, -132,
-120, -112, -104, -96, -88, -80, -72, -64,
-56, -48, -40, -32, -24, -16, -8, 0,
32124, 31100, 30076, 29052, 28028, 27004, 25980, 24956,
23932, 22908, 21884, 20860, 19836, 18812, 17788, 16764,
15996, 15484, 14972, 14460, 13948, 13436, 12924, 12412,
11900, 11388, 10876, 10364, 9852, 9340, 8828, 8316,
7932, 7676, 7420, 7164, 6908, 6652, 6396, 6140,
5884, 5628, 5372, 5116, 4860, 4604, 4348, 4092,
3900, 3772, 3644, 3516, 3388, 3260, 3132, 3004,
2876, 2748, 2620, 2492, 2364, 2236, 2108, 1980,
1884, 1820, 1756, 1692, 1628, 1564, 1500, 1436,
1372, 1308, 1244, 1180, 1116, 1052, 988, 924,
876, 844, 812, 780, 748, 716, 684, 652,
620, 588, 556, 524, 492, 460, 428, 396,
372, 356, 340, 324, 308, 292, 276, 260,
244, 228, 212, 196, 180, 164, 148, 132,
120, 112, 104, 96, 88, 80, 72, 64,
56, 48, 40, 32, 24, 16, 8, 0};

View File

@ -0,0 +1,49 @@
/* listen_rtp_plugin.c
* Listen RTP plugin registration file
* Automatically generated by make_stat_tree_registration.pl
*
* $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Copyright 1998 Gerald Combs
*
* 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 ENABLE_STATIC
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include <gmodule.h>
#include <epan/stats_tree.h>
#include "main_listen_rtp.h"
G_MODULE_EXPORT const gchar version[] = "0.1";
G_MODULE_EXPORT void plugin_register(void)
{
proto_register_listen_rtp();
}
G_MODULE_EXPORT void plugin_reg_handoff(void)
{
proto_reg_handoff_listen_rtp();
}
#endif

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,29 @@
/* pinfo_stats_tree.h
* Stats tree for ethernet frames
*
* (c) 2006, Alejandro Vaquero <alejandrovaquero@yahoo.com>
*
* $Id$
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
* Copyright 1998 Gerald Combs
*
* 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.
*/
extern void proto_register_listen_rtp(void);
extern void proto_reg_handoff_listen_rtp(void);