Вверх ↑
Этот топик читают: Гость
Ответов: 1700
Рейтинг: 120
#1: 2014-12-13 21:46:13 ЛС | профиль | цитата
Вот развлекался - Bass без Bass.dll http://forum.hiasm.com/forum_serv.php?q=56&id=3844 , может кому пригодиться.
Заменяем Bass.pas на Bass.pas из архива, предварительно сохранив "фирменный".
Вопрос:
Почему на столько больше, чем стандартный Bass.pas?
Ответ:
Потому что туда засунут Bass.dll.
Вопрос: Почему полученный модуль больше, чем исходная DLL?
Ответ: Для того чтобы "вписать" данные внутрь *.pas-файла, используется массив байт. На описание 1байта данных уходит 4байта (символа) текста. Т.к. на запись каждого байта уходит 4байта, то: результат = размер(DLL)*4… Данные вряд ли будут записываться иначе!
Когда скомпилируется, тогда всё устаканится.
P.S.
Чтобы не возникало вопросов, в архив положил DLLLoader.pas.
карма: 5

6
Голосовали:sla8a, LainX, tig-rrr, Konst, Lora, Net2Com
vip
#1.1контекстная реклама от партнеров
Ответов: 8593
Рейтинг: 795
#2: 2014-12-13 21:57:33 ЛС | профиль | цитата
flint2, хорошо бы ещё растолковать плюсы и минусы предлагаемого
карма: 18

0
Ответов: 1700
Рейтинг: 120
#3: 2014-12-13 22:16:22 ЛС | профиль | цитата
А плюсов и минусов тут нет.
Всё дело вкуса.
Меня например раздражает, когда за exe тянется шлейф dll.
А бывает, что с архивом и нужные dll не удосужатся положить, вот начинается переписка, или рысканье по интернету.
...Да и вообще, меньше телодвижений.
Можно вообще упаковать dll минимум, как в 2 раза.
карма: 5

0
Ответов: 209
Рейтинг: 1
#4: 2015-01-26 01:53:45 ЛС | профиль | цитата
flint2, раз промелькнуло в ошибках типа D:126Hiasm3блаблабла

у тебя таких путей не было при создании pas ?

за реализацию мерси!
нужная вещь
карма: 0

0
Ответов: 1700
Рейтинг: 120
#5: 2015-01-26 12:58:31 ЛС | профиль | цитата
Net2Com
раз промелькнуло в ошибках типа D:126Hiasm3блаблабла

Вот где делал.
c:HiAsmElementsdelphi
ewass_newdll

Ошибок, - в принципе не должно возникать по причине такого компонента.
P.S.
Можно так оформить любой компонент, содержащий dll.
Например - sqlite3.dll.
Была мысль автоматизировать этот процесс. Т.е. если есть какой то IC содержащий обращения к нескольким dll,
то берёшь эти dll пропускаешь через схемку и в осадке получаешь скрипт, который можно засунуть в этот-же IC.
Или формировать автоматически отдельный юнит, который указываешь в uses windows,Kol,Share, твой_юнит.
Только надо ли это? Большой вопрос. А может и нужно - до кучи.
(Как правильно - надо, или нужно)?
карма: 5

0
Ответов: 209
Рейтинг: 1
#6: 2015-01-29 01:37:53 ЛС | профиль | цитата
flint2, ....тут тебе виднее как лучше. мой уровень прокачки не дошел до баса, все на уровне простого как-то делал я...

сделать - хорошая идея и с мануалом закинуть на форум, как мне кажется. По крайней мере аналогичных вариантов я не встречал ранее...

... но вообще привинтить всю цепочку библиотек к компоненту нужно, его интегрировать рядом с легким графическим изменением говорящем о "все в одном"
,а там на выбор кому-что

я предпочитаю 1 exe

code_34997.txt

про этот басс блин...
Я тут с компонентом- саундбуфер от баса третьи сутки ковыряюсь. это песня. tcp поток переполняет его при затыканиях wi-fi и валит всю схему похоже. звук небходим с минимальными задержками. вариант ip телефонии. и так и этак. хоть отдельный exe делай для него.

карма: 0

0
файлы: 1code_34997.txt [1.3KB] [293]
Ответов: 1700
Рейтинг: 120
#7: 2015-01-29 14:20:54 ЛС | профиль | цитата
Честно сказать, я не врубился в суть из приведённой выше схемы.
Я понял так, что при нарушении связи поток не восстанавливается.
Или при нарушении связи в буфер продолжает что-то писаться?
Недостающий кусок схемы может быть таким?
code_35000.txt
Или я чего-то не догоняю?
Правильно я понимаю, конечная цель - записать поток в файл, а потом слушать?
P.S.
Понял.
Приведённый пример - бальзам и ополаскиватель в одном флаконе.
А с wi-fi так и не понял конечной цели.
карма: 5

