aboutsummaryrefslogtreecommitdiff
path: root/net-im/libjingle
diff options
context:
space:
mode:
authorMario Sergio Fujikawa Ferreira <lioux@FreeBSD.org>2006-04-21 15:17:45 +0000
committerMario Sergio Fujikawa Ferreira <lioux@FreeBSD.org>2006-04-21 15:17:45 +0000
commit705d98389a86694f0eaa3f3a763a23a799468e8a (patch)
tree00ee75a769e6ab536313e1d48124e8ef0980b099 /net-im/libjingle
parente31319a7faead87df77b763d6dcdf20a4b7a992a (diff)
downloadports-705d98389a86694f0eaa3f3a763a23a799468e8a.tar.gz
ports-705d98389a86694f0eaa3f3a763a23a799468e8a.zip
o Additional patching obtained from the effort of porting net-im/kopete with
libjingle support. o Update libjingle's third party mediaphone (obtained from latest release of net/linphone 1.3.5) library o Force OSS sound system detection o Bump PORTREVISION
Notes
Notes: svn path=/head/; revision=160081
Diffstat (limited to 'net-im/libjingle')
-rw-r--r--net-im/libjingle/Makefile6
-rw-r--r--net-im/libjingle/files/patch-talk__base__criticalsection.h9
-rw-r--r--net-im/libjingle/files/patch-talk__third_party__mediastreamer__audiostream.c59
-rw-r--r--net-im/libjingle/files/patch-talk__third_party__mediastreamer__msGSMdecoder.h11
-rw-r--r--net-im/libjingle/files/patch-talk__third_party__mediastreamer__msGSMencoder.h11
-rw-r--r--net-im/libjingle/files/patch-talk__third_party__mediastreamer__msbuffer.h16
-rw-r--r--net-im/libjingle/files/patch-talk__third_party__mediastreamer__msfifo.c11
-rw-r--r--net-im/libjingle/files/patch-talk__third_party__mediastreamer__msqueue.c10
-rw-r--r--net-im/libjingle/files/patch-talk__third_party__mediastreamer__msqueue.h11
-rw-r--r--net-im/libjingle/files/patch-talk__third_party__mediastreamer__msrtprecv.c63
-rw-r--r--net-im/libjingle/files/patch-talk__third_party__mediastreamer__msrtprecv.h11
-rw-r--r--net-im/libjingle/files/patch-talk__third_party__mediastreamer__msrtpsend.c18
-rw-r--r--net-im/libjingle/files/patch-talk__third_party__mediastreamer__msspeexdec.c10
-rw-r--r--net-im/libjingle/files/patch-talk__third_party__mediastreamer__msspeexenc.c10
-rw-r--r--net-im/libjingle/files/patch-talk__third_party__mediastreamer__mssync.c9
-rw-r--r--net-im/libjingle/files/patch-talk__third_party__mediastreamer__mstimer.c28
-rw-r--r--net-im/libjingle/files/patch-talk__third_party__mediastreamer__osscard.c11
17 files changed, 294 insertions, 10 deletions
diff --git a/net-im/libjingle/Makefile b/net-im/libjingle/Makefile
index c5b631aee1a7..00d7ae86dbf8 100644
--- a/net-im/libjingle/Makefile
+++ b/net-im/libjingle/Makefile
@@ -7,6 +7,7 @@
PORTNAME= libjingle
PORTVERSION= 0.3.0
+PORTREVISION= 1
CATEGORIES= net-im
MASTER_SITES= ${MASTER_SITE_SOURCEFORGE}
MASTER_SITE_SUBDIR= ${PORTNAME}
@@ -70,6 +71,11 @@ post-configure:
-e 's|^.+(HAVE_SPEEX_H)[[:space:]].*$$|#define \1 1|' \
-e 's|^.+(HAVE_SPEEX)[[:space:]].*$$|#define \1 1|' \
${CONFIGURE_WRKSRC}/config.h
+# configure does not handle OSS support
+# force oss
+ @${ECHO_CMD} \
+ '#define HAVE_SYS_SOUNDCARD_H 1' >> \
+ ${CONFIGURE_WRKSRC}/config.h
post-install:
.ifndef(NOPORTDOCS)
diff --git a/net-im/libjingle/files/patch-talk__base__criticalsection.h b/net-im/libjingle/files/patch-talk__base__criticalsection.h
index 2e8621ec54a7..96cbf7e22d20 100644
--- a/net-im/libjingle/files/patch-talk__base__criticalsection.h
+++ b/net-im/libjingle/files/patch-talk__base__criticalsection.h
@@ -1,10 +1,13 @@
---- talk/base/criticalsection.h.orig Wed Feb 22 18:57:24 2006
-+++ talk/base/criticalsection.h Wed Feb 22 18:54:37 2006
-@@ -83,6 +83,7 @@
+--- ./talk/base/criticalsection.h.orig Thu Mar 16 18:43:02 2006
++++ ./talk/base/criticalsection.h Fri Apr 21 10:56:34 2006
+@@ -83,8 +83,10 @@
public:
CriticalSection() {
pthread_mutexattr_t mutex_attribute;
+ pthread_mutexattr_init(&mutex_attribute);
pthread_mutexattr_settype(&mutex_attribute, PTHREAD_MUTEX_RECURSIVE);
pthread_mutex_init(&mutex_, &mutex_attribute);
++ pthread_mutexattr_destroy(&mutex_attribute);
}
+ ~CriticalSection() {
+ pthread_mutex_destroy(&mutex_);
diff --git a/net-im/libjingle/files/patch-talk__third_party__mediastreamer__audiostream.c b/net-im/libjingle/files/patch-talk__third_party__mediastreamer__audiostream.c
new file mode 100644
index 000000000000..fd018c4f503f
--- /dev/null
+++ b/net-im/libjingle/files/patch-talk__third_party__mediastreamer__audiostream.c
@@ -0,0 +1,59 @@
+--- ./talk/third_party/mediastreamer/audiostream.c.orig Thu Mar 16 18:43:07 2006
++++ ./talk/third_party/mediastreamer/audiostream.c Fri Apr 21 10:56:34 2006
+@@ -29,6 +29,8 @@
+
+ #define MAX_RTP_SIZE 1500
+
++#define rtp_session_max_buf_size_set(session, bufsize) (rtp_session_set_recv_buf_size(session, bufsize))
++
+ /* this code is not part of the library itself, it is part of the mediastream program */
+ void audio_stream_free(AudioStream *stream)
+ {
+@@ -118,7 +120,8 @@
+ if (remport>0) rtp_session_set_remote_addr(rtpr,remip,remport);
+ rtp_session_set_scheduling_mode(rtpr,0);
+ rtp_session_set_blocking_mode(rtpr,0);
+- rtp_session_set_payload_type(rtpr,payload);
++ rtp_session_set_send_payload_type(rtpr,payload);
++ rtp_session_set_recv_payload_type(rtpr,payload);
+ rtp_session_set_jitter_compensation(rtpr,jitt_comp);
+ rtp_session_enable_adaptive_jitter_compensation(rtpr,TRUE);
+ /*rtp_session_signal_connect(rtpr,"timestamp_jump",(RtpCallback)on_timestamp_jump,NULL);*/
+@@ -143,7 +146,8 @@
+ rtp_session_set_remote_addr(rtps,remip,remport);
+ rtp_session_set_scheduling_mode(rtps,0);
+ rtp_session_set_blocking_mode(rtps,0);
+- rtp_session_set_payload_type(rtps,payload);
++ rtp_session_set_send_payload_type(rtps,payload);
++ rtp_session_set_recv_payload_type(rtps,payload);
+ rtp_session_set_jitter_compensation(rtps,jitt_comp);
+
+ rtpr=rtp_session_new(RTP_SESSION_RECVONLY);
+@@ -158,7 +162,6 @@
+ rtp_session_set_blocking_mode(rtpr,0);
+ rtp_session_set_payload_type(rtpr,payload);
+ rtp_session_set_jitter_compensation(rtpr,jitt_comp);
+- rtp_session_signal_connect(rtpr,"telephone-event",(RtpCallback)on_dtmf_received,NULL);
+ rtp_session_signal_connect(rtpr,"timestamp_jump",(RtpCallback)on_timestamp_jump,NULL);
+ *recv=rtpr;
+ *send=rtps;
+@@ -179,8 +182,6 @@
+ rtp_session_signal_connect(rtpr,"telephone-event",(RtpCallback)on_dtmf_received,(gpointer)stream);
+ rtps=rtpr;
+
+- stream->recv_session = rtpr;
+- stream->send_session = rtps;
+ stream->rtpsend=ms_rtp_send_new();
+ ms_rtp_send_set_session(MS_RTP_SEND(stream->rtpsend),rtps);
+ stream->rtprecv=ms_rtp_recv_new();
+@@ -217,8 +218,8 @@
+ ms_filter_set_property(stream->decoder,MS_FILTER_PROPERTY_FREQ,&pt->clock_rate);
+ ms_filter_set_property(stream->decoder,MS_FILTER_PROPERTY_BITRATE,&pt->normal_bitrate);
+
+- ms_filter_set_property(stream->encoder,MS_FILTER_PROPERTY_FMTP, (void*)pt->fmtp);
+- ms_filter_set_property(stream->decoder,MS_FILTER_PROPERTY_FMTP,(void*)pt->fmtp);
++ ms_filter_set_property(stream->encoder,MS_FILTER_PROPERTY_FMTP,(void*)pt->send_fmtp);
++ ms_filter_set_property(stream->decoder,MS_FILTER_PROPERTY_FMTP,(void*)pt->recv_fmtp);
+ /* create the synchronisation source */
+ stream->timer=ms_timer_new();
+
diff --git a/net-im/libjingle/files/patch-talk__third_party__mediastreamer__msGSMdecoder.h b/net-im/libjingle/files/patch-talk__third_party__mediastreamer__msGSMdecoder.h
new file mode 100644
index 000000000000..cca3fe328899
--- /dev/null
+++ b/net-im/libjingle/files/patch-talk__third_party__mediastreamer__msGSMdecoder.h
@@ -0,0 +1,11 @@
+--- ./talk/third_party/mediastreamer/msGSMdecoder.h.orig Thu Mar 16 18:43:06 2006
++++ ./talk/third_party/mediastreamer/msGSMdecoder.h Fri Apr 21 10:56:34 2006
+@@ -36,7 +36,7 @@
+ /* the MSGSMDecoder derivates from MSFilter, so the MSFilter object MUST be the first of the MSGSMDecoder object
+ in order to the object mechanism to work*/
+ MSFilter filter;
+- MSFifo *f_inputs[MSGSMDECODER_MAX_INPUTS];
++ MSQueue *q_inputs[MSGSMDECODER_MAX_INPUTS];
+ MSFifo *f_outputs[MSGSMDECODER_MAX_INPUTS];
+ gsm gsm_handle;
+ } MSGSMDecoder;
diff --git a/net-im/libjingle/files/patch-talk__third_party__mediastreamer__msGSMencoder.h b/net-im/libjingle/files/patch-talk__third_party__mediastreamer__msGSMencoder.h
new file mode 100644
index 000000000000..2104dc63eeae
--- /dev/null
+++ b/net-im/libjingle/files/patch-talk__third_party__mediastreamer__msGSMencoder.h
@@ -0,0 +1,11 @@
+--- ./talk/third_party/mediastreamer/msGSMencoder.h.orig Thu Mar 16 18:43:06 2006
++++ ./talk/third_party/mediastreamer/msGSMencoder.h Fri Apr 21 10:56:34 2006
+@@ -36,7 +36,7 @@
+ in order to the object mechanism to work*/
+ MSFilter filter;
+ MSFifo *f_inputs[MSGSMENCODER_MAX_INPUTS];
+- MSFifo *f_outputs[MSGSMENCODER_MAX_INPUTS];
++ MSQueue *q_outputs[MSGSMENCODER_MAX_INPUTS];
+ gsm gsm_handle;
+ } MSGSMEncoder;
+
diff --git a/net-im/libjingle/files/patch-talk__third_party__mediastreamer__msbuffer.h b/net-im/libjingle/files/patch-talk__third_party__mediastreamer__msbuffer.h
new file mode 100644
index 000000000000..4775e9595b32
--- /dev/null
+++ b/net-im/libjingle/files/patch-talk__third_party__mediastreamer__msbuffer.h
@@ -0,0 +1,16 @@
+--- ./talk/third_party/mediastreamer/msbuffer.h.orig Thu Mar 16 18:43:06 2006
++++ ./talk/third_party/mediastreamer/msbuffer.h Fri Apr 21 10:56:34 2006
+@@ -48,11 +48,12 @@
+ struct _MSMessage
+ {
+ MSBuffer *buffer; /* points to a MSBuffer */
+- void *data; /*points to buffer->buffer */
++ char *data; /*points to buffer->buffer */
+ guint32 size; /* the size of the buffer to read in data. It may not be the
+ physical size (I mean buffer->buffer->size */
+ struct _MSMessage *next;
+ struct _MSMessage *prev; /* MSMessage are queued into MSQueues */
++ gboolean markbit;
+ };
+
+ typedef struct _MSMessage MSMessage;
diff --git a/net-im/libjingle/files/patch-talk__third_party__mediastreamer__msfifo.c b/net-im/libjingle/files/patch-talk__third_party__mediastreamer__msfifo.c
new file mode 100644
index 000000000000..5a723c988b0a
--- /dev/null
+++ b/net-im/libjingle/files/patch-talk__third_party__mediastreamer__msfifo.c
@@ -0,0 +1,11 @@
+--- ./talk/third_party/mediastreamer/msfifo.c.orig Thu Mar 16 18:43:06 2006
++++ ./talk/third_party/mediastreamer/msfifo.c Fri Apr 21 10:56:34 2006
+@@ -123,7 +123,7 @@
+ /* fix readsize and writesize */
+ fifo->readsize-=unwritten;
+ fifo->writesize+=unwritten;
+- fifo->wr_ptr+=written;
++ fifo->wr_ptr=fifo->prev_wr_ptr+written;
+ }
+
+ gint ms_fifo_get_write_ptr(MSFifo *fifo, gint bsize, void **ret_ptr)
diff --git a/net-im/libjingle/files/patch-talk__third_party__mediastreamer__msqueue.c b/net-im/libjingle/files/patch-talk__third_party__mediastreamer__msqueue.c
new file mode 100644
index 000000000000..497262d9a19a
--- /dev/null
+++ b/net-im/libjingle/files/patch-talk__third_party__mediastreamer__msqueue.c
@@ -0,0 +1,10 @@
+--- ./talk/third_party/mediastreamer/msqueue.c.orig Thu Mar 16 18:43:06 2006
++++ ./talk/third_party/mediastreamer/msqueue.c Fri Apr 21 10:56:34 2006
+@@ -53,4 +53,7 @@
+ q->size++;
+ }
+
++MSMessage *ms_queue_peek_last(MSQueue *q){
++ return q->last;
++}
+
diff --git a/net-im/libjingle/files/patch-talk__third_party__mediastreamer__msqueue.h b/net-im/libjingle/files/patch-talk__third_party__mediastreamer__msqueue.h
new file mode 100644
index 000000000000..1e18950598e8
--- /dev/null
+++ b/net-im/libjingle/files/patch-talk__third_party__mediastreamer__msqueue.h
@@ -0,0 +1,11 @@
+--- ./talk/third_party/mediastreamer/msqueue.h.orig Thu Mar 16 18:43:06 2006
++++ ./talk/third_party/mediastreamer/msqueue.h Fri Apr 21 10:56:34 2006
+@@ -41,6 +41,8 @@
+
+ void ms_queue_put(MSQueue *q, MSMessage *m);
+
++MSMessage *ms_queue_peek_last(MSQueue *q);
++
+ #define ms_queue_can_get(q) ( (q)->size!=0 )
+
+ #define ms_queue_destroy(q) g_free(q)
diff --git a/net-im/libjingle/files/patch-talk__third_party__mediastreamer__msrtprecv.c b/net-im/libjingle/files/patch-talk__third_party__mediastreamer__msrtprecv.c
index f3f7d09c6690..ebbb905424d8 100644
--- a/net-im/libjingle/files/patch-talk__third_party__mediastreamer__msrtprecv.c
+++ b/net-im/libjingle/files/patch-talk__third_party__mediastreamer__msrtprecv.c
@@ -1,11 +1,66 @@
---- talk/third_party/mediastreamer/msrtprecv.c.orig Wed Feb 22 16:43:03 2006
-+++ talk/third_party/mediastreamer/msrtprecv.c Wed Feb 22 16:45:47 2006
-@@ -120,7 +120,7 @@
+--- ./talk/third_party/mediastreamer/msrtprecv.c.orig Thu Mar 16 18:43:06 2006
++++ ./talk/third_party/mediastreamer/msrtprecv.c Fri Apr 21 10:56:34 2006
+@@ -70,6 +70,8 @@
+ memset(r->q_outputs,0,sizeof(MSFifo*)*MSRTPRECV_MAX_OUTPUTS);
+ r->rtpsession=NULL;
+ r->stream_started=0;
++ r->ignore=FALSE;
++ r->payload_expected=0;
+ }
+
+ void ms_rtp_recv_class_init(MSRtpRecvClass *klass)
+@@ -120,7 +122,7 @@
gint got=0;
/* we are connected with queues (surely for video)*/
/* use the sync system time to compute a timestamp */
- PayloadType *pt=rtp_profile_get_payload(r->rtpsession->profile,r->rtpsession->payload_type);
-+ PayloadType *pt=rtp_profile_get_payload(r->rtpsession->profile,r->rtpsession->recv_pt);
++ PayloadType *pt=rtp_profile_get_payload(r->rtpsession->profile,r->rtpsession->send_pt);
if (pt==NULL) {
ms_warning("ms_rtp_recv_process(): NULL RtpPayload- skipping.");
return;
+@@ -134,10 +136,16 @@
+ /*g_message("Got packet with timestamp %u",clock);*/
+ got++;
+ r->stream_started=1;
+- mdata=mp->b_cont;
+- freeb(mp);
+- msg=msgb_2_ms_message(mdata);
+- ms_queue_put(qo,msg);
++ if (!r->ignore){
++ gboolean markbit=((rtp_header_t*)mp->b_rptr)->markbit;
++ mdata=mp->b_cont;
++ freeb(mp);
++ msg=msgb_2_ms_message(mdata);
++ msg->markbit=markbit;
++ ms_queue_put(qo,msg);
++ }else{
++ freemsg(mp);
++ }
+ }
+ }
+ }
+@@ -147,10 +155,24 @@
+ g_free(obj);
+ }
+
++static void __payload_type_changed(RtpSession *session,MSRtpRecv *obj){
++ int pt_num=rtp_session_get_recv_payload_type(session);
++ PayloadType *pt=rtp_profile_get_payload(rtp_session_get_profile(session),pt_num);
++ if (pt==NULL){
++ /* sip phone should ignore payload types they don't understand */
++ g_warning("Ignoring payload type %i",pt_num);
++ obj->ignore=TRUE;
++ }else{
++ if (obj->ignore) g_warning("payload type is coming back to something known");
++ obj->ignore=FALSE;
++ }
++}
++
+ RtpSession * ms_rtp_recv_set_session(MSRtpRecv *obj,RtpSession *session)
+ {
+ RtpSession *old=obj->rtpsession;
+ obj->rtpsession=session;
++ rtp_session_signal_connect(session,"payload_type_changed",(RtpCallback)__payload_type_changed,(unsigned long)obj);
+ obj->prev_ts=0;
+ return old;
+ }
diff --git a/net-im/libjingle/files/patch-talk__third_party__mediastreamer__msrtprecv.h b/net-im/libjingle/files/patch-talk__third_party__mediastreamer__msrtprecv.h
new file mode 100644
index 000000000000..74ee762d5ee1
--- /dev/null
+++ b/net-im/libjingle/files/patch-talk__third_party__mediastreamer__msrtprecv.h
@@ -0,0 +1,11 @@
+--- ./talk/third_party/mediastreamer/msrtprecv.h.orig Thu Mar 16 18:43:05 2006
++++ ./talk/third_party/mediastreamer/msrtprecv.h Fri Apr 21 10:56:34 2006
+@@ -47,6 +47,8 @@
+ RtpSession *rtpsession;
+ guint32 prev_ts;
+ gint stream_started;
++ gint payload_expected;
++ gboolean ignore;
+ };
+
+ typedef struct _MSRtpRecv MSRtpRecv;
diff --git a/net-im/libjingle/files/patch-talk__third_party__mediastreamer__msrtpsend.c b/net-im/libjingle/files/patch-talk__third_party__mediastreamer__msrtpsend.c
index f8a20c006820..4495909d0bfe 100644
--- a/net-im/libjingle/files/patch-talk__third_party__mediastreamer__msrtpsend.c
+++ b/net-im/libjingle/files/patch-talk__third_party__mediastreamer__msrtpsend.c
@@ -1,11 +1,23 @@
---- talk/third_party/mediastreamer/msrtpsend.c.orig Wed Feb 22 16:47:20 2006
-+++ talk/third_party/mediastreamer/msrtpsend.c Wed Feb 22 16:47:53 2006
+--- ./talk/third_party/mediastreamer/msrtpsend.c.orig Thu Mar 16 18:43:06 2006
++++ ./talk/third_party/mediastreamer/msrtpsend.c Fri Apr 21 10:56:34 2006
@@ -85,7 +85,7 @@
{
guint32 clockts;
/* use the sync system time to compute a timestamp */
- PayloadType *pt=rtp_profile_get_payload(r->rtpsession->profile,r->rtpsession->payload_type);
-+ PayloadType *pt=rtp_profile_get_payload(r->rtpsession->profile,r->rtpsession->send_pt);
++ PayloadType *pt=rtp_profile_get_payload(r->rtpsession->profile,r->rtpsession->recv_pt);
g_return_val_if_fail(pt!=NULL,0);
clockts=(guint32)(((double)synctime * (double)pt->clock_rate)/1000.0);
ms_trace("ms_rtp_send_process: sync->time=%i clock=%i",synctime,clockts);
+@@ -138,8 +138,9 @@
+ while ( (msg=ms_queue_get(qi))!=NULL){
+ ts=get_new_timestamp(r,synctime);
+ if (!skip) {
+- /*g_message("Sending packet with ts=%u",ts);*/
+- rtp_session_send_with_ts(r->rtpsession,msg->data,msg->size,ts);
++ mblk_t *packet=rtp_session_create_packet_with_data(r->rtpsession,msg->data,msg->size,NULL);
++ rtp_set_markbit(packet,msg->markbit);
++ rtp_session_sendm_with_ts(r->rtpsession,packet,ts);
+
+ }
+ ms_message_destroy(msg);
diff --git a/net-im/libjingle/files/patch-talk__third_party__mediastreamer__msspeexdec.c b/net-im/libjingle/files/patch-talk__third_party__mediastreamer__msspeexdec.c
new file mode 100644
index 000000000000..d3956ac2b350
--- /dev/null
+++ b/net-im/libjingle/files/patch-talk__third_party__mediastreamer__msspeexdec.c
@@ -0,0 +1,10 @@
+--- ./talk/third_party/mediastreamer/msspeexdec.c.orig Thu Mar 16 18:43:07 2006
++++ ./talk/third_party/mediastreamer/msspeexdec.c Fri Apr 21 10:56:34 2006
+@@ -171,6 +171,7 @@
+ void ms_speex_dec_uninit_core(MSSpeexDec *obj)
+ {
+ speex_decoder_destroy(obj->speex_state);
++ speex_bits_destroy(&obj->bits);
+ obj->initialized=0;
+ }
+
diff --git a/net-im/libjingle/files/patch-talk__third_party__mediastreamer__msspeexenc.c b/net-im/libjingle/files/patch-talk__third_party__mediastreamer__msspeexenc.c
new file mode 100644
index 000000000000..fab81bd3dae8
--- /dev/null
+++ b/net-im/libjingle/files/patch-talk__third_party__mediastreamer__msspeexenc.c
@@ -0,0 +1,10 @@
+--- ./talk/third_party/mediastreamer/msspeexenc.c.orig Thu Mar 16 18:43:07 2006
++++ ./talk/third_party/mediastreamer/msspeexenc.c Fri Apr 21 10:56:34 2006
+@@ -157,6 +157,7 @@
+ {
+ if (obj->initialized){
+ speex_encoder_destroy(obj->speex_state);
++ speex_bits_destroy(&obj->bits);
+ obj->initialized=0;
+ }
+ }
diff --git a/net-im/libjingle/files/patch-talk__third_party__mediastreamer__mssync.c b/net-im/libjingle/files/patch-talk__third_party__mediastreamer__mssync.c
new file mode 100644
index 000000000000..93abf021f9a2
--- /dev/null
+++ b/net-im/libjingle/files/patch-talk__third_party__mediastreamer__mssync.c
@@ -0,0 +1,9 @@
+--- ./talk/third_party/mediastreamer/mssync.c.orig Thu Mar 16 18:43:06 2006
++++ ./talk/third_party/mediastreamer/mssync.c Fri Apr 21 10:56:34 2006
+@@ -189,5 +189,6 @@
+ g_mutex_free(sync->lock);
+ g_cond_free(sync->thread_cond);
+ g_cond_free(sync->stop_cond);
++ return 0;
+ }
+
diff --git a/net-im/libjingle/files/patch-talk__third_party__mediastreamer__mstimer.c b/net-im/libjingle/files/patch-talk__third_party__mediastreamer__mstimer.c
new file mode 100644
index 000000000000..667cf3f45665
--- /dev/null
+++ b/net-im/libjingle/files/patch-talk__third_party__mediastreamer__mstimer.c
@@ -0,0 +1,28 @@
+--- ./talk/third_party/mediastreamer/mstimer.c.orig Thu Mar 16 18:43:06 2006
++++ ./talk/third_party/mediastreamer/mstimer.c Fri Apr 21 10:56:34 2006
+@@ -66,6 +66,8 @@
+ else {
+ gint32 diff,time;
+ struct timeval tv,cur;
++
++ timer->sync.time+=timer->milisec;
+
+ gettimeofday(&cur,NULL);
+ time=((cur.tv_usec-timer->orig.tv_usec)/1000 ) + ((cur.tv_sec-timer->orig.tv_sec)*1000 );
+@@ -74,14 +76,13 @@
+ }
+ while((diff = timer->sync.time-time) > 0)
+ {
+- tv.tv_sec = diff/1000;
+- tv.tv_usec = (diff%1000)*1000;
++ tv.tv_sec = timer->milisec/1000;
++ tv.tv_usec = (timer->milisec%1000)*1000;
+ select(0,NULL,NULL,NULL,&tv);
+ gettimeofday(&cur,NULL);
+ time=((cur.tv_usec-timer->orig.tv_usec)/1000 ) + ((cur.tv_sec-timer->orig.tv_sec)*1000 );
+ }
+ }
+- timer->sync.time+=timer->milisec;
+ return;
+ }
+
diff --git a/net-im/libjingle/files/patch-talk__third_party__mediastreamer__osscard.c b/net-im/libjingle/files/patch-talk__third_party__mediastreamer__osscard.c
new file mode 100644
index 000000000000..ef07e90c732e
--- /dev/null
+++ b/net-im/libjingle/files/patch-talk__third_party__mediastreamer__osscard.c
@@ -0,0 +1,11 @@
+--- ./talk/third_party/mediastreamer/osscard.c.orig Fri Apr 21 11:06:47 2006
++++ ./talk/third_party/mediastreamer/osscard.c Fri Apr 21 11:07:03 2006
+@@ -342,7 +342,7 @@
+ {
+ int p=0,mix_fd;
+ int osscmd;
+- g_return_if_fail(obj->mixdev_name!=NULL);
++ g_return_val_if_fail(obj->mixdev_name!=NULL,-1);
+ #ifdef HAVE_SYS_SOUNDCARD_H
+ switch(way){
+ case SND_CARD_LEVEL_GENERAL: