Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
В код надо добавить кейс чтоб не было преобр. формата 8000 Hz 16-Bit <> 8000 Hz 8-Bit
|
|||
|---|---|---|---|
|
#18+
Есть виртуальный голосовой модем, с т.зрения программ, которые должны с ним работать он поддерживат аудио-форматы: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Суть в том что все эти форматы - 8 bit 8000Hz. Хочется добавить стандартный формат: "PCM",16,0,(8000),(0),(0) Т.е. 16 bit 8000Hz. Место кода, которое занимается преобразованием "туда-обратно" мне известно. Мне нужно добавить case, который вообще не делает никакого преобразования, но я туплю, плаваю в C++: Вот код, думаю выписал все необходимое: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. case 0: -это SIGNED PCM 8bits 8000Hz case 1,128,130 -это UNSIGNED PCM 8bits 8000Hz Если я правильно секу то код как раз делает преобразование между 16bit 8000Hz и 8bits 8000Hz(в 2-х вариантах). Остальные варианты linear-ulaw, linear-alaw приводить не стал, дабы не запутывать. Дык вот мне надо добавить кейс, где преобразование полностью отсутствует, т.е. ps=pb (Buf=Buf2) Как сделать? Проблема связана с желанием использовать модем под TAPI-драйвер, а он завязан на "Wave Unimodem transform module" . XformID (NT Wavedriver) Так вот, на всех системах Виста и выше "Wave Unimodem transform module" с XformID=8, 10 и 11 (т.е. как раз все форматы 8-bit 8000 Hz) имеет брак, т.е. PlayBack просто не работает (звук в одну сторону). На XP кстати работает. На >=Vista Работает Код: plaintext 1. (ADPCM) -но там очень сложный кодер/декодер - не вариант На >=Vista Работает Код: plaintext 1. (Null transform, no conversion.) Вот этим и хочу воспользоваться. Но для этого надо убрать преобразование аудиоданных в коде самого модема (почему 16-bit-ный формат отсутствует, хз, но видимо дань традиции). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2015, 05:41 |
|
||
|
В код надо добавить кейс чтоб не было преобр. формата 8000 Hz 16-Bit <> 8000 Hz 8-Bit
|
|||
|---|---|---|---|
|
#18+
Попытался сделать тест Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Не угадал. Шипит только гад, говорить не хочет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2015, 08:47 |
|
||
|
В код надо добавить кейс чтоб не было преобр. формата 8000 Hz 16-Bit <> 8000 Hz 8-Bit
|
|||
|---|---|---|---|
|
#18+
У тебя приёмный буфер 8-битный, туда 16-битный PCM не положить. Нужно аккуратно увеличить разрядность буфера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2015, 10:05 |
|
||
|
В код надо добавить кейс чтоб не было преобр. формата 8000 Hz 16-Bit <> 8000 Hz 8-Bit
|
|||
|---|---|---|---|
|
#18+
RWolf, т.е. не буфера, а указателя, что бежит по буферу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2015, 10:05 |
|
||
|
В код надо добавить кейс чтоб не было преобр. формата 8000 Hz 16-Bit <> 8000 Hz 8-Bit
|
|||
|---|---|---|---|
|
#18+
Не на тот код посмотрел — перепутал источник с приёмником. В общем, что-то вроде: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2015, 11:00 |
|
||
|
В код надо добавить кейс чтоб не было преобр. формата 8000 Hz 16-Bit <> 8000 Hz 8-Bit
|
|||
|---|---|---|---|
|
#18+
RWolf, Ну, есть некий прогресс (методом тыка скорее). По части stSend вроде как достаточно переслать то что приняли: Код: plaintext 1. 2. 3. 4. 5. 6. Т.е. дозвонившись до модема, я слышу четкое приветствие автоответчика, beep после чего он переключается на режим записи сообщения. А с записью (дублируеся в динамики компа) И здесь фигня пока (если идти тем же путем): Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Т.е. слышать то я слышу, но первые фразы, потом тишина вперемежку с шумом. Формат угадал, буфер ни фига. Оригинальный код так понимаю 16bit->8bit такой: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. Под спойлером чуть больше оригинального кода положил, если это поможет. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. Если я правильно понимаю, то 1) stSend делает Формат данных модема (8 бит в оригинале) -> PCM16 2) stReceive делает PCM16 -> Формат данных модема (8 бит в оригинале) А мне надо подогнать под (Null transform, no conversion.) TAPI формат. Т.е. надо то всего-то PCM16(на входе Wave Transform модуля)<>PCM16(на входе в модем, формат данных модема) <>PCM16(на выходе из модема) По сути 8-битное звено мне не нужно (т.е. я через TAPI уже вгоняю в модем чистый 16-битный звук). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2015, 11:29 |
|
||
|
В код надо добавить кейс чтоб не было преобр. формата 8000 Hz 16-Bit <> 8000 Hz 8-Bit
|
|||
|---|---|---|---|
|
#18+
Дмитрий77А с записью (дублируеся в динамики компа) И здесь фигня пока (если идти тем же путем): Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Т.е. слышать то я слышу, но первые фразы, потом тишина вперемежку с шумом. Да не, правильный путь. Проверил на программе, которая не использует TAPI (Ventafax) -все прекрасно "пишется и слышится" этим кодом в 16-битном формате. А гадит только TAPI Wave Transform драйвер (периодический шум на XP, но при этом слышно дальше, а вот на 8.1 после "шума" как правило дохнет). Попытался углубиться в код: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Сначала все идет похоже на правду: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. А потом начинаются какие-то непонятки: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. Т.е. dleData.GetDleData возвращает какие-то лишние байты относительно того что было положено через dleData.PutData Откуда берутся не понял, но думаю что именно они кладут TAPI-драйвер, а если напрямую то не влияют. Причем нечетные числа так понимаю могут полностью разрушить аудио (16 бит это 2 байта). Обратный код похоже что-то докладывает, а мне то надо просто линейно передать 16-битное аудио. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2015, 00:35 |
|
||
|
В код надо добавить кейс чтоб не было преобр. формата 8000 Hz 16-Bit <> 8000 Hz 8-Bit
|
|||
|---|---|---|---|
|
#18+
Похоже пора завязывать с этим делом. Взял железный модем, убедился что он поддерживает PCM 16 Bit 8000Hz. Пришлось подрисовать его драйвер на поддержку этого дела (цифровая подпись у меня есть, поэтому подписать тьфу-тьфу не проблема): Код: plaintext 1. 2. 3. (133-это специфическое для этого модема, в виртуальном сделал в итоге 0, но это не суть) Ну, и те же яйца. Playback-OK. Recording - с шумихой. Т.е. я все правильно сделал. Unimodem Transform Driver (это кусок виндов) - это похоже полная задница на любых ОС старше висты. У меня только 2 идеи: 1. Писать PCM-ADPCM кодер-декодер (кажется единственное что точно работает в Unimodem в обе стороны). Но боюсь, непосильная задача, при моих то знаниях по C/C++. Т.е. коды то я в интернете видел, но непонятно как втыкать в приведенные. 2. Интересно, а возможно ли использовать разные XformID для Playback/Recording. Т.е. разные команды я прописать например могу: Код: plaintext 1. 2. А как прописать разные XformID? Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2015, 05:49 |
|
||
|
В код надо добавить кейс чтоб не было преобр. формата 8000 Hz 16-Bit <> 8000 Hz 8-Bit
|
|||
|---|---|---|---|
|
#18+
Вопрос снимаю. Мне удалось вылечить Unimodem драйвер на Vista-Win8.1. Теперь стандартные 8-битные форматы нормально работают и на PlayBack и на Recording. 1,"UNSIGNED PCM",8,0,(8000),(0),(0) Код: plaintext 1. Причина почему шумит при Recording 16bit PCM 8000Hz скорее всего в следующем. Для комфортной передачи голоса по этому формату нужна скорость COM-порта 254000 (в голосовом режиме модема), стабильная же работа по спецификации это максимум 115200. (для данных и факсов обычно инициализируют на 19200 с автоматическим увеличением до требуемой). Программы типа Вентафакс с этим справляются. TAPI Драйвер Unimodem скорее всего компенсационных механизмов не имеет и не факт что там вообще предусмотрено более 115200 Во всех поголовно драйверах модемов вот это , т.е. 115200 Код: plaintext 1. При большой интенсивности PCM16 звука драйвер просто начинает сходить с ума периодически транслируя беспорядочную последовательность байтов (шум). При PlayBack шума нет видимо за счет грамотной буферизации в модеме (железном или виртуальном). Поэтому и стремятся в модемах использовать именно 8-битный PCM (Conexant/Rockwell) или 4-битный ADPCM (напр. Zyxel), и последнее кстати значительно хуже по качеству. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2015, 14:03 |
|
||
|
В код надо добавить кейс чтоб не было преобр. формата 8000 Hz 16-Bit <> 8000 Hz 8-Bit
|
|||
|---|---|---|---|
|
#18+
Дмитрий77, Приветствую! Если воспоминания еще живы, как Вам удалось вылечить unimodem драйвер? У меня такая же проблема на Win 8.1, тишина на playback, в inf к модему следующее: HKR, WaveDriver, XformID , 1, 08, 00 HKR, LineSetPlayFormat, 1,, "at+vsm=1,8000,0,0<cr>" at+vls=? 0," ",0000000000,0000000000,B084008000 1,"T",0B8418E000,0FE418E000,0B8419E000 4,"S",0084008000,0484008000,3084018000 5,"ST",0B8418E000,0FE418E000,0B8419E000 6,"M",0084008000,04E4008000,3084008000 8,"S1",0084008000,0484008000,3084018000 9,"S1T",0B8418E000,0FE418E000,0B8419E000 11,"M1",0084008000,04E4008000,3084008000 13,"M1S1T",0B8418E000,0FE418E000,0B8419E000 OK Каким образом починить преобразование ? Спасибо/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2016, 07:52 |
|
||
|
В код надо добавить кейс чтоб не было преобр. формата 8000 Hz 16-Bit <> 8000 Hz 8-Bit
|
|||
|---|---|---|---|
|
#18+
Дмитрий77, at+vsm=? 0,"SIGNED PCM",8,0,8000,0,0 1,"UNSIGNED PCM",8,0,8000,0,0 129,"IMA ADPCM",4,0,8000,0,0 130,"UNSIGNED PCM",8,0,8000,0,0 131,"Mu-Law",8,0,8000,0,0 132,"A-Law",8,0,8000,0,0 133,"14 bit PCM",14,0,8000,0,0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2016, 07:54 |
|
||
|
В код надо добавить кейс чтоб не было преобр. формата 8000 Hz 16-Bit <> 8000 Hz 8-Bit
|
|||
|---|---|---|---|
|
#18+
mak601Если воспоминания еще живы, как Вам удалось вылечить unimodem драйвер? У меня такая же проблема на Win 8.1, тишина на playback, в inf к модему следующее: Ух как я плохо форум отслеживаю. Но мож кому пригодится. Описание проблемы: Voice Modem problems with Unimodem Transform Module (Conexant USB modem) (проблема создана в висте и в MS не решена до сих пор) Ключ к решению(в драйвере inf-файле любого голосового модема) Код: plaintext 1. 2. 3. Решение простое (от криворукого дядь Димы): C:\Windows\System32\umdmxfrm.dll C:\Windows\SysWOW64\umdmxfrm.dll Эти файлы тупо выдираются из XP/2003 (32-битный и 64-битный) и муваются на целевую Vista/Win7/8.1/10 взамен неработоспособных "родных". Минус: перезапишутся при каком-нибудь обновлении Решение более грамотное (от криворукого дядь Димы): Файлы выдранные из XP/2003 переименовываются в umdmx MY _X86.dll и umdmx MY _X64.dll. inf-файл модема переписывается. Типа так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Драйвер после этого необходимо переподписать цифровой подписью Microsoft Code Signing (либо EV), делается это через файл каталога (.cat), куда включен .inf (как вариант просто мувнуть ручками с другим именем в System32/SysWow64, но переподписывать все равно придется - из-за правки имени dll в верхней строчке). Этот вариант не затрагивает "системные" файлы, поэтому никакое обновление назад не испортит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.08.2017, 08:29 |
|
||
|
|

start [/forum/topic.php?fid=57&tid=2018101]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
161ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
2ms |
| others: | 15ms |
| total: | 272ms |

| 0 / 0 |
