diff --git a/Makefile.am b/Makefile.am index 6861392..10b45bb 100644 --- a/Makefile.am +++ b/Makefile.am @@ -66,9 +66,16 @@ SUBDIRS += libeplayer3-arm libstb_hal_la_LIBADD += \ libeplayer3-arm/libeplayer3_arm.la endif - endif - +endif +if BOXTYPE_MIPSBOX +SUBDIRS += libmipsbox libdvbci +libstb_hal_la_LIBADD += \ + libmipsbox/libmipsbox.la \ + libdvbci/libdvbci.la +SUBDIRS += libeplayer3-mips +libstb_hal_la_LIBADD += \ + libeplayer3-mips/libeplayer3_mips.la endif pkginclude_HEADERS = \ diff --git a/common/ca_ci.cpp b/common/ca_ci.cpp index c46e028..3f2d956 100644 --- a/common/ca_ci.cpp +++ b/common/ca_ci.cpp @@ -41,7 +41,7 @@ static const char * FILENAME = "[ca_ci]"; const char ci_path[] = "/dev/dvb/adapter0/ci%d"; ca_slot_info_t info; #endif -#if HAVE_ARM_HARDWARE +#if HAVE_ARM_HARDWARE || HAVE_MIPS_HARDWARE const char ci_path[] = "/dev/ci%d"; static int last_source = -1; #endif @@ -263,7 +263,7 @@ static bool transmitData(eDVBCISlot* slot, unsigned char* d, int len) //send some data on an fd, for a special slot and connection_id eData sendData(eDVBCISlot* slot, unsigned char* data, int len) { -#if HAVE_ARM_HARDWARE +#if HAVE_ARM_HARDWARE || HAVE_MIPS_HARDWARE unsigned char *d = (unsigned char*) malloc(len); memcpy(d, data, len); transmitData(slot, d, len); @@ -878,7 +878,7 @@ bool cCA::SendCAPMT(u64 tpid, u8 source, u8 camask, const unsigned char * cabuf, (*It)->SID[0] = SID; (*It)->ci_use_count = 1; (*It)->TP = TP; -#if HAVE_ARM_HARDWARE +#if HAVE_ARM_HARDWARE || HAVE_MIPS_HARDWARE if(!checkLiveSlot && mode && (*It)->source != source) setInputSource((eDVBCISlot*)(*It), false); #endif @@ -889,7 +889,7 @@ bool cCA::SendCAPMT(u64 tpid, u8 source, u8 camask, const unsigned char * cabuf, (*It)->newCapmt = true; } -#if HAVE_ARM_HARDWARE +#if HAVE_ARM_HARDWARE || HAVE_MIPS_HARDWARE if ((*It)->newCapmt) extractPids((eDVBCISlot*)(*It)); #endif @@ -917,7 +917,7 @@ bool cCA::SendCAPMT(u64 tpid, u8 source, u8 camask, const unsigned char * cabuf, } else { -#if HAVE_ARM_HARDWARE +#if HAVE_ARM_HARDWARE || HAVE_MIPS_HARDWARE std::list::iterator it; recordUse_found = false; for (it = slot_data.begin(); it != slot_data.end(); ++it) @@ -958,7 +958,7 @@ bool cCA::SendCAPMT(u64 tpid, u8 source, u8 camask, const unsigned char * cabuf, return true; } -#if HAVE_ARM_HARDWARE +#if HAVE_ARM_HARDWARE || HAVE_MIPS_HARDWARE void cCA::extractPids(eDVBCISlot* slot) { u32 prg_info_len; @@ -1060,7 +1060,7 @@ void cCA::setSource(eDVBCISlot* slot) } } -#if HAVE_ARM_HARDWARE +#if HAVE_ARM_HARDWARE || HAVE_MIPS_HARDWARE static std::string getTunerLetter(int number) { return std::string(1, char(65 + number)); } void cCA::setInputs() @@ -1184,7 +1184,7 @@ cCA::cCA(int Slots) printf("%s -> %s %d\n", FILENAME, __func__, Slots); num_slots = Slots; -#if HAVE_ARM_HARDWARE +#if HAVE_ARM_HARDWARE || HAVE_MIPS_HARDWARE setInputs(); #endif @@ -1280,7 +1280,7 @@ void cCA::ModuleReset(enum CA_SLOT_TYPE, uint32_t slot) { (*it)->status = eStatusReset; usleep(200000); -#if HAVE_ARM_HARDWARE +#if HAVE_ARM_HARDWARE || HAVE_MIPS_HARDWARE last_source = (int)(*it)->source; setInputSource((eDVBCISlot*)(*it), false); #endif @@ -1373,7 +1373,7 @@ void cCA::ci_inserted(eDVBCISlot* slot) void cCA::ci_removed(eDVBCISlot* slot) { printf("cam (%d) status changed ->cam now _not_ present\n", slot->slot); -#if HAVE_ARM_HARDWARE +#if HAVE_ARM_HARDWARE || HAVE_MIPS_HARDWARE last_source = (int)slot->source; setInputSource(slot, false); #endif @@ -1444,7 +1444,7 @@ void cCA::slot_pollthread(void *c) while (1) { -#if HAVE_ARM_HARDWARE /* Armbox */ +#if HAVE_ARM_HARDWARE || HAVE_MIPS_HARDWARE /* Armbox/Mipsbox */ int len = 1024 *4; eData status; @@ -1685,7 +1685,7 @@ FROM_FIRST: break; } /* switch(slot->status) */ #endif /* end Duckbox */ -#if HAVE_ARM_HARDWARE +#if HAVE_ARM_HARDWARE || HAVE_MIPS_HARDWARE if (!slot->init && slot->camIsReady && last_source > -1) { slot->source = (u8)last_source; @@ -1740,7 +1740,7 @@ bool cCA::SendCaPMT(eDVBCISlot* slot) printf("%s -> %s\n", FILENAME, __func__); if (slot->fd > 0) { -#if HAVE_ARM_HARDWARE +#if HAVE_ARM_HARDWARE || HAVE_MIPS_HARDWARE setInputSource(slot, true); #endif setSource(slot); diff --git a/configure.ac b/configure.ac index e0af117..533ce4b 100644 --- a/configure.ac +++ b/configure.ac @@ -108,10 +108,12 @@ fi AC_OUTPUT([ Makefile common/Makefile +libmipsbox/Makefile libarmbox/Makefile libazbox/Makefile libduckbox/Makefile libdvbci/Makefile +libeplayer3-mips/Makefile libeplayer3-arm/Makefile libeplayer3-sh4/Makefile libgeneric-pc/Makefile @@ -120,4 +122,3 @@ libspark/Makefile libtriple/Makefile tools/Makefile ]) - diff --git a/include/audio_hal.h b/include/audio_hal.h index ed0a8b3..c2fc55b 100644 --- a/include/audio_hal.h +++ b/include/audio_hal.h @@ -9,6 +9,8 @@ #include "../libspark/audio_mixer.h" #elif HAVE_ARM_HARDWARE #include "../libarmbox/audio_lib.h" +#elif HAVE_MIPS_HARDWARE +#include "../libmipsbox/audio_lib.h" #elif HAVE_AZBOX_HARDWARE #include "../libazbox/audio_lib.h" #elif HAVE_GENERIC_HARDWARE diff --git a/include/ca_hal.h b/include/ca_hal.h index eb4ce36..856d99a 100644 --- a/include/ca_hal.h +++ b/include/ca_hal.h @@ -1,4 +1,4 @@ -#if HAVE_DUCKBOX_HARDWARE || (HAVE_ARM_HARDWARE && !BOXMODEL_HD60) +#if HAVE_DUCKBOX_HARDWARE || (HAVE_ARM_HARDWARE && !BOXMODEL_HD60) || HAVE_MIPS_HARDWARE #include "ca_ci.h" #else #include "ca.h" diff --git a/include/cs_api.h b/include/cs_api.h index 42fff37..bfce94c 100644 --- a/include/cs_api.h +++ b/include/cs_api.h @@ -23,7 +23,7 @@ inline void cs_api_exit() #define cs_free_uncached free // Callback function helpers -#if HAVE_DUCKBOX_HARDWARE || (HAVE_ARM_HARDWARE && !BOXMODEL_HD60) +#if HAVE_DUCKBOX_HARDWARE || (HAVE_ARM_HARDWARE && !BOXMODEL_HD60) || HAVE_MIPS_HARDWARE void cs_register_messenger(cs_messenger messenger); #else static inline void cs_register_messenger(cs_messenger) { return; }; diff --git a/include/playback_hal.h b/include/playback_hal.h index 9827e06..9e98392 100644 --- a/include/playback_hal.h +++ b/include/playback_hal.h @@ -15,6 +15,8 @@ #include "../libarmbox/playback_libeplayer3.h" #endif #endif +#elif HAVE_MIPS_HARDWARE +#include "../libmipsbox/playback_libeplayer3.h" #elif HAVE_AZBOX_HARDWARE #include "../libazbox/playback_lib.h" #elif HAVE_GENERIC_HARDWARE diff --git a/include/record_hal.h b/include/record_hal.h index 6225730..c0efc3f 100644 --- a/include/record_hal.h +++ b/include/record_hal.h @@ -7,6 +7,8 @@ #include "../libspark/record_lib.h" #elif HAVE_ARM_HARDWARE #include "../libarmbox/record_lib.h" +#elif HAVE_MIPS_HARDWARE +#include "../libmipsbox/record_lib.h" #elif HAVE_AZBOX_HARDWARE #include "../libazbox/record_lib.h" #elif HAVE_GENERIC_HARDWARE diff --git a/include/video_hal.h b/include/video_hal.h index 1ff401a..448b800 100644 --- a/include/video_hal.h +++ b/include/video_hal.h @@ -8,6 +8,9 @@ #elif HAVE_ARM_HARDWARE #include "../libarmbox/video_lib.h" #include "../libarmbox/hdmi_cec.h" +#elif HAVE_MIPS_HARDWARE +#include "../libmipsbox/video_lib.h" +#include "../libmipsbox/hdmi_cec.h" #elif HAVE_AZBOX_HARDWARE #include "../libazbox/video_lib.h" #elif HAVE_GENERIC_HARDWARE diff --git a/libdvbci/descrambler.cpp b/libdvbci/descrambler.cpp index 2d18585..48e2243 100644 --- a/libdvbci/descrambler.cpp +++ b/libdvbci/descrambler.cpp @@ -18,7 +18,7 @@ static const char * FILENAME = "[descrambler]"; static int desc_fd = -1; static int desc_user_count = 0; -#if HAVE_ARM_HARDWARE +#if HAVE_ARM_HARDWARE || HAVE_MIPS_HARDWARE static const char *descrambler_filename = "/dev/ciplus_ca0"; @@ -131,7 +131,7 @@ int descrambler_set_key(int index, int parity, unsigned char *data) int descrambler_set_pid(int index, int enable, int pid) { struct ca_pid p; -#if HAVE_ARM_HARDWARE +#if HAVE_ARM_HARDWARE || HAVE_MIPS_HARDWARE unsigned int flags = 0x80; if (index) diff --git a/libdvbci/dvbci_ccmgr.cpp b/libdvbci/dvbci_ccmgr.cpp index 932e6b1..055bb8c 100644 --- a/libdvbci/dvbci_ccmgr.cpp +++ b/libdvbci/dvbci_ccmgr.cpp @@ -1353,7 +1353,7 @@ void eDVBCIContentControlManagerSession::resendKey(eDVBCISlot *tslot) if (!tslot->SidBlackListed && (tslot->recordUse[0] || tslot->liveUse[0])) { -#if HAVE_ARM_HARDWARE +#if HAVE_ARM_HARDWARE || HAVE_MIPS_HARDWARE if (slot->newPids) { if (slot->pids.size()) diff --git a/libeplayer3-mips/Makefile.am b/libeplayer3-mips/Makefile.am new file mode 100644 index 0000000..8cd8487 --- /dev/null +++ b/libeplayer3-mips/Makefile.am @@ -0,0 +1,69 @@ +AUTOMAKE_OPTIONS = subdir-objects +AM_CFLAGS = -Wall -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE + +CXXFLAGS = -Wall + +noinst_LTLIBRARIES = libeplayer3_mips.la + +AM_CPPFLAGS = -I$(srcdir)/include +AM_CPPFLAGS += -I$(top_srcdir)/include +AM_CPPFLAGS += -I$(srcdir)/external + +AM_CXXFLAGS = -fno-rtti -fno-exceptions -fno-strict-aliasing + +SOURCE_FILES = container/container.c +SOURCE_FILES += container/container_ffmpeg.c +SOURCE_FILES += manager/manager.c +SOURCE_FILES += manager/audio.c +SOURCE_FILES += manager/video.c +SOURCE_FILES += manager/chapter.c +SOURCE_FILES += manager/subtitle.c +SOURCE_FILES += output/output_subtitle.c +SOURCE_FILES += output/output.c +SOURCE_FILES += output/writer/common/pes.c +SOURCE_FILES += output/writer/common/misc.c +SOURCE_FILES += output/writer/common/writer.c +SOURCE_FILES += output/linuxdvb_buffering.c +SOURCE_FILES += playback/playback.c +SOURCE_FILES += external/ffmpeg/src/bitstream.c +SOURCE_FILES += external/ffmpeg/src/latmenc.c +SOURCE_FILES += external/ffmpeg/src/mpeg4audio.c + +if ENABLE_FLV2MPEG4 +AM_CFLAGS += -DHAVE_FLV2MPEG4_CONVERTER +AM_CPPFLAGS += -I$(srcdir)/external/flv2mpeg4 +SOURCE_FILES += external/flv2mpeg4/src/m4vencode.c +SOURCE_FILES += external/flv2mpeg4/src/flvdecoder.c +SOURCE_FILES += external/flv2mpeg4/src/dcprediction.c +SOURCE_FILES += external/flv2mpeg4/src/flv2mpeg4.c +endif + +SOURCE_FILES += \ + output/linuxdvb_mipsel.c \ + output/writer/mipsel/writer.c \ + output/writer/mipsel/aac.c \ + output/writer/mipsel/ac3.c \ + output/writer/mipsel/mp3.c \ + output/writer/mipsel/pcm.c \ + output/writer/mipsel/lpcm.c \ + output/writer/mipsel/dts.c \ + output/writer/mipsel/amr.c \ + output/writer/mipsel/wma.c \ + output/writer/mipsel/h265.c \ + output/writer/mipsel/h264.c \ + output/writer/mipsel/mjpeg.c \ + output/writer/mipsel/mpeg2.c \ + output/writer/mipsel/mpeg4.c \ + output/writer/mipsel/divx3.c \ + output/writer/mipsel/vp.c \ + output/writer/mipsel/wmv.c \ + output/writer/mipsel/vc1.c + +libeplayer3_mips_la_SOURCES = $(SOURCE_FILES) + +LIBEPLAYER3_LIBS = libeplayer3_mips.la -lpthread -lavformat -lavcodec -lavutil -lswresample + +bin_PROGRAMS = eplayer3 +eplayer3_SOURCES = main/exteplayer.c +eplayer3_LDADD = $(LIBEPLAYER3_LIBS) +eplayer3_DEPENDENCIES = libeplayer3_mips.la diff --git a/libeplayer3-mips/README.md b/libeplayer3-mips/README.md new file mode 120000 index 0000000..ff408ad --- /dev/null +++ b/libeplayer3-mips/README.md @@ -0,0 +1 @@ +../libeplayer3-arm/README.md \ No newline at end of file diff --git a/libeplayer3-mips/container b/libeplayer3-mips/container new file mode 120000 index 0000000..2453de4 --- /dev/null +++ b/libeplayer3-mips/container @@ -0,0 +1 @@ +../libeplayer3-arm/container \ No newline at end of file diff --git a/libeplayer3-mips/external b/libeplayer3-mips/external new file mode 120000 index 0000000..2971e46 --- /dev/null +++ b/libeplayer3-mips/external @@ -0,0 +1 @@ +../libeplayer3-arm/external \ No newline at end of file diff --git a/libeplayer3-mips/include b/libeplayer3-mips/include new file mode 120000 index 0000000..df1d8f8 --- /dev/null +++ b/libeplayer3-mips/include @@ -0,0 +1 @@ +../libeplayer3-arm/include \ No newline at end of file diff --git a/libeplayer3-mips/main b/libeplayer3-mips/main new file mode 120000 index 0000000..2a8b5e2 --- /dev/null +++ b/libeplayer3-mips/main @@ -0,0 +1 @@ +../libeplayer3-arm/main \ No newline at end of file diff --git a/libeplayer3-mips/manager b/libeplayer3-mips/manager new file mode 120000 index 0000000..950094e --- /dev/null +++ b/libeplayer3-mips/manager @@ -0,0 +1 @@ +../libeplayer3-arm/manager \ No newline at end of file diff --git a/libeplayer3-mips/output b/libeplayer3-mips/output new file mode 120000 index 0000000..618f49c --- /dev/null +++ b/libeplayer3-mips/output @@ -0,0 +1 @@ +../libeplayer3-arm/output \ No newline at end of file diff --git a/libeplayer3-mips/playback b/libeplayer3-mips/playback new file mode 120000 index 0000000..7a8298e --- /dev/null +++ b/libeplayer3-mips/playback @@ -0,0 +1 @@ +../libeplayer3-arm/playback \ No newline at end of file diff --git a/libmipsbox/Makefile.am b/libmipsbox/Makefile.am new file mode 100644 index 0000000..df2e807 --- /dev/null +++ b/libmipsbox/Makefile.am @@ -0,0 +1,35 @@ +noinst_LTLIBRARIES = libmipsbox.la + +AM_CPPFLAGS = \ + -I$(top_srcdir)/common \ + -I$(top_srcdir)/include + +AM_CXXFLAGS = -fno-rtti -fno-exceptions -fno-strict-aliasing + +AM_LDFLAGS = \ + -lOpenThreads \ + @AVFORMAT_LIBS@ \ + @AVUTIL_LIBS@ \ + @AVCODEC_LIBS@ \ + @SWRESAMPLE_LIBS@ \ + -lpthread -lass -lrt + +libmipsbox_la_SOURCES = \ + hardware_caps.c \ + dmx.cpp \ + video.cpp \ + audio.cpp \ + init.cpp \ + record.cpp \ + hdmi_cec.cpp + +libmipsbox_la_SOURCES += \ + playback_libeplayer3.cpp + +AM_CPPFLAGS += \ + -I$(top_srcdir)/libeplayer3-mips/include + +AM_LDFLAGS += \ + -lass + +AM_CPPFLAGS += -D__STDC_FORMAT_MACROS -D__STDC_CONSTANT_MACROS diff --git a/libmipsbox/audio.cpp b/libmipsbox/audio.cpp new file mode 120000 index 0000000..a5bac70 --- /dev/null +++ b/libmipsbox/audio.cpp @@ -0,0 +1 @@ +../libarmbox/audio.cpp \ No newline at end of file diff --git a/libmipsbox/audio_lib.h b/libmipsbox/audio_lib.h new file mode 120000 index 0000000..f12d7d5 --- /dev/null +++ b/libmipsbox/audio_lib.h @@ -0,0 +1 @@ +../libarmbox/audio_lib.h \ No newline at end of file diff --git a/libmipsbox/dmx.cpp b/libmipsbox/dmx.cpp new file mode 120000 index 0000000..a8e7f08 --- /dev/null +++ b/libmipsbox/dmx.cpp @@ -0,0 +1 @@ +../libarmbox/dmx.cpp \ No newline at end of file diff --git a/libmipsbox/hardware_caps.c b/libmipsbox/hardware_caps.c new file mode 100644 index 0000000..bb81877 --- /dev/null +++ b/libmipsbox/hardware_caps.c @@ -0,0 +1,50 @@ +/* + * determine the capabilities of the hardware. + * part of libstb-hal + * + * (C) 2010-2012 Stefan Seyfried + * + * License: GPL v2 or later + */ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#define FP_DEV "/dev/dbox/oled0" +static int initialized = 0; +static hw_caps_t caps; + +hw_caps_t *get_hwcaps(void) +{ + if (initialized) + return ∩︀ + + memset(&caps, 0, sizeof(hw_caps_t)); + +#if BOXMODEL_VUDUO + initialized = 1; + caps.has_CI = 2; + caps.can_cec = 1; + caps.can_shutdown = 1; + caps.display_xres = 16; + caps.display_type = HW_DISPLAY_LINE_TEXT; + caps.display_can_deepstandby = 1; + caps.display_can_set_brightness = 1; + caps.display_has_statusline = 0; + caps.has_button_timer = 1; + caps.has_HDMI = 1; + caps.has_SCART = 1; + strcpy(caps.boxvendor, "VU+"); + strcpy(caps.boxname, "DUO"); + strcpy(caps.boxarch, "BCM7335"); +#endif + return ∩︀ +} diff --git a/libmipsbox/hdmi_cec.cpp b/libmipsbox/hdmi_cec.cpp new file mode 120000 index 0000000..7cf1426 --- /dev/null +++ b/libmipsbox/hdmi_cec.cpp @@ -0,0 +1 @@ +../libarmbox/hdmi_cec.cpp \ No newline at end of file diff --git a/libmipsbox/hdmi_cec.h b/libmipsbox/hdmi_cec.h new file mode 120000 index 0000000..20ec29c --- /dev/null +++ b/libmipsbox/hdmi_cec.h @@ -0,0 +1 @@ +../libarmbox/hdmi_cec.h \ No newline at end of file diff --git a/libmipsbox/hdmi_cec_types.h b/libmipsbox/hdmi_cec_types.h new file mode 120000 index 0000000..3481cbf --- /dev/null +++ b/libmipsbox/hdmi_cec_types.h @@ -0,0 +1 @@ +../libarmbox/hdmi_cec_types.h \ No newline at end of file diff --git a/libmipsbox/init.cpp b/libmipsbox/init.cpp new file mode 120000 index 0000000..7de8db4 --- /dev/null +++ b/libmipsbox/init.cpp @@ -0,0 +1 @@ +../libarmbox/init.cpp \ No newline at end of file diff --git a/libmipsbox/linux-uapi-cec.h b/libmipsbox/linux-uapi-cec.h new file mode 120000 index 0000000..993e23b --- /dev/null +++ b/libmipsbox/linux-uapi-cec.h @@ -0,0 +1 @@ +../libarmbox/linux-uapi-cec.h \ No newline at end of file diff --git a/libmipsbox/playback_libeplayer3.cpp b/libmipsbox/playback_libeplayer3.cpp new file mode 120000 index 0000000..a9ecfad --- /dev/null +++ b/libmipsbox/playback_libeplayer3.cpp @@ -0,0 +1 @@ +../libarmbox/playback_libeplayer3.cpp \ No newline at end of file diff --git a/libmipsbox/playback_libeplayer3.h b/libmipsbox/playback_libeplayer3.h new file mode 120000 index 0000000..7eac198 --- /dev/null +++ b/libmipsbox/playback_libeplayer3.h @@ -0,0 +1 @@ +../libarmbox/playback_libeplayer3.h \ No newline at end of file diff --git a/libmipsbox/record.cpp b/libmipsbox/record.cpp new file mode 120000 index 0000000..bd5779b --- /dev/null +++ b/libmipsbox/record.cpp @@ -0,0 +1 @@ +../libarmbox/record.cpp \ No newline at end of file diff --git a/libmipsbox/record_lib.h b/libmipsbox/record_lib.h new file mode 120000 index 0000000..8104a0c --- /dev/null +++ b/libmipsbox/record_lib.h @@ -0,0 +1 @@ +../libarmbox/record_lib.h \ No newline at end of file diff --git a/libmipsbox/video.cpp b/libmipsbox/video.cpp new file mode 120000 index 0000000..5ee7b52 --- /dev/null +++ b/libmipsbox/video.cpp @@ -0,0 +1 @@ +../libarmbox/video.cpp \ No newline at end of file diff --git a/libmipsbox/video_lib.h b/libmipsbox/video_lib.h new file mode 120000 index 0000000..21a9fa2 --- /dev/null +++ b/libmipsbox/video_lib.h @@ -0,0 +1 @@ +../libarmbox/video_lib.h \ No newline at end of file