Hi,
I am trying to decode a VoIP conversation using G.729 encoding. I have read
older messages on this list (and others) but I am still not able to dump a
listenable .au file.
The steps that I made so far:
- capture the traffic using Ethereal and dumping the RTP data
(Statistics -> RTP -> Show all streams -> SaveAs).
- Use rtpdump (http://www.cs.columbia.edu/IRT/software/rtptools/)
to dump only the audio payload ("rtpdump -F payload -f in.rtp -o out.rtp")
- Use self-made code (see the code at the end of the e-mail) to
convert the rtpdump into the bitstream expected by the decoder
- Decode the bitstream using the VoiceAge decoder (decoder out.rtp
test2.au)
- Play the test2.au using GoldWave, (with all possible combinations
between 16bit signed/unsigned 8000Hz)
Unfortunately all I can hear is some weird sound ( I can see voice patterns
in GoldWave, but the sound is metalic, almost alien-like). Am I doing
something wrong ?
References:
http://www.ethereal.com/lists/ethereal-dev/200505/msg00399.html
http://www.dsprelated.com/groups/speechcoding/show/666.php
//rtp_bitstream.c
[code]
#include <stdio.h>
int main(int argc, char **argv)
{
char c;
FILE *f=fopen("in.rtp", "r");
FILE *fileout = fopen("out3.rtp","w");
long lSize;
char * buffer, * out;
char qbyte, q;
int i, j =0, k;
fseek (f , 0 , SEEK_END);
lSize = ftell (f);
rewind (f);
buffer = (char*) malloc (lSize);
out = (char*) malloc (lSize * 16);
fread (buffer,1,lSize,f);
for (i = 0; i<lSize; i++)
{
qbyte = buffer[i];
for (k=0;k<8;k++)
{
q = qbyte & 1;
out[j] = 0x00;
j++;
if (q == 0)
out[j] = 0x71;
else
out[j] = 0x81;
j++;
qbyte >>= 1;
}
}
fwrite (out , 1 , lSize * 16, fileout);
return 0;
}
[/code]
Best regards,
Gabriel.
I am trying to decode a VoIP conversation using G.729 encoding. I have read
older messages on this list (and others) but I am still not able to dump a
listenable .au file.
The steps that I made so far:
- capture the traffic using Ethereal and dumping the RTP data
(Statistics -> RTP -> Show all streams -> SaveAs).
- Use rtpdump (http://www.cs.columbia.edu/IRT/software/rtptools/)
to dump only the audio payload ("rtpdump -F payload -f in.rtp -o out.rtp")
- Use self-made code (see the code at the end of the e-mail) to
convert the rtpdump into the bitstream expected by the decoder
- Decode the bitstream using the VoiceAge decoder (decoder out.rtp
test2.au)
- Play the test2.au using GoldWave, (with all possible combinations
between 16bit signed/unsigned 8000Hz)
Unfortunately all I can hear is some weird sound ( I can see voice patterns
in GoldWave, but the sound is metalic, almost alien-like). Am I doing
something wrong ?
References:
http://www.ethereal.com/lists/ethereal-dev/200505/msg00399.html
http://www.dsprelated.com/groups/speechcoding/show/666.php
//rtp_bitstream.c
[code]
#include <stdio.h>
int main(int argc, char **argv)
{
char c;
FILE *f=fopen("in.rtp", "r");
FILE *fileout = fopen("out3.rtp","w");
long lSize;
char * buffer, * out;
char qbyte, q;
int i, j =0, k;
fseek (f , 0 , SEEK_END);
lSize = ftell (f);
rewind (f);
buffer = (char*) malloc (lSize);
out = (char*) malloc (lSize * 16);
fread (buffer,1,lSize,f);
for (i = 0; i<lSize; i++)
{
qbyte = buffer[i];
for (k=0;k<8;k++)
{
q = qbyte & 1;
out[j] = 0x00;
j++;
if (q == 0)
out[j] = 0x71;
else
out[j] = 0x81;
j++;
qbyte >>= 1;
}
}
fwrite (out , 1 , lSize * 16, fileout);
return 0;
}
[/code]
Best regards,
Gabriel.