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:
parent
93f7312e1d
commit
40cbc01b87
|
@ -0,0 +1,5 @@
|
|||
$Id$
|
||||
|
||||
Author:
|
||||
Alejandro Vaquero <alejandrovaquero [AT] yahoo.com>
|
||||
|
|
@ -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
|
|
@ -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
|
|
@ -0,0 +1 @@
|
|||
$Id$
|
|
@ -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;
|
||||
}
|
|
@ -0,0 +1,3 @@
|
|||
|
||||
decodeG711a(void *input, int inputSizeBytes, void *output, int *outputSizeBytes);
|
||||
|
|
@ -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};
|
||||
|
|
@ -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;
|
||||
}
|
|
@ -0,0 +1,3 @@
|
|||
|
||||
decodeG711u(void *input, int inputSizeBytes, void *output, int *outputSizeBytes);
|
||||
|
|
@ -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};
|
||||
|
|
@ -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
|
@ -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);
|
||||
|
Loading…
Reference in New Issue