[asterisk-commits] [svn-commits] file: trunk r111017 - in /trunk: ./ channels/chan_iax2.c
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Wed Mar 26 13:42:53 CDT 2008
Author: file
Date: Wed Mar 26 13:42:52 2008
New Revision: 111017
URL: http://svn.digium.com/view/asterisk?view=rev&rev=111017
Log:
Merged revisions 110628 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r110628 | file | 2008-03-25 11:37:35 -0300 (Tue, 25 Mar 2008) | 4 lines
Add an option (transmit_silence) which transmits silence during both Record() and DTMF generation. The reason this is an option is that in order to transmit silence we have to setup a translation path. This may not be needed/wanted in all cases.
(closes issue #10058)
Reported by: tracinet
........
Modified:
trunk/ (props changed)
trunk/channels/chan_iax2.c
Propchange: trunk/
------------------------------------------------------------------------------
Binary property 'branch-1.4-merged' - no diff available.
Modified: trunk/channels/chan_iax2.c
URL: http://svn.digium.com/view/asterisk/trunk/channels/chan_iax2.c?view=diff&rev=111017&r1=111016&r2=111017
==============================================================================
--- trunk/channels/chan_iax2.c (original)
+++ trunk/channels/chan_iax2.c Wed Mar 26 13:42:52 2008
@@ -488,6 +488,8 @@
unsigned int last;
/*! Last sent timestamp - never send the same timestamp twice in a single call */
unsigned int lastsent;
+ /*! Timestamp of the last video frame sent */
+ unsigned int lastvsent;
/*! Next outgoing timestamp if everything is good */
unsigned int nextpred;
/*! True if the last voice we transmitted was not silence/CNG */
@@ -4084,6 +4086,17 @@
p->nextpred = ms;
p->notsilenttx = 1;
}
+ } else if ( f->frametype == AST_FRAME_VIDEO ) {
+ /*
+ * IAX2 draft 03 says that timestamps MUST be in order.
+ * It does not say anything about several frames having the same timestamp
+ * When transporting video, we can have a frame that spans multiple iax packets
+ * (so called slices), so it would make sense to use the same timestamp for all of
+ * them
+ * We do want to make sure that frames don't go backwards though
+ */
+ if ( (unsigned int)ms < p->lastsent )
+ ms = p->lastsent;
} else {
/* On a dataframe, use last value + 3 (to accomodate jitter buffer shrinking) if appropriate unless
it's a genuine frame */
@@ -4467,11 +4480,22 @@
/* Mark that mini-style frame is appropriate */
sendmini = 1;
}
- if (((fts & 0xFFFF8000L) == (lastsent & 0xFFFF8000L)) &&
- (f->frametype == AST_FRAME_VIDEO) &&
- ((f->subclass & ~0x1) == pvt->svideoformat)) {
+ if ( f->frametype == AST_FRAME_VIDEO ) {
+ /*
+ * If the lower 15 bits of the timestamp roll over, or if
+ * the video format changed then send a full frame.
+ * Otherwise send a mini video frame
+ */
+ if (((fts & 0xFFFF8000L) == (pvt->lastvsent & 0xFFFF8000L)) &&
+ ((f->subclass & ~0x1) == pvt->svideoformat)
+ ) {
now = 1;
sendmini = 1;
+ } else {
+ now = 0;
+ sendmini = 0;
+ }
+ pvt->lastvsent = fts;
}
/* Allocate an iax_frame */
if (now) {
_______________________________________________
--Bandwidth and Colocation Provided by http://www.api-digital.com--
svn-commits mailing list
To UNSUBSCRIBE or update options visit:
http://lists.digium.com/mailman/listinfo/svn-commits
--
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.
More information about the asterisk-commits
mailing list