[asterisk-dev] MIXMONITOR - periodic beep is not present in RECORDING

bala murugan fightwithme at gmail.com
Wed Jan 12 12:36:41 CST 2022


Thanks jonathan

I will flip them and give it a try

Can you also share the patch  for 1.6.2 ?

thanks,
Bala

On Wed, Jan 12, 2022 at 1:12 PM Jonathan Rose <
jonathan.rose at motorolasolutions.com> wrote:

>
>
> On Wed, Jan 12, 2022 at 12:08 PM bala murugan <fightwithme at gmail.com>
> wrote:
>
>> Thanks jonathan ,
>>
>> I am ok in modifying the source and trying . I looked at the source
>> audiohook.c:audio_audiohook_write_list() and i did see the below order
>>
>> 1)AST_LIST_TRAVERSE_SAFE_BEGIN(&audiohook_list->spy_list, audiohook, list)
>> {
>>
>> *2) if* (!AST_LIST_EMPTY(&audiohook_list->whisper_list)) {
>>
>> *3) if* (!AST_LIST_EMPTY(&audiohook_list->manipulate_list)) {
>>
>> Are you saying moving this around as below will help  or what is the
>> recommended move to try ?
>> 1) *if* (!AST_LIST_EMPTY(&audiohook_list->manipulate_list)) {
>> 2)*if* (!AST_LIST_EMPTY(&audiohook_list->whisper_list)) {
>> 3)AST_LIST_TRAVERSE_SAFE_BEGIN(&audiohook_list->spy_list, audiohook, list)
>> {
>>
>> Also you have mentioned unexpected consequences from moving these around
>> , any idea what it would be? , will it mess the recording ?
>> affect the call quality ? If you know the specific then it will help to
>> see will it be worth trying .
>>
>> Also is there an existing patch available for the changes you mentioned?
>>
>
> Well, I have a patch that I've written in the past to do such a thing at
> some point, but it was against Asterisk 1.6.2 so that probably isn't
> something you want.
>
> Assuming you are looking at master from https://gerrit.asterisk.org...
>
>          /* ---Part_2: Send middle_frame to spy and manipulator lists.
>>  middle_frame is guaranteed to be SLINEAR here.*/
>>         /* Queue up signed linear frame to each spy */
>>         AST_LIST_TRAVERSE_SAFE_BEGIN(&audiohook_list->spy_list,
>> audiohook, list) {
>>                 ast_audiohook_lock(audiohook);
>>                 if (audiohook->status != AST_AUDIOHOOK_STATUS_RUNNING) {
>>                         AST_LIST_REMOVE_CURRENT(list);
>>                         removed = 1;
>>                         ast_audiohook_update_status(audiohook,
>> AST_AUDIOHOOK_STATUS_DONE);
>>                         ast_audiohook_unlock(audiohook);
>>                         if (ast_channel_is_bridged(chan)) {
>>                                 ast_channel_set_unbridged_nolock(chan, 1);
>>                         }
>>                         continue;
>>                 }
>>                 audiohook_list_set_hook_rate(audiohook_list, audiohook,
>> &internal_sample_rate);
>>                 ast_audiohook_write_frame(audiohook, direction,
>> middle_frame);
>>                 ast_audiohook_unlock(audiohook);
>>         }
>>         AST_LIST_TRAVERSE_SAFE_END;
>
>
> This is the spy block. We're going to swap this whole block for the
> manipulate block
>
>         /* Pass off frame to manipulate audiohooks */
>>         if (!AST_LIST_EMPTY(&audiohook_list->manipulate_list)) {
>>
>> AST_LIST_TRAVERSE_SAFE_BEGIN(&audiohook_list->manipulate_list, audiohook,
>> list) {
>>                         ast_audiohook_lock(audiohook);
>>                         if (audiohook->status !=
>> AST_AUDIOHOOK_STATUS_RUNNING) {
>>                                 AST_LIST_REMOVE_CURRENT(list);
>>                                 removed = 1;
>>                                 ast_audiohook_update_status(audiohook,
>> AST_AUDIOHOOK_STATUS_DONE);
>>                                 ast_audiohook_unlock(audiohook);
>>                                 /* We basically drop all of our links to
>> the manipulate audiohook and prod it to do it's own destructive things */
>>                                 audiohook->manipulate_callback(audiohook,
>> chan, NULL, direction);
>>                                 if (ast_channel_is_bridged(chan)) {
>>
>> ast_channel_set_unbridged_nolock(chan, 1);
>>                                 }
>>                                 continue;
>>                         }
>>                         audiohook_list_set_hook_rate(audiohook_list,
>> audiohook, &internal_sample_rate);
>>                         /*
>>                          * Feed in frame to manipulation.
>>                          */
>>                         if (!audiohook->manipulate_callback(audiohook,
>> chan, middle_frame, direction)) {
>>                                 /*
>>                                  * XXX FAILURES ARE IGNORED XXX
>>                                  * If the manipulation fails then the
>> frame will be returned in its original state.
>>                                  * Since there are potentially more
>> manipulator callbacks in the list, no action should
>>                                  * be taken here to exit early.
>>                                  */
>>                                 middle_frame_manipulated = 1;
>>                         }
>>                         ast_audiohook_unlock(audiohook);
>>                 }
>>                 AST_LIST_TRAVERSE_SAFE_END;
>>         }
>
>
> Just flip them and you should be golden.
> --
>
> *Jonathan R. Rose*Senior Systems Engineer
> Emergency Call Handling
> Motorola Solutions
>
> email: jonathan.rose at motorolasolutions.com
>
> *For more information on how and why we collect your personal information,
> please visit our Privacy Policy
> <https://www.motorolasolutions.com/en_us/about/privacy-policy.html?elqTrackId=8980d888905940e39a2613a7a3dcb0a7&elqaid=2786&elqat=2#privacystatement>.*
> --
> _____________________________________________________________________
> -- Bandwidth and Colocation Provided by http://www.api-digital.com --
>
> asterisk-dev mailing list
> To UNSUBSCRIBE or update options visit:
>    http://lists.digium.com/mailman/listinfo/asterisk-dev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-dev/attachments/20220112/40f1ddbd/attachment.html>


More information about the asterisk-dev mailing list