пятница, 10 июля 2009 г.

саск нг + гетстрим (взято: http://forum.nag.ru/forum/index.php?showtopic=46414)

ubuntu 8,10 + 3x ss2 rev 2,8 + sasc-ng + getstream

Итак, после небольших плясок вокруг кода:

CODE
top — 00:37:53 up 5:29, 3 users, load average: 7,08, 7,25, 7,12
Tasks: 103 total, 4 running, 99 sleeping, 0 stopped, 0 zombie
Cpu0 : 42,5%us, 4,2%sy, 0,1%ni, 50,2%id, 0,1%wa, 1,8%hi, 1,1%si, 0,0%st
Cpu1 : 42,7%us, 4,8%sy, 0,1%ni, 49,7%id, 0,1%wa, 1,7%hi, 1,0%si, 0,0%st
Cpu2 : 42,8%us, 4,5%sy, 0,1%ni, 49,6%id, 0,1%wa, 1,8%hi, 1,1%si, 0,0%st
Cpu3 : 42,3%us, 4,7%sy, 0,1%ni, 50,1%id, 0,1%wa, 1,7%hi, 1,0%si, 0,0%st
Mem: 4138016k total, 679268k used, 3458748k free, 153160k buffers
Swap: 9068652k total, 0k used, 9068652k free, 153012k cached


Рецепт:

сначала обязательно пересобрать дрова v4linux с изменениями:

CODE
- v4l-dvb.OLD/linux/drivers/media/dvb/dvb-core/dvbdev.h 2009—04—04 13:48:34,000000000 +0400
+++ v4l-dvb/linux/drivers/media/dvb/dvb-core/dvbdev.h 2009—04—27 17:44:01,000000000 +0400
@@ -31,7 +31,7 @@

#define DVB_MAJOR 212

-#define DVB_MAX_ADAPTERS 8
+#define DVB_MAX_ADAPTERS 10

#define DVB_UNSET (-1)


потом пропатчить сам opensasc (я брал 77 ревизию):
CODE
diff —E —b —u —r —exclude-from diffexclude opensasc-ng.orig/open-sasc-ng/dvblb_plugins/plugin_ffdecsa.c opensasc-ng.new/open-sasc-ng/dvblb_plugins/plugin_ffdecsa.c
- opensasc-ng.orig/open-sasc-ng/dvblb_plugins/plugin_ffdecsa.c 2009—04—28 00:08:18,000000000 +0400
+++ opensasc-ng.new/open-sasc-ng/dvblb_plugins/plugin_ffdecsa.c 2009—04—27 19:31:00,000000000 +0400
@@ -15,8 +15,8 @@
#define DBG_NAME «CSA»
#include «debug.h» //This is required to happen AFTER PLUGIN_ID is defined

-#define FF_MAX_IDX 8
-#define FF_MAX_PID 8
+#define FF_MAX_IDX 16
+#define FF_MAX_PID 16

#define push_empty_queue(_item, _queue) { \
pthread_mutex_lock(&list_lock); \
diff —E —b —u —r —exclude-from diffexclude opensasc-ng.orig/open-sasc-ng/dvbloopback/module/dvbdev-2.6.v4l.h opensasc-ng.new/open-sasc-ng/dvbloopback/module/dvbdev-2.6.v4l.h
- opensasc-ng.orig/open-sasc-ng/dvbloopback/module/dvbdev-2.6.v4l.h 2009—04—28 00:08:17,000000000 +0400
+++ opensasc-ng.new/open-sasc-ng/dvbloopback/module/dvbdev-2.6.v4l.h 2009—04—27 16:35:47,000000000 +0400
@@ -31,7 +31,7 @@

#define DVB_MAJOR 212

-#define DVB_MAX_ADAPTERS 8
+#define DVB_MAX_ADAPTERS 10

#define DVB_UNSET (-1)

Only in opensasc-ng.new/open-sasc-ng/dvbloopback/module: dvbdevwrap.h
diff —E —b —u —r —exclude-from diffexclude opensasc-ng.orig/open-sasc-ng/dvbloopback/module/dvblb_internal.h opensasc-ng.new/open-sasc-ng/dvbloopback/module/dvblb_internal.h
- opensasc-ng.orig/open-sasc-ng/dvbloopback/module/dvblb_internal.h 2009—04—28 00:08:17,000000000 +0400
+++ opensasc-ng.new/open-sasc-ng/dvbloopback/module/dvblb_internal.h 2009—04—27 16:19:36,000000000 +0400
@@ -3,7 +3,7 @@
#include «dvbdev.h»
#include «dvbloopback.h»

-#define DVBLB_MAX_ADAPTERS 8
+#define DVBLB_MAX_ADAPTERS 10

struct dvblb;

diff —E —b —u —r —exclude-from diffexclude opensasc-ng.orig/open-sasc-ng/dvbloopback/src/forward.c opensasc-ng.new/open-sasc-ng/dvbloopback/src/forward.c
- opensasc-ng.orig/open-sasc-ng/dvbloopback/src/forward.c 2009—04—28 00:08:17,000000000 +0400
+++ opensasc-ng.new/open-sasc-ng/dvbloopback/src/forward.c 2009—04—27 19:41:37,000000000 +0400
@@ -203,7 +203,7 @@
dprintf(«Could not setup adapter link: %d != %d\n», real, tmp);
return 0;
}
- for(int i=0; i < 3; i++) {+ for(int i=0; i < 4; i++) {sprintf(str, "/proc/dvbloopback/adapter%d/%s», virt, dnames[link[i]]);FH = fopen(str, «w»);if(! FH)@@ -265,12 +265,12 @@int main(int argc, char *argv[]){unsigned long bufsize = 2000000;- struct parser_adpt pc_all[8];- struct common_data common[8];+ struct parser_adpt pc_all[10];+ struct common_data common[10];struct list_head *ptr;pthread_t msg_highpri_thread;pthread_t socket_thread;- int virt_adapt[8], real_adapt[8], adapter_cnt=0;+ int virt_adapt[10], real_adapt[10], adapter_cnt=0;unsigned long debug_port = 5456;int longopt = 0;int c, Option_Index = 0;diff —E —b —u —r —exclude-from diffexclude opensasc-ng.orig/open-sasc-ng/Makefile opensasc-ng.new/open-sasc-ng/Makefile- opensasc-ng.orig/open-sasc-ng/Makefile 2009—04—28 00:08:18,000000000 +0400+++ opensasc-ng.new/open-sasc-ng/Makefile 2009—04—27 15:50:58,000000000 +0400@@ -16,6 +16,7 @@DVB_MOD_DIR = DVB_DIR=$(DVB_DIR)endif+DEFINES += -D__KERNEL_STRICT_NAMESDEFINES += -DRELEASE_VERSION=\»$(VERSION)\»INCLUDES += -Idvbloopback/module —I/lib/modules/$(shell uname —r)/build/includeLBDIR = dvbloopback/srcdiff —E —b —u —r —exclude-from diffexclude opensasc-ng.orig/open-sasc-ng/sc/PLUGINS/src/sc-src/cam.c opensasc-ng.new/open-sasc-ng/sc/PLUGINS/src/sc-src/cam.c- opensasc-ng.orig/open-sasc-ng/sc/PLUGINS/src/sc-src/cam.c 2009—04—28 00:08:17,000000000 +0400+++ opensasc-ng.new/open-sasc-ng/sc/PLUGINS/src/sc-src/cam.c 2009—04—27 19:31:54,000000000 +0400@@ -2264,7 +2264,7 @@// - cDeCSA —-----#define MAX_CSA_PIDS 8192-#define MAX_CSA_IDX 16+#define MAX_CSA_IDX 32//#define DEBUG_CSAdiff —E —b —u —r —exclude-from diffexclude opensasc-ng.orig/open-sasc-ng/sc/PLUGINS/src/sc-src/systems/cardclient/newcamd.c opensasc-ng.new/open-sasc-ng/sc/PLUGINS/src/sc-src/systems/cardclient/newcamd.c- opensasc-ng.orig/open-sasc-ng/sc/PLUGINS/src/sc-src/systems/cardclient/newcamd.c 2009—04—28 00:08:17,000000000 +0400+++ opensasc-ng.new/open-sasc-ng/sc/PLUGINS/src/sc-src/systems/cardclient/newcamd.c 2009—04—27 15:50:58,000000000 +0400@@ -32,7 +32,7 @@#include <>

-#define CWS_NETMSGSIZE 240
+#define CWS_NETMSGSIZE 480

// - cTripleDes —----

diff —E —b —u —r —exclude-from diffexclude opensasc-ng.orig/open-sasc-ng/sc/PLUGINS/src/sc-src/systems/sc-irdeto/sc-irdeto.c opensasc-ng.new/open-sasc-ng/sc/PLUGINS/src/sc-src/systems/sc-irdeto/sc-irdeto.c
- opensasc-ng.orig/open-sasc-ng/sc/PLUGINS/src/sc-src/systems/sc-irdeto/sc-irdeto.c 2009—04—28 00:08:17,000000000 +0400
+++ opensasc-ng.new/open-sasc-ng/sc/PLUGINS/src/sc-src/systems/sc-irdeto/sc-irdeto.c 2009—04—27 19:32:20,000000000 +0400
@@ -37,7 +37,7 @@
#define SC_NAME «Irdeto»
#define SC_ID MAKE_SC_ID('I','r','d','t')

-#define L_SC 8
+#define L_SC 16
#define L_SC_ALL LALL(L_SC_LASTDEF)

static const struct LogModule lm_sc = {


после этого обязательно запускать отедльный sasc-ng для каждой пары адаптеров и отдельный getstream для каждого адаптера. (иначе буферов у них не хватит)

если чаще через 1 раз в сек идет запрос ECM то ответы NOT OK и sasc-ng не получает верный ключ. Тут у меня irdeto 2 карта — она тормозная сама по себе.
Есть такое. Еще забавная фишка…
Вставил в код newcamd.c строчку cCondWait::SleepMs(200);

Код
bool cCardClientNewCamd::ProcessECM(const cEcmInfo *ecm, const unsigned char *data, unsigned char *cw)
{
cMutexLock lock(this);
cCondWait::SleepMs(200);


Упала загрузка на сервер… было 80 процентов загружено, стало 50.
Экспериментирую с задержкой дальше) ставить значение 1000 не советую… lagged cw вылезает)



Реклама

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

Комментариев нет:

Отправить комментарий