mirror of
https://github.com/asterisk/asterisk.git
synced 2025-11-16 14:58:25 +00:00
Minor RTP video fixes, be more careful about closing fd's in meetme (bug #1743)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@3111 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -465,7 +465,8 @@ static int conf_run(struct ast_channel *chan, struct ast_conference *conf, int c
|
|||||||
int firstpass = 0;
|
int firstpass = 0;
|
||||||
int ret = -1;
|
int ret = -1;
|
||||||
int x;
|
int x;
|
||||||
int menu_active = 0;
|
int menu_active = 0;
|
||||||
|
int using_pseudo = 0;
|
||||||
|
|
||||||
struct ast_app *app;
|
struct ast_app *app;
|
||||||
char *agifile;
|
char *agifile;
|
||||||
@@ -561,6 +562,7 @@ zapretry:
|
|||||||
ast_log(LOG_WARNING, "Unable to open pseudo channel: %s\n", strerror(errno));
|
ast_log(LOG_WARNING, "Unable to open pseudo channel: %s\n", strerror(errno));
|
||||||
goto outrun;
|
goto outrun;
|
||||||
}
|
}
|
||||||
|
using_pseudo = 1;
|
||||||
/* Make non-blocking */
|
/* Make non-blocking */
|
||||||
flags = fcntl(fd, F_GETFL);
|
flags = fcntl(fd, F_GETFL);
|
||||||
if (flags < 0) {
|
if (flags < 0) {
|
||||||
@@ -885,7 +887,7 @@ zapretry:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (fd != chan->fds[0])
|
if (using_pseudo)
|
||||||
close(fd);
|
close(fd);
|
||||||
else {
|
else {
|
||||||
/* Take out of conference */
|
/* Take out of conference */
|
||||||
|
|||||||
16
rtp.c
16
rtp.c
@@ -544,6 +544,8 @@ struct ast_frame *ast_rtp_read(struct ast_rtp *rtp)
|
|||||||
rtp->lastividtimestamp = timestamp;
|
rtp->lastividtimestamp = timestamp;
|
||||||
rtp->f.samples = timestamp - rtp->lastividtimestamp;
|
rtp->f.samples = timestamp - rtp->lastividtimestamp;
|
||||||
rtp->lastividtimestamp = timestamp;
|
rtp->lastividtimestamp = timestamp;
|
||||||
|
rtp->f.delivery.tv_sec = 0;
|
||||||
|
rtp->f.delivery.tv_usec = 0;
|
||||||
if (mark)
|
if (mark)
|
||||||
rtp->f.subclass |= 0x1;
|
rtp->f.subclass |= 0x1;
|
||||||
|
|
||||||
@@ -1043,12 +1045,14 @@ static int ast_rtp_raw_write(struct ast_rtp *rtp, struct ast_frame *f, int codec
|
|||||||
/* Re-calculate last TS */
|
/* Re-calculate last TS */
|
||||||
rtp->lastts = rtp->lastts + ms * 90;
|
rtp->lastts = rtp->lastts + ms * 90;
|
||||||
/* If it's close to our prediction, go for it */
|
/* If it's close to our prediction, go for it */
|
||||||
if (abs(rtp->lastts - pred) < 7200) {
|
if (!f->delivery.tv_sec && !f->delivery.tv_usec) {
|
||||||
rtp->lastts = pred;
|
if (abs(rtp->lastts - pred) < 7200) {
|
||||||
rtp->lastovidtimestamp += f->samples;
|
rtp->lastts = pred;
|
||||||
} else {
|
rtp->lastovidtimestamp += f->samples;
|
||||||
ast_log(LOG_DEBUG, "Difference is %d, ms is %d\n", abs(rtp->lastts - pred), ms);
|
} else {
|
||||||
rtp->lastovidtimestamp = rtp->lastts;
|
ast_log(LOG_DEBUG, "Difference is %d, ms is %d (%d), pred/ts/samples %d/%d/%d\n", abs(rtp->lastts - pred), ms, ms * 90, rtp->lastts, pred, f->samples);
|
||||||
|
rtp->lastovidtimestamp = rtp->lastts;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* Get a pointer to the header */
|
/* Get a pointer to the header */
|
||||||
|
|||||||
Reference in New Issue
Block a user