Страница 1 из 1

Перекодирование аудио в meetme

СообщениеДобавлено: 17 ноя 2014, 09:30
drug591
Добрый день. Возможно пишу не в тот раздел. Возможно ли сделать так, чтобы в режиме конференции meetme не перекодировало из одного кодека в другой, а просто микшировало все аудио-каналы и отправляло все подключенным абонентам. Все абоненты используют одинаковый кодек. Т.к. он не поддерживается Asterisk'ом пришлось в заголовках подменять название кодека на поддерживаемый. И естественно в таком виде конференция не работает. Прошу подсказки на каком мементе в meetme происходит перекодирование из "приходящего" кодека в slin и обратно.

Re: Перекодирование аудио в meetme

СообщениеДобавлено: 17 ноя 2014, 09:42
gland
может что-то не так понял, но в meetme кажется по умолчанию используется G711u, и если на клиентах тот же кодек, то * ничего не перекодирует.

Re: Перекодирование аудио в meetme

СообщениеДобавлено: 17 ноя 2014, 10:57
drug591
Вот мне этот момент тоже не совсем понятен. Я выводил в файл форматы, которые используются в конференции при звонке. Получалась такая схема: кодек клиента -> ulaw -> slin. И в исходниках meetme явно указано:
Код: выделить все
if ((f->frametype == AST_FRAME_VOICE) && (f->subclass.format.id == AST_FORMAT_SLINEAR)) {
               if (user->talk.actual) {
                  ast_frame_adjust_volume(f, user->talk.actual);
               }

               if (ast_test_flag64(confflags, (CONFFLAG_OPTIMIZETALKER | CONFFLAG_MONITORTALKER))) {
                  if (user->talking == -1) {
                     user->talking = 0;
                  }

                  res = ast_dsp_silence(dsp, f, &totalsilence);
                  if (!user->talking && totalsilence < MEETME_DELAYDETECTTALK) {
                     set_user_talking(chan, conf, user, 1, ast_test_flag64(confflags, CONFFLAG_MONITORTALKER));
                  }

                  if (user->talking && totalsilence > MEETME_DELAYDETECTENDTALK) {
                     set_user_talking(chan, conf, user, 0, ast_test_flag64(confflags, CONFFLAG_MONITORTALKER));
                  }
               }
               if (using_pseudo) {
                  /* Absolutely do _not_ use careful_write here...
                     it is important that we read data from the channel
                     as fast as it arrives, and feed it into the conference.
                     The buffering in the pseudo channel will take care of any
                     timing differences, unless they are so drastic as to lose
                     audio frames (in which case carefully writing would only
                     have delayed the audio even further).
                  */
                  /* As it turns out, we do want to use careful write.  We just
                     don't want to block, but we do want to at least *try*
                     to write out all the samples.
                   */
                  if (user->talking || !ast_test_flag64(confflags, CONFFLAG_OPTIMIZETALKER)) {
                     careful_write(fd, f->data.ptr, f->datalen, 0);
                  }
               }
            }

Возможно я не туда смотрю. Да и на каком-то ресурсе я встречал, что внутри meetme используется slin.

Re: Перекодирование аудио в meetme

СообщениеДобавлено: 17 ноя 2014, 13:19
gland
речь про это?

Re: Перекодирование аудио в meetme

СообщениеДобавлено: 17 ноя 2014, 14:00
drug591
Да, ковыряюсь в исходниках app_meetme.c

Re: Перекодирование аудио в meetme

СообщениеДобавлено: 17 ноя 2014, 14:21
gland
странный путь решения проблемы...
у клиентов какие кодеки используются?

Re: Перекодирование аудио в meetme

СообщениеДобавлено: 17 ноя 2014, 14:45
drug591
Кодеки используются самописные, поэтому приходится так извращаться. В принципе я думал сделать так. Перед перекодированием из одного кодека в другой поставить условие если используется определенный формат, то не выполнять перекодирование и сразу переходить к микшированию. Но пока что не могу разобраться как meetme перекодирует аудио.

Re: Перекодирование аудио в meetme

СообщениеДобавлено: 17 ноя 2014, 14:48
gland
meetme ничего не перекодирует - перекодирует *

Re: Перекодирование аудио в meetme

СообщениеДобавлено: 17 ноя 2014, 14:52
gland
drug591 писал(а):Кодеки самописные

интересно,чем они примечательны

Re: Перекодирование аудио в meetme

СообщениеДобавлено: 17 ноя 2014, 15:51
drug591
Кодек ничем не примечателен, просто нужно использовать именно его.
gland писал(а):meetme ничего не перекодирует - перекодирует *

Как я понимаю выбор кодека осуществляется в channel.c в функции set_format и там же происходит определение нужно ли перекодировать из одного формата в другой?