Hi all,
in the process of developing a video plugin for ekiga/opal I
noticed some things that I would like
to clarify. Everything mentioned here refers to the latest
HEAD version of OPAL, EKIGA nd PWLIB.I
am posting this to both openh323/opal and ekiga lists since
some topics do concern both software
packages..
OPAL issue:
- in patch.cxx OpalMediaPatch::Main() we do a sleep (5)
after each packet received
5ms sleeping is much too long and has lead to buffer
overruns in the UDP input que in my case
(e.g. if a frame is transmitted as 4 packets at 25fps, and
we need 20 ms waiting after the
received packet, leaving only another 20 ms per frame to
decode and display it - not enough in my
case) Right now my workaround is to wait 5 ms only after
every frame since I have not yet
understood the motivation for this sleep - the select that
is called in order to collect the
packets should e blocking anyway, so we dont need any sleep?
Or does this depend on the platform?
Possibly this problem doesnt appear on windows - there is an
#if !defined (WIN32) in the code.
Also I do not understand which other thread should be
allowed to take the mutex...
EKIGA bug:
- EKIGA does not complete a remotely initiated termination
of a call (see attached file
terminate.txt) - happens with different endpoints. If video
is activated, outbound video
transmission does not even stop. If the connection is
terminated by ekiga everything works like
expected.
Plugin uncertainties:
- dynamic RTP
If I understand correctly, EKIGA/OPAL should support
dynamic RTP payload types (like in the
speex plugin) for video as well.
- Is it correct interpretation of RFC 4566 (please
advise if there is an RFC more specific on
dynamic RTP PTs) that the rtpmap attribute specifies the PT
on which it will be received and that
it can be asymmetric (e.g. A sending with PT 96 while
receiving the same codec on 99 because A
sent an SDP line "a=rtpmap:99 X/90000" and B
"a=rtpmap:96 X/90000"?
- How do I handle dynamic RTP types in a video plugin? As
I understand there are two options -
shared RTP code (e.g. speex) and separately coded RTP (e.g.
h263ffmpeg.cxx). If I understand
correctly I have to register a dynamic PT codec plugin with
the RTPTypeDynamic flag. - With which
PT do I register my plugin? How do I know with which RTP PT
to tag the outgoing frames? Or is it
mandatory to use the shared RTP code in this case? How do I
put in the correct timecode and maker
in that case? Also, if I add the RTPTypeDynamic flag instead
of RTPTypeExplicit, the codec does no
longer appear in the EKIGA codec list...
- fmtp handling
How is the a=fmtp line in sip/sdp handled? I noticed that
it is possible to hand an fmtp line
from the encoder side to the SDP handler like in speex.
However this happens BEFORE options like
width and height of frame are set up, making it impossible
to include anything based on that in
the fmtp line, which is sometimes necessary. Also I am
wondering how the received a=fmtp line is
passed to the decoder.
General Questions:
- cerr and PTRACEs commented out in h323ffmpeg.cxx
All log output in h323ffmpeg.cxx is commented out. What
would be the correct way for outputting
log information in a video plugin without introducing
unneccessary dependencies?
EKIGA enhancement proposals for discussion:
- Bitrate widget in ekiga
The bitrate slide is in kbyte/s, however I am used rather
to kbit/s and always have to
calculate... I wonder how you feel about that, actually the
codec plugins also handle the setting
kbit/s. Also I would like to propose to higher the bitrate
range to at least 2mbit = 250 kbyte/s.
- make the max. RTP payload size configurable (also OPAL)
Perhaps even more options should be configurable in the
plugins? (right now I know only of
width, height, bitrate and a quality variable)
- FPS counter (also OPAL)
It would be nice to have an frames/s counter in ekiga
similar to the audio and video bitrate
counter
- Jitter buffer
In ekiga CVS where has the jitter buffer display gone to?
I also would like to ask if the
current layout will be the final one - I like the
"old" with the embedded sliders and the simpler
embedded video window from ekiga 2.0.3 better...
It would be nice to get a some advice and possibly some
changes based on the above.. In case of
questions dont hesitate to ask for me to clarify
Thanks in advance,
Matthias
___________________________________________________________
Der frühe Vogel fängt den Wurm. Hier gelangen Sie zum neuen
Yahoo! Mail: http://mail.yahoo.de20
06/10/25 20:58:41.727 0:13.458 Housekeeper
RTP Found existing session 1
2006/10/25 20:58:42.356 0:14.087 RTP
Jitter...er:8472da8 RTP Receive statistics: packets=101
octets=16160 lost=0 tooLate=0 order=0 avgTime=16 maxTime=31
minTime=0 jitter=7 maxJitter=7
2006/10/25 20:58:42.727 0:14.458 Housekeeper RTP
Found existing session 1
2006/10/25 20:58:42.760 0:14.491 Media
Patc...ch:846afd8 RTP Transmit statistics: packets=101
octets=16160 avgTime=20 maxTime=41 minTime=0
2006/10/25 20:58:43.727 0:15.458 Housekeeper RTP
Found existing session 1
2006/10/25 20:58:44.357 0:16.088 RTP
Jitter...er:8472da8 RTP Receive statistics: packets=201
octets=32160 lost=0 tooLate=0 order=0 avgTime=20 maxTime=30
minTime=10 jitter=0 maxJitter=8
2006/10/25 20:58:44.727 0:16.458 Housekeeper RTP
Found existing session 1
2006/10/25 20:58:44.760 0:16.491 Media
Patc...ch:846afd8 RTP Transmit statistics: packets=201
octets=32160 avgTime=20 maxTime=40 minTime=0
2006/10/25 20:58:45.162 0:16.893 SIP
Transp...rt:843f910 SIP PDU Received on
udp$192.168.134.1:5060<if=udp$192.168.134.100:5063>
BYE sip:matthias-softphone 192.168.134.100:5063
SIP/2.0
CSeq: 102 BYE
Via: SIP/2.0/UDP
192.168.134.1:5060;branch=z9hG4bK0b444cd5;rport
User-Agent: X-Lite release 1103m
From: <sip:4711 192.168.134.1>;tag=as73e7415e
Call-ID: 16241d7d-c862-db11-8100-0012f018b0b9 matthias-laptop
To: "Matthias Schneider"
<sip:matthias-softphone 192.168.134.1>;tag=322b1d7d-c862-db11-8100-0012f01
8b0b9
Contact: <sip:4711 192.168.134.1>
Content-Length: 0
Max-Forwards: 70
2006/10/25 20:58:45.163 0:16.895 SIP
Transp...rt:843f910 SIP Queueing PDU: 102 BYE
sip:matthias-softphone 192.168.134.100:5063
2006/10/25 20:58:45.164 0:16.895 SIP
Transp...rt:843f910 SIP Waiting for PDU on
udp$192.168.134.1:5060<if=udp$192.168.134.100:5063>
2006/10/25 20:58:45.165 0:16.897 SIP
Handle...er:8465880 SIP Handling PDU 102 BYE
sip:matthias-softphone 192.168.134.100:5063
2006/10/25 20:58:45.167 0:16.898 SIP
Handle...er:8465880 SIP BYE received for call
16241d7d-c862-db11-8100-0012f018b0b9 matthias-laptop
2006/10/25 20:58:45.169 0:16.900 SIP
Handle...er:8465880 SIP Sending PDU on
udp$192.168.134.1:5060<if=udp$192.168.134.100:5063>
SIP/2.0 200 OK
CSeq: 102 BYE
Via: SIP/2.0/UDP
192.168.134.1:5060;branch=z9hG4bK0b444cd5;rport=5060;receive
d=192.168.134.1
From: <sip:4711 192.168.134.1>;tag=as73e7415e
Call-ID: 16241d7d-c862-db11-8100-0012f018b0b9 matthias-laptop
To: "Matthias Schneider"
<sip:matthias-softphone 192.168.134.1>;tag=322b1d7d-c862-db11-8100-0012f01
8b0b9
Allow:
INVITE,ACK,OPTIONS,BYE,CANCEL,NOTIFY,REFER,MESSAGE,INFO,PING
Content-Length: 0
2006/10/25 20:58:45.172 0:16.903 SIP
Handle...er:8465880 OpalCon SetPhase from EstablishedPhase
to ReleasingPhase
2006/10/25 20:58:45.173 0:16.904 SIP
Handle...er:8465880 OpalCon Releasing
Call[1]-EP<sip>[16241d7d-c862-db11-8100-0012f018b0b9matthias-laptop]
2006/10/25 20:58:45.175 0:16.906 SIP
Handle...er:8465880 OpalCon Call end reason for
16241d7d-c862-db11-8100-0012f018b0b9 matthias-laptop set to
EndedByRemoteUser
2006/10/25 20:58:45.176 0:16.907 SIP
Handle...er:8465880 SIP Awaiting next PDU.
2006/10/25 20:58:45.176 0:16.907
OnRelease:...se:8465528 SIP OnReleased:
Call[1]-EP<sip>[16241d7d-c862-db11-8100-0012f018b0b9matthias-laptop], phase = ReleasingPhase
2006/10/25 20:58:45.178 0:16.910
OnRelease:...se:8465528 OpalCon SetPhase from ReleasingPhase
to ReleasingPhase
2006/10/25 20:58:45.182 0:16.914
OnRelease:...se:8465528 Media Closing RTP for
OpalRTPMediaStream-Sink-G.711-ALaw-64k
2006/10/25 20:58:45.184 0:16.915
OnRelease:...se:8465528 RTP_UDP Session 1, Shutting down
write.
2006/10/25 20:58:45.185 0:16.916
OnRelease:...se:8465528 Media Closing stream
OpalRTPMediaStream-Sink-G.711-ALaw-64k
2006/10/25 20:58:45.187 0:16.918
OnRelease:...se:8465528 Media Disconnecting
OpalRTPMediaStream-Sink-G.711-ALaw-64k from patch thread
Patch OpalAudioMediaStream-Source-PCM-16
2006/10/25 20:58:45.211 0:16.942 Media
Patc...ch:846afd8 RTP_UDP Session 1, Write shutdown.
2006/10/25 20:58:45.212 0:16.943
OnRelease:...se:8465528 Patch Removing media stream sink
OpalRTPMediaStream-Sink-G.711-ALaw-64k
2006/10/25 20:58:45.727 0:17.458 Housekeeper RTP
Found existing session 1
2006/10/25 20:58:46.727 0:18.458 Housekeeper RTP
Found existing session 1
2006/10/25 20:58:47.727 0:19.458 Housekeeper RTP
Found existing session 1
2006/10/25 20:58:48.727 0:20.459 Housekeeper RTP
Found existing session 1
2006/10/25 20:58:49.240 0:20.971 RTP
Jitter...er:8472da8 RTP SentSenderReport:
ssrc=141150149 ntp=3370791529.1031581972 rtp=35360 psent=222
osent=35520
2006/10/25 20:58:49.242 0:20.973 RTP
Jitter...er:8472da8 RTP SentReceiverReport:
ssrc=661912853 fraction=0 lost=0 last_seq=0 jitter=2 lsr=0
dlsr=0
2006/10/25 20:58:49.244 0:20.975 RTP
Jitter...er:8472da8 RTP Sending SDES: matthias matthias-laptop
2006/10/25 20:58:49.728 0:21.459 Housekeeper RTP
Found existing session 1
2006/10/25 20:58:50.728 0:22.459 Housekeeper RTP
Found existing session 1
2006/10/25 20:58:51.728 0:23.459 Housekeeper RTP
Found existing session 1
2006/10/25 20:58:52.728 0:24.459 Housekeeper RTP
Found existing session 1
2006/10/25 20:58:53.728 0:25.459 Housekeeper RTP
Found existing session 1
2006/10/25 20:58:54.728 0:26.459 Housekeeper RTP
Found existing session 1
2006/10/25 20:58:55.728 0:27.459 Housekeeper RTP
Found existing session 1
2006/10/25 20:58:56.728 0:28.459 Housekeeper RTP
Found existing session 1
2006/10/25 20:58:57.728 0:29.459 Housekeeper RTP
Found existing session 1
2006/10/25 20:58:58.728 0:30.459 Housekeeper RTP
Found existing session 1
2006/10/25 20:58:59.728 0:31.459 Housekeeper RTP
Found existing session 1
2006/10/25 20:59:00.728 0:32.459 Housekeeper RTP
Found existing session 1
2006/10/25 20:59:01.664 0:33.396 RTP
Jitter...er:8472da8 RTP SentSenderReport:
ssrc=141150149 ntp=3370791541.2854543850 rtp=35360 psent=222
osent=35520
2006/10/25 20:59:01.666 0:33.398 RTP
Jitter...er:8472da8 RTP SentReceiverReport:
ssrc=661912853 fraction=0 lost=0 last_seq=19535 jitter=2
lsr=0 dlsr=0
2006/10/25 20:59:01.669 0:33.400 RTP
Jitter...er:8472da8 RTP Sending SDES: matthias matthias-laptop
2006/10/25 20:59:01.728 0:33.459 Housekeeper RTP
Found existing session 1
2006/10/25 20:59:02.728 0:34.459 Housekeeper RTP
Found existing session 1
2006/10/25 20:59:03.728 0:35.459 Housekeeper RTP
Found existing session 1
2006/10/25 20:59:04.732 0:36.464 Housekeeper RTP
Found existing session 1
2006/10/25 20:59:05.733 0:37.464 Housekeeper RTP
Found existing session 1
2006/10/25 20:59:06.733 0:38.464 Housekeeper RTP
Found existing session 1
2006/10/25 20:59:07.733 0:39.464 Housekeeper RTP
Found existing session 1
2006/10/25 20:59:08.733 0:40.464 Housekeeper RTP
Found existing session 1
2006/10/25 20:59:08.833 0:40.564 Housekeeper SIP
Set state Terminated_Success for transaction 1 INVITE
2006/10/25 20:59:09.733 0:41.464 Housekeeper RTP
Found existing session 1
2006/10/25 20:59:10.733 0:42.464 Housekeeper RTP
Found existing session 1
2006/10/25 20:59:11.733 0:43.464 Housekeeper RTP
Found existing session 1
2006/10/25 20:59:12.729 0:44.460 Housekeeper SIP
Set state Terminated_Success for transaction 2 INVITE
2006/10/25 20:59:12.733 0:44.464 Housekeeper RTP
Found existing session 1
2006/10/25 20:59:13.733 0:45.464 Housekeeper RTP
Found existing session 1
2006/10/25 20:59:14.733 0:46.464 Housekeeper RTP
Found existing session 1
2006/10/25 20:59:15.733 0:47.464 Housekeeper RTP
Found existing session 1
2006/10/25 20:59:15.773 0:47.504 RTP
Jitter...er:8472da8 RTP SentSenderReport:
ssrc=141150149 ntp=3370791555.3321821224 rtp=35360 psent=222
osent=35520
2006/10/25 20:59:15.773 0:47.504 RTP
Jitter...er:8472da8 RTP SentReceiverReport:
ssrc=661912853 fraction=0 lost=0 last_seq=19535 jitter=2
lsr=0 dlsr=0
2006/10/25 20:59:15.773 0:47.504 RTP
Jitter...er:8472da8 RTP Sending SDES: matthias matthias-laptop
2006/10/25 20:59:16.733 0:48.464 Housekeeper RTP
Found existing session 1
2006/10/25 20:59:17.733 0:49.464 Housekeeper RTP
Found existing session 1
2006/10/25 20:59:18.733 0:50.464 Housekeeper RTP
Found existing session 1
2006/10/25 20:59:19.733 0:51.465 Housekeeper RTP
Found existing session 1
2006/10/25 20:59:20.733 0:52.465 Housekeeper RTP
Found existing session 1
2006/10/25 20:59:21.734 0:53.465 Housekeeper RTP
Found existing session 1
2006/10/25 20:59:22.734 0:54.465 Housekeeper RTP
Found existing session 1
2006/10/25 20:59:23.734 0:55.465 Housekeeper RTP
Found existing session 1
2006/10/25 20:59:24.734 0:56.465 Housekeeper RTP
Found existing session 1
2006/10/25 20:59:25.742 0:57.473 Housekeeper RTP
Found existing session 1
2006/10/25 20:59:26.742 0:58.473 Housekeeper RTP
Found existing session 1
|