[asterisk-dev] BugID 014021, Zap/DAHDI timers, internal timing and packetization
Dan Austin
Dan_Austin at Phoenix.com
Thu Jan 22 16:46:23 CST 2009
Russell wrote:
>> I know the issue can be solved, but I am not sure it can be solved
>> in 1.4 or 1.6.0 since the fix will likely need changes to the
>> channel structure.
> It definitely sounds like you're on the right track to the fix for
> this. Thank you for working on it!
> As far as changing ast_channel goes, we might be in luck. I just
> deprecated a field in the ast_channel struct as a part of a bug fix.
> However, it's still there for the sake of maintaining ABI. So, we
> actually have 80 bytes that we can use for other things if needed. :-)
> You could change:
> char unused_old_dtmfq[AST_MAX_EXTENSION];
> to something like:
> union {
> /*! This is a deprecated field of the ast_channel struct */
> char unused_old_dtmfq[AST_MAX_EXTENSION];
> /*! The size of the following struct must be less than or equal
>to AST_MAX_EXTENSION */
> struct {
> uint16_t timer_rate;
> };
> };
I wanted to follow up on this again. I have not had time to
actually work on it in the past month, but I tried to think
through the options.
The solution is not trivial, otherwise I guess it would have
been solved by now.
I think we need to not call ast_rtp_raw_write from ast_rtp_write
if a smoother is present, but still feed the smoother. We then
need a way to process the smoother. The two options I see
are.
1.) A separate thread that sleeps, either for the packetization
value, or packet interval. I think this is fairly ugly, and
we would need to track the thread and kill it when the RTP
session ends.
2.) Use the ast_settimeout() function to setup a callback to
process the smoother buffer. The main issue with this would
be that other functions can and do reset the rate of the
timing fd. There are only a few users of ast_settimeout, and
maybe they can be taught to not use it, or a separate timing fd
just for the RTP stream (ugly?)
I'd appreciate any thoughts or opinions about either option.
Dan
More information about the asterisk-dev
mailing list