|
1. soune devie library 에러
PCMBUFFERSIZE * BUFFERCOUNT = 3840 byte.
약 200msec정도인데 만약 udp packet이 한꺼번에 들어와서 buffer의 양이 3840이상 되면 어떻게 되나요?
buffer는 수신버퍼와 sound device의 play buffer 2개를 확인해 보시기 바랍니다.
2. network(udp) library 에러
어떤 network library를 사용했느냐에 따라 원인이 다른겠지요.
3. thread 관리 에러
일반적으로 record & send, receive & play thread 2개로 나눌 수도 있고
receive와 play를 2개의 thread로 더 분리할 수도 있습니다.
thread가 분리되었을 경우 criticalsection을 이용하여 데이터를 안전하게 보호하는 방법을 사용해야 합니다.
4. delay 에러
네트워크가 아무리 빨라도 CPU나 그외 다른 process로 인하여 버퍼 수신 및 play에 delay가 점점 생기게 됩니다.
이는 정책적으로 수신된 버퍼중 오래된 것은 버리는 정책을 사용하여 음성 delay가 생기지 않도록 해야 합니다.
제가 보기에 480씩 버퍼의 갯수를 8개를 사용하는 군요.
그러면 3840 byte(약 200msec)인데
만약 버퍼의 크기보다 크게 play되면 어떻게 되나요?
김회현 님이 쓰신 글 :
: TCP로 컨트롤 한후, UDP로 음성데이타를 주고 받는데여..
:
: G723.1 코덱을 써서는 잘되는데, G711 코덱을 쓰니깐 대화가 되다가 갑자기 한쪽의 컴퓨터가 다운됩니다.
:
: 코덱만 바꿨을 뿐인데 말이져..
:
: 버퍼는 다음과 같이 잡았구여
: #define PCMBUFFERSIZE 480
: #define G711BUFFERSIZE 240
: #define BUFFERCOUNT 8
: #define G7231BUFFERSIZE 24
:
: 30m/s 마다 음성을 보내고 받고 있습니다.
:
: 732.1은 잘되는 걸로 봐서 TCP쪽이나 UDP 통신쪽 문제는 아닌것 같구 버퍼 싸이즈 부분이 의심이 가지만,
:
: 보내고 받는 부분에서 싸이즈를 일일히 체킹하거든여.. 그래서 그쪽두 아닌것 같구여..
:
: 한 30초 정도는 대화가 잘 되거든여..
:
: 메모리가 누수된다고 의심해서 리소스 측정기를 띄워 놓구 실행시켜 봤는데두 리소스가 점점 늘면서 다운되는게 아니라 순간적으로 확 죽어 버립니다.
:
: 너무 순간적이라서 그런가여? ^.^;;
:
: 또 어느 부분을 의심해 볼 수 있나여?
:
: 의심 가시는 부분이 있으시면 답글좀 주세여.
:
: 해결책두여 ^^;;
:
:
|