0
файлы: 1code_35000.txt [5.5KB] [296]
Ответов: 209
Рейтинг: 1
#8: 2015-01-29 16:38:03 ЛС | профиль | цитата
по схеме моей выше. по ней можно выгрузить любой файл из самого приложения.любой файл если он нужен в ходе работы. если к нему обращение стоит не при старте самого приложения так как делает это басс

не-не-не...не в файл. задача стоит через tcp звук выдавать клиенту без задержек, ip телефон вообщем
буфер когда маленький - переполняется с произвольными ошибками, когда большой отстает...(за счет плохой связи)
пытаюсь учесть это все и причесать схему к нормальному для пользователю режиму работы...
схема работы ip на ip

поглядеть бы наработки тех кто уже подобное делал, было бы здорово
карма: 0

0
Ответов: 1700
Рейтинг: 120
#9: 2015-01-29 17:16:24 ЛС | профиль | цитата
поглядеть бы наработки тех кто уже подобное делал, было бы здорово

В 1999 году я сделал проект по ip телефонии для ЗАО "Корпорация О.С.С." [url] http://www.ispreview.ru/company/66/korporaciya-o-s-s.html[/url]
и Romtelecom http://en.wikipedia.org/wiki/Romtelecom. Даже лицензии для них получал.
Тогда это было модно.
Только я всё строил на Сisco, Marconi, Huawei... - т.е. аппаратно.
Задачу понял. Дай срок. Вечером, или завтра подумаю, что можно сделать.
P.S.
когда большой отстает...(за счет плохой связи)

А как это понимать? Т.е. задержка по времени на ту паузу, когда связи не было?
Так от этого никуда не денешься. Сколько связи не было, на столько времени и задержится передача.
карма: 5

0
Ответов: 209
Рейтинг: 1
#10: 2015-01-29 17:52:14 ЛС | профиль | цитата
во. идея в том что пусть вместо слово ЛАМПОЧКА дойдет ЧКА ... остальное потеряется... это устраивает.. если затыкается связь
чем придет лампочка раза 2 когда связь наладится и переполнением вызовет краш

если будет интересно выложу почти готовый аналог видеосвязи со звуком схемой
карма: 0

0
Ответов: 1700
Рейтинг: 120
#11: 2015-01-29 18:05:22 ЛС | профиль | цитата
Из софтовых решений мне ничего путного не попадалось, даже из фирменных Tele2, ispa...
Все работают плохо, с задержкой. Может сейчас чего изменилось, но вряд-ли.
если будет интересно выложу почти готовый аналог видеосвязи со звуком схемой

Давай. Легче будет разобраться.
карма: 5

0
Ответов: 209
Рейтинг: 1
#12: 2015-01-29 23:05:05 ЛС | профиль | цитата
ок. причешу лишние ошибки. выложу к вечеру.
ранее по схеме можно было по 127.0.0.1 проверять, но сейчас проверяю переполнение буфера за счет ошибок коммутации на одному порту. Разбросал на несколько по-этому 2 комп нужен будет если решишь тестировать. Ну или ноут.

на самом деле очень интересно все это
------------ Дoбавленo в 22.33:
личку проверь
------------ Дoбавленo в 23.05:
flint2, теоретически если с каждым stream передавать его размер и проверять перед занесением в буфер можно избежать варианта рваного пакета, но как это реализовать я еще не придумал.
с другой стороны может быть не рваный пакет вешает а выдача стрима большего в разы чем сам буфер, и опять же не знаю каким образом можно при такой выдачи отсечь большой размер и избежать переполнения.
карма: 0

0
Ответов: 1700
Рейтинг: 120
#13: 2015-01-29 23:48:06 ЛС | профиль | цитата
личку проверь

У меня такого не наблюдается. В смысле лички пока нет.
теоретически если с каждым stream передавать

Теоретически если речевой поток разбивать по паузам, то не будет рваных пакетов и не будет стрима большего в разы чем сам буфер.
карма: 5

0
Ответов: 209
Рейтинг: 1
#14: 2015-01-30 00:29:36 ЛС | профиль | цитата
flint2, а icq номер есть ?

flint2 писал(а):
Теоретически если речевой поток разбивать по паузам, то не будет рваных пакетов и не будет стрима большего в разы чем сам буфер.


разбивать ?
я пытался смоделировать это задержкой - не получилось,хотя в начале думал вот вот оно

ошибка вываливается мол can not be read at adress 230948759327блаблабла
новый пакет приходит - новой еррор так раз 20 и в конце крэш


