summaryrefslogtreecommitdiff
path: root/pjmedia/src
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2008-02-28 14:16:43 +0000
committerBenny Prijono <bennylp@teluu.com>2008-02-28 14:16:43 +0000
commit5bf74069bdfcdbdccd58a386705d5c0a16581430 (patch)
tree65fc797f10a27655f90f2659148570521d3edf73 /pjmedia/src
parent01875d16a1138e0e72940f0f8214856f4f1540c2 (diff)
Ticket #496: Crash on sound port when only player is opened and delaybuf enabled
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@1825 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjmedia/src')
-rw-r--r--pjmedia/src/pjmedia/sound_port.c27
1 files changed, 18 insertions, 9 deletions
diff --git a/pjmedia/src/pjmedia/sound_port.c b/pjmedia/src/pjmedia/sound_port.c
index 760d79f0..79dbd7cc 100644
--- a/pjmedia/src/pjmedia/sound_port.c
+++ b/pjmedia/src/pjmedia/sound_port.c
@@ -99,12 +99,15 @@ static pj_status_t play_cb(/* in */ void *user_data,
frame.timestamp.u32.lo = timestamp;
#if PJMEDIA_SOUND_USE_DELAYBUF
- status = pjmedia_delay_buf_get(snd_port->delay_buf, (pj_int16_t*)output);
- if (status != PJ_SUCCESS) {
- pj_bzero(output, size);
- }
+ if (snd_port->delay_buf) {
+ status = pjmedia_delay_buf_get(snd_port->delay_buf, (pj_int16_t*)output);
+ if (status != PJ_SUCCESS) {
+ pj_bzero(output, size);
+ }
- pjmedia_port_put_frame(port, &frame);
+ frame.type = PJMEDIA_FRAME_TYPE_AUDIO;
+ pjmedia_port_put_frame(port, &frame);
+ }
#endif
status = pjmedia_port_get_frame(port, &frame);
@@ -200,10 +203,16 @@ static pj_status_t rec_cb(/* in */ void *user_data,
}
#if PJMEDIA_SOUND_USE_DELAYBUF
- PJ_UNUSED_ARG(size);
- PJ_UNUSED_ARG(timestamp);
- PJ_UNUSED_ARG(frame);
- pjmedia_delay_buf_put(snd_port->delay_buf, (pj_int16_t*)input);
+ if (snd_port->delay_buf) {
+ pjmedia_delay_buf_put(snd_port->delay_buf, (pj_int16_t*)input);
+ } else {
+ frame.buf = (void*)input;
+ frame.size = size;
+ frame.type = PJMEDIA_FRAME_TYPE_AUDIO;
+ frame.timestamp.u32.lo = timestamp;
+
+ pjmedia_port_put_frame(port, &frame);
+ }
#else
frame.buf = (void*)input;
frame.size = size;