[asterisk-commits] oej: branch oej/chocolate-video-congestion-11 r433444 - /team/oej/chocolate-v...
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Thu Mar 26 07:31:25 CDT 2015
Author: oej
Date: Thu Mar 26 07:31:23 2015
New Revision: 433444
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=433444
Log:
Trying to count single-payload RTP frames as well.
Modified:
team/oej/chocolate-video-congestion-11/res/res_rtp_asterisk.c
Modified: team/oej/chocolate-video-congestion-11/res/res_rtp_asterisk.c
URL: http://svnview.digium.com/svn/asterisk/team/oej/chocolate-video-congestion-11/res/res_rtp_asterisk.c?view=diff&rev=433444&r1=433443&r2=433444
==============================================================================
--- team/oej/chocolate-video-congestion-11/res/res_rtp_asterisk.c (original)
+++ team/oej/chocolate-video-congestion-11/res/res_rtp_asterisk.c Thu Mar 26 07:31:23 2015
@@ -4560,31 +4560,48 @@
return AST_LIST_FIRST(&frames);
}
}
- if (rtp->f.seqno != seqno && rtp->lastrxts == timestamp && AST_FORMAT_GET_TYPE(rtp->f.subclass.format.id) == AST_FORMAT_TYPE_VIDEO) ) {
- /* This is a new part of a larger video frame sent in multiple RTP payloads */
- /* We need to count these and when the frame is over, send to the bitrate estimator */
- lastrxts_reuse++;
- if (multi_payload_size == 0) {
- /* Second frame */
- multi_payload_size = rtp->f.datalen + (res - hdrlen);
- } else {
- multi_payload_size += res - hdrlen;
- }
- multi_payload_startts = rtp->lastrxts; /* When the first packet arrived */
-
- /* IF this stream is marked for REMB, process the bandwidth estimator */
- if (ast_rtp_instance_get_prop(rtp, AST_RTP_PROPERTY_RTCPFB_REMB)) {
- ast_rtp_remb_estimate(rtp );
- }
- }
- if (lastrxts_reuse && rtp->lastrxts != timestamp) {
- unsigned int transmissiontime = timestamp - multi_payload_startts;
- /* We have a new time stamp. */
- /* Do something with the data we have */
- ast_debug(1, " ===> Combined %d frames with an aggregated payload size (bytes) of %d. Transmission time %d millisecs\n", (int) lastrxts_reuse, (int) multi_payload_size, (int) transmissiontime);
- /* Reset counters */
- lastrxts_reuse = 0;
- multi_payload_size = 0;
+ if (AST_FORMAT_GET_TYPE(rtp->f.subclass.format.id) == AST_FORMAT_TYPE_VIDEO) {
+ if (rtp->f.seqno != seqno && rtp->lastrxts == timestamp) {
+ /* This is a new part of a larger video frame sent in multiple RTP payloads */
+ /* We need to count these and when the frame is over, send to the bitrate estimator */
+ if (lastrxts_reuse == 0) {
+ lastrxts_reuse=2;
+ } else {
+ lastrxts_reuse++;
+ }
+ if (multi_payload_size == 0) {
+ /* Second frame */
+ multi_payload_size = rtp->f.datalen + (res - hdrlen);
+ } else {
+ multi_payload_size += res - hdrlen;
+ }
+ multi_payload_startts = rtp->lastrxts; /* When the first packet arrived to us */
+ /* OEJ question: How do we measure the relative transmission time, network wise ?
+ Answer is propably hidden in RTCP code in this file.
+ */
+
+ /* IF this stream is marked for REMB, process the bandwidth estimator */
+ if (ast_rtp_instance_get_prop(rtp, AST_RTP_PROPERTY_RTCPFB_REMB)) {
+ ast_rtp_remb_estimate(rtp );
+ }
+ }
+ if (rtp->lastrxts != timestamp) {
+ /* We have a new frame */
+ unsigned int transmissiontime = 0;
+ if (lastrxts_reuse) {
+ transmissiontime = timestamp - multi_payload_startts;
+ } else {
+ lastrxts_reuse=1;
+ multi_payload_size += res - hdrlen;
+ transmissiontime = timestamp; /* Wrong - where's the network transmission? */
+ }
+ /* We have a new time stamp. */
+ /* Do something with the data we have */
+ ast_debug(1, " ===> Combined %d frames with an aggregated payload size (bytes) of %d. Transmission time %d millisecs\n", (int) lastrxts_reuse, (int) multi_payload_size, (int) transmissiontime);
+ /* Reset counters */
+ lastrxts_reuse = 0;
+ multi_payload_size = 0;
+ }
}
rtp->lastrxts = timestamp;
More information about the asterisk-commits
mailing list