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.r...@motorolasolutions.com> wrote: > > > On Wed, Jan 12, 2022 at 12:08 PM bala murugan <fightwit...@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.r...@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
-- _____________________________________________________________________ -- 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