[asterisk-bugs] [JIRA] (ASTERISK-26875) app_mixmonitor: Recording out of sync when 183 but no RTP

Friendly Automation (JIRA) noreply at issues.asterisk.org
Fri Mar 24 07:27:10 CDT 2017


    [ https://issues.asterisk.org/jira/browse/ASTERISK-26875?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=236103#comment-236103 ] 

Friendly Automation commented on ASTERISK-26875:
------------------------------------------------

Change 5209 merged by Joshua Colp:
audiohook.c: Lost RTP packets lead to out-of-sync MixMonitor.

[https://gerrit.asterisk.org/5209|https://gerrit.asterisk.org/5209]

> app_mixmonitor: Recording out of sync when 183 but no RTP
> ---------------------------------------------------------
>
>                 Key: ASTERISK-26875
>                 URL: https://issues.asterisk.org/jira/browse/ASTERISK-26875
>             Project: Asterisk
>          Issue Type: Bug
>      Security Level: None
>          Components: Applications/app_mixmonitor
>    Affects Versions: 13.8.0
>         Environment: CentOS6.5X64
>            Reporter: Aaron An
>            Assignee: Aaron An
>
> My asterisk use MixMonitor to record, and it is randomly out of sync,I try to look for the root cause and find the solution.
> Both side are PJSIP channel.
> The scenario is very simple:
> Asterisk call Alias,Alias answer and then go to the DIALPLAN to start MixMonitor and Dial Bob,Bob response 183 with SDP but no RTP stream feed in time. the record is out of sync.
> just look at the audiohook.c line 180. if other_factory_samples is 0 we never flush the factory although  "our_factory_ms - other_factory_ms"  may very large.
> ====================audiohook.c=============================
> {noformat}
> 	our_factory_samples = ast_slinfactory_available(factory);    
> 	our_factory_ms = ast_tvdiff_ms(*rwtime, previous_time) + (our_factory_samples / (audiohook->hook_internal_samp_rate / 1000));    
> 	other_factory_samples = ast_slinfactory_available(other_factory);    
> 	other_factory_ms = other_factory_samples / (audiohook->hook_internal_samp_rate / 1000);    
>     
> 	if (ast_test_flag(audiohook, AST_AUDIOHOOK_TRIGGER_SYNC) && other_factory_samples && (our_factory_ms - other_factory_ms > AST_AUDIOHOOK_SYNC_TOLERANCE)) {        
> 		ast_debug(1, "Flushing audiohook %p so it remains in sync\n", audiohook);    
> 		ast_slinfactory_flush(factory);    
> 		ast_slinfactory_flush(other_factory);    
> 	}    
> {noformat}
> ====================audiohook.c=============================
> I think it should remove the condition "&& other_factory_samples". I have tested the scenario that out of sync recording, this fix it.



--
This message was sent by Atlassian JIRA
(v6.2#6252)



More information about the asterisk-bugs mailing list