mirror of
https://git.FreeBSD.org/ports.git
synced 2024-12-28 05:29:48 +00:00
450 lines
18 KiB
Plaintext
450 lines
18 KiB
Plaintext
--- ./kopete/protocols/jabber/jingle/libjingle/talk/base/criticalsection.h.orig Mon Mar 20 23:18:37 2006
|
|
+++ ./kopete/protocols/jabber/jingle/libjingle/talk/base/criticalsection.h Thu Apr 20 02:38:21 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_);
|
|
--- kopete/protocols/jabber/jingle/libjingle/talk/base/thread.cc.orig Tue May 2 11:43:09 2006
|
|
+++ kopete/protocols/jabber/jingle/libjingle/talk/base/thread.cc Tue May 2 11:43:21 2006
|
|
@@ -113,6 +113,7 @@
|
|
pthread_attr_t attr;
|
|
pthread_attr_init(&attr);
|
|
pthread_create(&thread_, &attr, PreLoop, this);
|
|
+ pthread_attr_destroy(&attr);
|
|
started_ = true;
|
|
}
|
|
|
|
--- kopete/protocols/jabber/jingle/libjingle/talk/p2p/base/Makefile.in.orig Thu Apr 20 10:32:14 2006
|
|
+++ kopete/protocols/jabber/jingle/libjingle/talk/p2p/base/Makefile.in Thu Apr 20 10:33:01 2006
|
|
@@ -699,7 +699,7 @@
|
|
for dir in "$(DESTDIR)$(bindir)"; do \
|
|
test -z "$$dir" || $(mkdir_p) "$$dir"; \
|
|
done
|
|
-install: install-am
|
|
+install:
|
|
install-exec: install-exec-am
|
|
install-data: install-data-am
|
|
uninstall: uninstall-am
|
|
--- kopete/protocols/jabber/jingle/libjingle/talk/session/phone/linphonemediaengine.cc.orig Wed Feb 22 16:32:44 2006
|
|
+++ kopete/protocols/jabber/jingle/libjingle/talk/session/phone/linphonemediaengine.cc Wed Feb 22 16:41:45 2006
|
|
@@ -65,6 +65,7 @@
|
|
|
|
pthread_attr_init(&attr);
|
|
pthread_create(&thread_, &attr, &thread_function, this);
|
|
+ pthread_attr_destroy(&attr);
|
|
}
|
|
|
|
LinphoneMediaChannel::~LinphoneMediaChannel() {
|
|
@@ -118,8 +119,8 @@
|
|
mute_ = !send;
|
|
}
|
|
|
|
-float LinphoneMediaChannel::GetCurrentQuality() {}
|
|
-int LinphoneMediaChannel::GetOutputLevel() {}
|
|
+float LinphoneMediaChannel::GetCurrentQuality() { return 0; }
|
|
+int LinphoneMediaChannel::GetOutputLevel() { return 0; }
|
|
|
|
LinphoneMediaEngine::LinphoneMediaEngine() {}
|
|
LinphoneMediaEngine::~LinphoneMediaEngine() {}
|
|
@@ -139,7 +140,7 @@
|
|
|
|
#ifdef HAVE_SPEEX
|
|
ms_speex_codec_init();
|
|
- rtp_profile_set_payload(&av_profile, 110, &speex_wb);
|
|
+ rtp_profile_set_payload(&av_profile, 110, &payload_type_speex_wb);
|
|
codecs_.push_back(Codec(110, "speex", 8));
|
|
#endif
|
|
|
|
@@ -149,7 +150,7 @@
|
|
codecs_.push_back(Codec(102, "iLBC", 4));
|
|
#endif
|
|
|
|
- rtp_profile_set_payload(&av_profile, 0, &pcmu8000);
|
|
+ rtp_profile_set_payload(&av_profile, 0, &payload_type_pcmu8000);
|
|
codecs_.push_back(Codec(0, "PCMU", 2));
|
|
|
|
return true;
|
|
@@ -163,8 +164,8 @@
|
|
return new LinphoneMediaChannel();
|
|
}
|
|
|
|
-int LinphoneMediaEngine::SetAudioOptions(int options) {}
|
|
-int LinphoneMediaEngine::SetSoundDevices(int wave_in_device, int wave_out_device) {}
|
|
+int LinphoneMediaEngine::SetAudioOptions(int options) { return 0; }
|
|
+int LinphoneMediaEngine::SetSoundDevices(int wave_in_device, int wave_out_device) { return 0; }
|
|
|
|
-float LinphoneMediaEngine::GetCurrentQuality() {}
|
|
-int LinphoneMediaEngine::GetInputLevel() {}
|
|
+float LinphoneMediaEngine::GetCurrentQuality() { return 0; }
|
|
+int LinphoneMediaEngine::GetInputLevel() { return 0; }
|
|
--- ./kopete/protocols/jabber/jingle/libjingle/talk/session/phone/portaudiomediaengine.cc.orig Mon Mar 20 23:18:35 2006
|
|
+++ ./kopete/protocols/jabber/jingle/libjingle/talk/session/phone/portaudiomediaengine.cc Thu Apr 20 02:38:21 2006
|
|
@@ -30,6 +30,7 @@
|
|
// ORTP settings
|
|
#define MAX_RTP_SIZE 1500 // From mediastreamer
|
|
|
|
+#define rtp_session_max_buf_size_set(session, bufsize) (rtp_session_set_recv_buf_size(session, bufsize))
|
|
|
|
// -----------------------------------------------------------------------------
|
|
|
|
--- ./kopete/protocols/jabber/jingle/libjingle/talk/third_party/mediastreamer/audiostream.c.orig Mon Mar 20 23:18:36 2006
|
|
+++ ./kopete/protocols/jabber/jingle/libjingle/talk/third_party/mediastreamer/audiostream.c Thu Apr 20 02:38:21 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();
|
|
@@ -192,7 +193,13 @@
|
|
else stream->soundread=ms_read_new(infile);
|
|
if (outfile==NULL) stream->soundwrite=snd_card_create_write_filter(playcard);
|
|
else stream->soundwrite=ms_write_new(outfile);
|
|
-
|
|
+
|
|
+ if ((stream->soundread==NULL) || (stream->soundwrite==NULL)){
|
|
+ /* big problem: we do not have valid sound input/output */
|
|
+ g_error("mediastream.c: No soundcard input/output available.");
|
|
+ return NULL;
|
|
+ }
|
|
+
|
|
/* creates the couple of encoder/decoder */
|
|
pt=rtp_profile_get_payload(profile,payload);
|
|
if (pt==NULL){
|
|
@@ -217,8 +224,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();
|
|
|
|
--- ./kopete/protocols/jabber/jingle/libjingle/talk/third_party/mediastreamer/msGSMdecoder.h.orig Mon Mar 20 23:18:36 2006
|
|
+++ ./kopete/protocols/jabber/jingle/libjingle/talk/third_party/mediastreamer/msGSMdecoder.h Thu Apr 20 02:38:21 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;
|
|
--- ./kopete/protocols/jabber/jingle/libjingle/talk/third_party/mediastreamer/msGSMencoder.h.orig Mon Mar 20 23:18:36 2006
|
|
+++ ./kopete/protocols/jabber/jingle/libjingle/talk/third_party/mediastreamer/msGSMencoder.h Thu Apr 20 02:38:21 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;
|
|
|
|
--- ./kopete/protocols/jabber/jingle/libjingle/talk/third_party/mediastreamer/msbuffer.h.orig Mon Mar 20 23:18:36 2006
|
|
+++ ./kopete/protocols/jabber/jingle/libjingle/talk/third_party/mediastreamer/msbuffer.h Thu Apr 20 02:38:21 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;
|
|
--- ./kopete/protocols/jabber/jingle/libjingle/talk/third_party/mediastreamer/msfifo.c.orig Mon Mar 20 23:18:36 2006
|
|
+++ ./kopete/protocols/jabber/jingle/libjingle/talk/third_party/mediastreamer/msfifo.c Thu Apr 20 02:38:21 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)
|
|
--- ./kopete/protocols/jabber/jingle/libjingle/talk/third_party/mediastreamer/msqueue.c.orig Mon Mar 20 23:18:36 2006
|
|
+++ ./kopete/protocols/jabber/jingle/libjingle/talk/third_party/mediastreamer/msqueue.c Thu Apr 20 02:38:21 2006
|
|
@@ -53,4 +53,7 @@
|
|
q->size++;
|
|
}
|
|
|
|
+MSMessage *ms_queue_peek_last(MSQueue *q){
|
|
+ return q->last;
|
|
+}
|
|
|
|
--- ./kopete/protocols/jabber/jingle/libjingle/talk/third_party/mediastreamer/msqueue.h.orig Mon Mar 20 23:18:36 2006
|
|
+++ ./kopete/protocols/jabber/jingle/libjingle/talk/third_party/mediastreamer/msqueue.h Thu Apr 20 02:38:21 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)
|
|
|
|
--- ./kopete/protocols/jabber/jingle/libjingle/talk/third_party/mediastreamer/msrtprecv.h.orig Thu Mar 16 18:43:05 2006
|
|
+++ ./kopete/protocols/jabber/jingle/libjingle/talk/third_party/mediastreamer/msrtprecv.h Fri Apr 21 10:56:34 2006
|
|
@@ -34,7 +34,7 @@
|
|
|
|
#define MSRTPRECV_MAX_OUTPUTS 1 /* max output per filter*/
|
|
|
|
-#define MSRTPRECV_DEF_GRAN 4096 /* the default granularity*/
|
|
+#define MSRTPRECV_DEF_GRAN 320 /* the default granularity*/
|
|
|
|
struct _MSRtpRecv
|
|
{
|
|
@@ -47,6 +47,8 @@
|
|
RtpSession *rtpsession;
|
|
guint32 prev_ts;
|
|
gint stream_started;
|
|
+ gint payload_expected;
|
|
+ gboolean ignore;
|
|
};
|
|
|
|
typedef struct _MSRtpRecv MSRtpRecv;
|
|
--- ./kopete/protocols/jabber/jingle/libjingle/talk/third_party/mediastreamer/msrtpsend.c.orig Mon Mar 20 23:18:36 2006
|
|
+++ ./kopete/protocols/jabber/jingle/libjingle/talk/third_party/mediastreamer/msrtpsend.c Thu Apr 20 02:38:21 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->rcv.profile,r->rtpsession->rcv.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);
|
|
@@ -139,8 +139,9 @@
|
|
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);
|
|
}
|
|
--- ./kopete/protocols/jabber/jingle/libjingle/talk/third_party/mediastreamer/msrtpsend.h.orig Fri May 5 23:32:24 2006
|
|
+++ ./kopete/protocols/jabber/jingle/libjingle/talk/third_party/mediastreamer/msrtpsend.h Fri May 5 23:32:42 2006
|
|
@@ -34,7 +34,7 @@
|
|
|
|
#define MSRTPSEND_MAX_INPUTS 1 /* max input per filter*/
|
|
|
|
-#define MSRTPSEND_DEF_GRAN 4096/* the default granularity*/
|
|
+#define MSRTPSEND_DEF_GRAN 160 /* the default granularity*/
|
|
|
|
struct _MSRtpSend
|
|
{
|
|
--- ./kopete/protocols/jabber/jingle/libjingle/talk/third_party/mediastreamer/msspeexdec.c.orig Mon Mar 20 23:18:36 2006
|
|
+++ ./kopete/protocols/jabber/jingle/libjingle/talk/third_party/mediastreamer/msspeexdec.c Thu Apr 20 02:38:22 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;
|
|
}
|
|
|
|
--- ./kopete/protocols/jabber/jingle/libjingle/talk/third_party/mediastreamer/msspeexenc.c.orig Mon Mar 20 23:18:36 2006
|
|
+++ ./kopete/protocols/jabber/jingle/libjingle/talk/third_party/mediastreamer/msspeexenc.c Thu Apr 20 02:38:22 2006
|
|
@@ -157,6 +157,7 @@
|
|
{
|
|
if (obj->initialized){
|
|
speex_encoder_destroy(obj->speex_state);
|
|
+ speex_bits_destroy(&obj->bits);
|
|
obj->initialized=0;
|
|
}
|
|
}
|
|
--- ./kopete/protocols/jabber/jingle/libjingle/talk/third_party/mediastreamer/mssync.c.orig Mon Mar 20 23:18:36 2006
|
|
+++ ./kopete/protocols/jabber/jingle/libjingle/talk/third_party/mediastreamer/mssync.c Thu Apr 20 02:38:22 2006
|
|
@@ -189,5 +189,6 @@
|
|
g_mutex_free(sync->lock);
|
|
g_cond_free(sync->thread_cond);
|
|
g_cond_free(sync->stop_cond);
|
|
+ return 0;
|
|
}
|
|
|
|
--- ./kopete/protocols/jabber/jingle/libjingle/talk/third_party/mediastreamer/mstimer.c.orig Mon Mar 20 23:18:36 2006
|
|
+++ ./kopete/protocols/jabber/jingle/libjingle/talk/third_party/mediastreamer/mstimer.c Thu Apr 20 02:38:22 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;
|
|
}
|
|
|
|
--- ./kopete/protocols/jabber/jingle/libjingle/talk/third_party/mediastreamer/osscard.c.orig Mon Mar 20 23:18:36 2006
|
|
+++ ./kopete/protocols/jabber/jingle/libjingle/talk/third_party/mediastreamer/osscard.c Thu Apr 20 02:38:22 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:
|
|
--- kopete/protocols/jabber/jingle/libjingle/talk/xmpp/saslplainmechanism.h.orig Wed May 10 07:43:35 2006
|
|
+++ kopete/protocols/jabber/jingle/libjingle/talk/xmpp/saslplainmechanism.h Wed May 10 07:44:01 2006
|
|
@@ -48,7 +48,7 @@
|
|
|
|
FormatXmppPassword credential;
|
|
credential.Append("\0", 1);
|
|
- credential.Append(user_jid_.Str());
|
|
+ credential.Append(user_jid_.node());
|
|
credential.Append("\0", 1);
|
|
credential.Append(&password_);
|
|
el->AddText(Base64EncodeFromArray(credential.GetData(), credential.GetLength()));
|
|
--- kopete/protocols/jabber/jingle/libjingle/talk/third_party/mediastreamer/msrtprecv.c.orig Sun Oct 1 19:26:45 2006
|
|
+++ kopete/protocols/jabber/jingle/libjingle/talk/third_party/mediastreamer/msrtprecv.c Mon Dec 18 16:26:36 2006
|
|
@@ -26,7 +26,7 @@
|
|
MSMessage *msgb_2_ms_message(mblk_t* mp){
|
|
MSMessage *msg;
|
|
MSBuffer *msbuf;
|
|
- if (mp->b_datap->ref_count!=1) return NULL; /* cannot handle properly non-unique buffers*/
|
|
+ if (mp->b_datap->db_ref!=1) return NULL; /* cannot handle properly non-unique buffers*/
|
|
/* create a MSBuffer using the mblk_t buffer */
|
|
msg=ms_message_alloc();
|
|
msbuf=ms_buffer_alloc(0);
|
|
@@ -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->snd.profile,r->rtpsession->snd.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;
|
|
}
|