Es lässt sich schon einiges damit machen und eignet sich sehr gut zum Entwickeln.
Damit es auch ohne Dvbinterface läuft braucht es nur ein paar kleine Hacks.
Danke dafür.
Aber bei diesem Arrayzugriff out of bounds hängt es hier (key ist dann -1):
Code: Alles auswählen
diff --git a/src/system/setting_helpers.cpp b/src/system/setting_helpers.cpp
index 38efa96..2b804ca 100644
--- a/src/system/setting_helpers.cpp
+++ b/src/system/setting_helpers.cpp
@@ -560,10 +560,11 @@ bool CAutoModeNotifier::changeNotify(const neutrino_locale_t /*OptionName*/, voi
int i;
int modes[VIDEO_STD_MAX+1];
- memset(modes, 0, sizeof(int)*VIDEO_STD_MAX+1);
+ memset(modes, 0, sizeof(int)*(VIDEO_STD_MAX+1));
for(i = 0; i < VIDEOMENU_VIDEOMODE_OPTION_COUNT; i++) {
- modes[VIDEOMENU_VIDEOMODE_OPTIONS[i].key] = g_settings.enabled_video_modes[i];
+ if ((VIDEOMENU_VIDEOMODE_OPTIONS[i].key >= 0) && ((VIDEOMENU_VIDEOMODE_OPTIONS[i].key <= VIDEO_STD_MAX)))
+ modes[VIDEOMENU_VIDEOMODE_OPTIONS[i].key] = g_settings.enabled_video_modes[i];
}
videoDecoder->SetAutoModes(modes);
return false;
Die ubuntu 13.04 version geht so nicht. Das habe ich erstmal so umgangen, zumindest kompiliert und linkt es.
Code: Alles auswählen
diff --git a/src/gui/luainstance.cpp b/src/gui/luainstance.cpp
index 8afc712..d79e164 100644
--- a/src/gui/luainstance.cpp
+++ b/src/gui/luainstance.cpp
@@ -34,6 +34,8 @@
#define MAGIC_COLOR 0x42424200
#define MAGIC_MASK 0xFFFFFF00
+#define DYNAMIC_LUAPOSIX
+
struct table_key {
const char *name;
long code;
@@ -359,7 +361,7 @@ void CLuaInstance::registerFunctions()
lua_pop(lua, 1);
- luaL_setfuncs(lua, methods, 0);
+// luaL_setfuncs(lua, methods, 0);
lua_pop(lua, 1);
lua_register(lua, className, NewWindow);
@@ -517,7 +519,7 @@ int CLuaInstance::GetInput(lua_State *L)
/* signed int is debatable, but the "big" messages can't yet be handled
* inside lua scripts anyway. RC_timeout == -1, RC_nokey == -2 */
lua_pushinteger(L, (int)msg);
- lua_pushunsigned(L, data);
+// lua_pushunsigned(L, data);
return 2;
}
Code: Alles auswählen
diff --git a/src/Makefile.am b/src/Makefile.am
index 83ac196..c8f9700 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -104,7 +104,7 @@ neutrino_LDADD += -lgif
else
neutrino_LDADD += -lungif
endif
-neutrino_LDADD += -llua -ldl
+neutrino_LDADD += -llua5.1 -ldl
if ENABLE_UPNP
neutrino_LDADD += \
@@ -124,7 +124,12 @@ endif
if USE_STB_HAL
neutrino_LDADD += \
- -lstb-hal
+ -lstb-hal \
+ @AVFORMAT_LIBS@ \
+ @AVUTIL_LIBS@ \
+ @AVCODEC_LIBS@ \
+ @SWSCALE_LIBS@
+
neutrino_LDFLAGS = \
-L$(STB_HAL_LIB)
endif
Was wäre die beste Lösung dafür?
Gestern war ich damit gescheitert, daß die autotools die selbstkompilierten Pakete nicht so genommen haben (die lagen im home) bzw. es gab massig unresolved symbols.
Das brauchts, wenn man keine DVB Karte hat, da wird ein dummy FE erzeugt, damit es später keine Nullpointerzugriffe gibt, wenn lifefe NULL ist:
Code: Alles auswählen
diff --git a/src/zapit/src/femanager.cpp b/src/zapit/src/femanager.cpp
index 374686d..445326b 100644
--- a/src/zapit/src/femanager.cpp
+++ b/src/zapit/src/femanager.cpp
@@ -80,8 +80,17 @@ bool CFEManager::Init()
other_fe.insert(fe->getInfo()->type);
delete fe;
}
- } else
- delete fe;
+ }
+ else
+ {
+// delete fe;
+ fekey = MAKE_FE_KEY(i, j);
+ femap.insert(std::pair <unsigned short, CFrontend*> (fekey, fe));
+ INFO("add fe %d", fe->fenumber);
+ if(livefe == NULL)
+ livefe = fe;
+ fe->setIndex(idx++);
+ }
}
}
INFO("found %d frontends", (int)femap.size());
diff --git a/src/zapit/src/frontend.cpp b/src/zapit/src/frontend.cpp
index 08d0ee6..6f6718e 100644
--- a/src/zapit/src/frontend.cpp
+++ b/src/zapit/src/frontend.cpp
@@ -391,7 +391,7 @@ uint32_t CFrontend::getRate()
fe_status_t CFrontend::getStatus(void) const
{
struct dvb_frontend_event event;
- fop(ioctl, FE_READ_STATUS, &event.status);
+// fop(ioctl, FE_READ_STATUS, &event.status);
return (fe_status_t) (event.status & FE_HAS_LOCK);
}
@@ -406,7 +406,7 @@ FrontendParameters CFrontend::getFrontend(void) const
uint32_t CFrontend::getBitErrorRate(void) const
{
uint32_t ber = 0;
- fop(ioctl, FE_READ_BER, &ber);
+// fop(ioctl, FE_READ_BER, &ber);
if (ber > 100000000) /* azbox minime driver has useless values around 500.000.000 */
ber = 0;
@@ -416,7 +416,7 @@ uint32_t CFrontend::getBitErrorRate(void) const
uint16_t CFrontend::getSignalStrength(void) const
{
uint16_t strength = 0;
- fop(ioctl, FE_READ_SIGNAL_STRENGTH, &strength);
+// fop(ioctl, FE_READ_SIGNAL_STRENGTH, &strength);
return strength;
}
@@ -424,7 +424,7 @@ uint16_t CFrontend::getSignalStrength(void) const
uint16_t CFrontend::getSignalNoiseRatio(void) const
{
uint16_t snr = 0;
- fop(ioctl, FE_READ_SNR, &snr);
+// fop(ioctl, FE_READ_SNR, &snr);
return snr;
}
#if 0