Carine Liang
2006-Nov-05 16:51 UTC
[Speex-dev] Integrating speex with VideoNet application: Constantbackground noise
Hi,
I've changed the m_waveFormatEx.wBitsPerSample for both record buffer and
playSound buffer, changed my array from char to short and I'm still getting
the same constant background noise. I notice that when I talk into the mike, I
will get a slightly louder noise, can't hear any clear speech... Any idea
what's wrong?
Regards,
Carine
----- Original Message ----
From: John Miles <jmiles@pop.net>
To: Carine Liang <carineliang@yahoo.com.sg>; speex-dev@xiph.org
Sent: Friday, 3 November 2006 12:32:43 AM
Subject: RE: [Speex-dev] Integrating speex with VideoNet application:
Constantbackground noise
DIV {
MARGIN:0px;}
Yes,
it's necessary; Speex will encode signed 16-bit PCM data and decode to
the same format. See the examples that come with
it.
8-bit audio is not something you would ever want to
use.
--
john
RAD
Game Tools
-----Original Message-----
From: Carine Liang
[mailto:carineliang@yahoo.com.sg]
Sent: Thursday, November 02, 2006
12:18 AM
To: John Miles; speex-dev@xiph.org
Subject: Re:
[Speex-dev] Integrating speex with VideoNet application: Constantbackground
noise
Hi
John,
Thanks for your reply.
Yes, my output device is in 8-bit
mode, same as my input mode. I'm actually working in char (8 bit) arrays.
Is
it necessary to work in signed short integers only? I changed all the short
arrays in the example to char.
Carine
-----
Original Message ----
From: John Miles <jmiles@pop.net>
To:
carineliang@yahoo.com.sg; speex-dev@xiph.org
Sent: Thursday, 2 November
2006 2:04:39 PM
Subject: RE: [Speex-dev] Integrating speex with VideoNet
application: Constantbackground noise
DIV {
MARGIN:0px;}
At
first glance it looks like you are opening the output device in 8-bit mode
(m_waveFormatEx.wBitsPerSample =8;). You will need to use 16-bit mode if you
expect to write
an array of signed short integers to the audio buffer.. 8-bit PCM
is an unsigned mode, no longer used much these
days.
Also, a good debugging trick is to include something like this in your
output sample processing loop:
static FILE *hack =
fopen("test.raw","wb");
fwrite(output, 2, FRAME_SIZE,
hack);
After your app is closed, there will be a file called "test.raw"
in its working directory, which you can load into Sound Forge or a similar
audio editing package for closer inspection without relying on your output
buffers and playback code to work properly.
--
john
RAD
Game Tools
-----Original Message-----
From: speex-dev-bounces@xiph.org
[mailto:speex-dev-bounces@xiph.org]On Behalf Of Carine
Liang
Sent: Wednesday, November 01, 2006 9:40 PM
To:
speex-dev@xiph.org
Subject: Re: [Speex-dev] Integrating speex with
VideoNet application: Constantbackground noise
Hi,
Can
someone please help me with my problem below. Any suggestions is
appreciated.
thanks,
Carine
-----
Original Message ----
From: Carine Liang
<carineliang@yahoo.com.sg>
To: speex-dev@xiph.org;
speex-dev@xiph.org
Sent: Tuesday, 31 October 2006 1:05:49 PM
Subject:
[Speex-dev] Integrating speex with VideoNet application: Constant background
noise
Hi,
I am developing a peer-to-peer video conference application
which uses speex as a codec for the voice.
I am new to speex, so
please bear with me if I asked the obvious. After I added the encode and
decode function to my MFC app, I heard a constant background noise, even
when no one is speaking into the microphone.
#define FRAME_SIZE
160
The application is coded in MFC C++. The record buffer is set to
be the same as the FRAME_SIZE such that my callback function is called
everytime 160 bytes of data is recorded.
Here's what I did in the
initialisation (called only once).
m_waveFormatEx.wFormatTag
=WAVE_FORMAT_PCM;
m_waveFormatEx.nChannels
=1;
m_waveFormatEx.wBitsPerSample =8;
m_waveFormatEx.cbSize
=0;
m_waveFormatEx.nSamplesPerSec = 8000;
m_waveFormatEx.nBlockAlign
=1;
m_waveFormatEx.nAvgBytesPerSec = 8000;
int quality
=8;
speex_bits_init(&bits);
enc_state =
speex_encoder_init(&speex_nb_mode);
speex_encoder_ctl(enc_state,
SPEEX_SET_QUALITY, &quality);
In my recording callback
function
LRESULT RecordSound::OnSoundData(WPARAM wParam, LPARAM
lParam)
{
....
dataPtr = (char *)lpHdr
->lpData;
dataSize = (int)lpHdr
->dwBytesRecorded;
for(int
k=0;k<FRAME_SIZE;k++)
input[k] =
dataPtr[k]; //input is
float[FRAME_SIZE]
speex_bits_reset(&bits);
speex_encode(enc_state,
input, &bits);
encByte =
speex_bits_write(&bits, cbits, 200);
//send
cbits to peer computer via sockets
}
In the receiver's
initialization function, I've initialized the
speex_decoder.
speex_bits_init(&bits);
dec_state =
speex_decoder_init(&speex_nb_mode);
In the receiver's socket
function, it reads from socket and store the data in cbits (char
array).
{
speex_bits_read_from(&bits, cbits,
retvalue); //retvalue is 38
speex_decode(dec_state,
&bits, output); //where output is float array
for(int k=0;k<FRAME_SIZE;k++)
out[k] =
output[k]; //out is a char array
PostThreadMessage( WM_PLAYSOUND_PLAYBLOCK, FRAME_SIZE,
(LPARAM)out );
}
What is the internet to you?
Contribute to the Yahoo! Time Capsule and be a part of internet
history.
_______________________________________________
Speex-dev mailing
list
Speex-dev@xiph.org
http://lists.xiph.org/mailman/listinfo/speex-dev
What is the internet to you?
Contribute to the Yahoo! Time Capsule and be a part of internet
history.
What will the world find in 2020?
Leave a part of your 2006 in the Yahoo!
Time Capsule. Contribute
now!
__________________________________
What will the world find in 2020?
Leave a part of your 2006 in the Yahoo! Time Capsule. Contribute now!
http://timecapsule.yahoo.com/capsule.php?intl=sg
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
http://lists.xiph.org/pipermail/speex-dev/attachments/20061105/7868370b/attachment.html
John Miles
2006-Nov-05 19:53 UTC
[Speex-dev] Integrating speex with VideoNet application: Constantbackground noise
It could be a million different things, unfortunately. Focus on comparing your code to the Speex examples, and looking for places where they diverge. Also, try taking Speex out of the picture altogether, just to make sure you can send plain uncompressed PCM audio through your network layer. -- john RAD Game Tools -----Original Message----- From: Carine Liang [mailto:carineliang@yahoo.com.sg] Sent: Sunday, November 05, 2006 4:51 PM To: John Miles; speex-dev@xiph.org Subject: Re: [Speex-dev] Integrating speex with VideoNet application: Constantbackground noise Hi, I've changed the m_waveFormatEx.wBitsPerSample for both record buffer and playSound buffer, changed my array from char to short and I'm still getting the same constant background noise. I notice that when I talk into the mike, I will get a slightly louder noise, can't hear any clear speech... Any idea what's wrong? Regards, Carine -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.xiph.org/pipermail/speex-dev/attachments/20061105/4f7a487f/attachment.html
Apparently Analagous Threads
- Integrating speex with VideoNet application: Constantbackground noise
- Integrating speex with VideoNet application: Constantbackground noise
- Integrating speex with VideoNet application: Constantbackground noise
- Integrating speex with VideoNet application: Constantbackground noise
- Integrating speex with VideoNet application: Constant background noise