смоделировать так - обе копии на 2х компах в сети, где второй комп на плохой связи (по типу wi-fi)
Add(MainForm,2953706,77,140)
{
Width=285
Height=268
Point(Handle)
link(onCreate,6664194:doEvent1,[])
}
Add(BASS_RecordStart,5066922,343,469)
{
Freq=8000
Mode=1
Name="mainrec"
link(onData,13389086:doSend,[])
}
Add(Hub,4590045,287,476)
{
link(onEvent1,5066922:doStop,[])
link(onEvent2,13389086:doClose,[(316,489)(339,659)(869,659)(922,475)])
}
Add(Message,14454558,1085,490)
{
}
Add(Thread,11232101,140,266)
{
FastStop=0
BusyEvent=1
link(onExec,13389086:doOpen,[(285,272)(285,277)])
}
Add(TCP_Client,13389086,938,462)
{
Port=123
DataType=3
Point(onError)
link(onConnect,5066922:doStart,[(1028,475)(1028,335)(331,335)(331,475)])
link(IP,4640909:Text,[])
link(onError,14454558:doMessage,[(1028,489)(1028,496)])
}
Add(BASS_StreamCreate,14476773,924,1043)
{
Freq=8000
DataType=1
Name="MainSound"
link(onCreate,3047460:doPlay,[])
link(Data,8732119:Stream,[])
}
Add(BASS_ChannelPlay,3047460,994,1043)
{
Channel="MainSound"
}
Add(SoundBuffer,8732119,924,945)
{
Size=1000
}
Add(Message,8738553,175,987)
{
}
Add(Label,16644290,350,840)
{
Left=130
Top=90
Width=10
Height=18
Color=7895160
Font=[Arial,8,0,0,204]
Caption="0"
link(Text,8732119:FullState,[(356,828)(1030,828)(1030,996)(937,996)])
}
Add(LineBreak,8984282,77,938)
{
Caption="start"
link(Out,12999720:doOpen,[])
Primary=[10982406,105,-777]
}
Add(Hub,11902059,315,938)
{
link(onEvent1,16644290:doText,[(339,944)(339,846)])
link(onEvent2,8732119:doAdd,[])
}
Add(Timer,7805007,714,1043)
{
Enable=1
AutoStop=1
link(onTimer,14476773:doCreate,[])
}
Add(Timer,1155634,714,1078)
{
Enable=1
AutoStop=1
link(onTimer,14476773:doDestroy,[(835,1084)(835,1056)])
}
Add(TCP_Server,12999720,175,938)
{
Port=123
DataType=3
Point(onError)
link(onRead,11902059:doEvent1,[])
link(onConnect,7805007:doTimer,[(260,951)(260,1049)])
link(onDisconnect,1155634:doTimer,[(248,958)(248,1084)])
link(onError,8738553:doMessage,[(219,965)(219,979)(163,979)(163,993)])
}
Add(BASS_Init,4252681,210,63)
{
Freq=8000
Flags=2
link(onInit,13190754:doInit,[])
link(Handle,2953706:Handle,[(230,51)(68,51)(68,182)(83,182)])
}
Add(BASS_RecordCenter,13190754,266,63)
{
}
Add(Hub,6664194,126,154)
{
link(onEvent1,4252681:doInit,[(175,160)(175,69)])
link(onEvent2,10982406:In,[])
}
Add(Button,13376843,70,266)
{
Left=100
Top=160
link(onClick,11232101:doStart,[])
}
Add(Edit,4640909,938,413)
{
Left=70
Top=130
Width=120
Text=""
}



еще была мысль что мощи компа не хватает обрабатывать картинку и звук и лажа с крешом у связи между стримкреате и буфером в момент загрузки или подвисона tcp компонента

еще есть мысль что пониженная компом для простоя частота проца в момент пиковой нагрузки вешает в схеме цепь в том числе работу с паматью буфера. эта мысль появилась после того как при мгновенном запуске в простое словил крэш. но при повторном когда частота поднялась на максимум - схема отработала без глюк. может загнать в искуственную нагрузку машину перед стартом алгоритма преобразования картинок и звуков в потоки ?
карма: 0

0
Ответов: 1700
Рейтинг: 120
#15: 2015-01-30 01:40:23 ЛС | профиль | цитата
У меня 2 компа, но эксперимент не получается, потому что соединены через 100 мегабитный свичь (не хаб).
Какую схему не запущу, все работают без ошибок.
разбивать ?

Да. На передающей стороне. По паузам молчания более 2-3 секунд. Как уплотнение работает. Паузы, понятное дело, не передаются.
С видио отдельная песня.
Если из файла, то понятно. А в реальном времени, какие пакеты пропали, то пропали и на них не должен приходить повторный запрос с принимающей стороны и отправляющая сторона не должна пытаться передать сбойный пакет повторно. Скорее всего от этого всё и падает. Тут никакие буферы не помогут. Их надо выкинуть.
Или писать всё в файл, а дальше классика жанра. Для видионаблюдения не подойдёт, а для конференции даже очень вполне.
Понятное дело в MPEGе и звук тоже.
а icq номер есть ?

Нет.
lev55@ro.ru
карма: 5

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)