[asterisk-bugs] [Asterisk 0011429]: Sent RTP video packets have a timestamp based on a 8000 Hz clock instead of 90000 Hz when mark bit is on

noreply at bugs.digium.com noreply at bugs.digium.com
Fri Nov 30 17:16:03 CST 2007


A NOTE has been added to this issue. 
====================================================================== 
http://bugs.digium.com/view.php?id=11429 
====================================================================== 
Reported By:                sperreault
Assigned To:                
====================================================================== 
Project:                    Asterisk
Issue ID:                   11429
Category:                   Core/RTP
Reproducibility:            always
Severity:                   major
Priority:                   normal
Status:                     new
Asterisk Version:            SVN 
SVN Branch (only for SVN checkouts, not tarball releases):  trunk 
SVN Revision (number only!): 90351 
Disclaimer on File?:        N/A 
Request Review:              
====================================================================== 
Date Submitted:             11-30-2007 14:53 CST
Last Modified:              11-30-2007 17:16 CST
====================================================================== 
Summary:                    Sent RTP video packets have a timestamp based on a
8000 Hz clock instead of 90000 Hz when mark bit is on
Description: 
When you ast_write() a video packet, you are supposed to put the mark bit
into the LSB of the subclass member:

f->subclass = AST_FORMAT_H263 | 1;

This makes this conditional in ast_rtp_raw_write() true while it should be
false:

if (f->subclass & AST_FORMAT_AUDIO_MASK) {

The solution is simple: invert the video and audio code paths. First check
for video, and then if video is not present check for audio.
====================================================================== 

---------------------------------------------------------------------- 
 sperreault - 11-30-07 17:16  
---------------------------------------------------------------------- 
The trick is with the mask bit. If your video frame has the mask bit, then
the least significant bit of subclass will be 1, which will cause the audio
code to be executed. If you first check for video, then the video code will
be executed if there is video, regardless of the mask bit. 

Issue History 
Date Modified   Username       Field                    Change               
====================================================================== 
11-30-07 17:16  sperreault     Note Added: 0074619                          
======================================================================




More information about the asterisk-bugs mailing list