diff --git a/acinclude.m4 b/acinclude.m4 index c93afc7..581c573 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -90,7 +90,7 @@ AC_ARG_WITH(boxmodel, AS_HELP_STRING([--with-boxmodel], [valid for generic: generic, raspi]) AS_HELP_STRING([], [valid for spark: spark, spark7162]) AS_HELP_STRING([], [valid for duckbox: ufs910, ufs912, ufs913, ufs922, atevio7500, fortis_hdbox, octagon1008, hs7110, hs7810a, hs7119, hs7819, dp7000, cuberevo, cuberevo_mini, cuberevo_mini2, cuberevo_250hd, cuberevo_2000hd, cuberevo_3000hd, ipbox9900, ipbox99, ipbox55, arivalink200, tf7700, hl101]) -AS_HELP_STRING([], [valid for armbox: hd51, hd60, bre2ze4k, vusolo4k, vuduo4k, vuzero4k]) +AS_HELP_STRING([], [valid for armbox: hd51, hd60, bre2ze4k, vusolo4k, vuduo4k, vuultimo4k, vuzero4k]) AS_HELP_STRING([], [valid for mipsbox: vuduo]), [case "${withval}" in generic|raspi) @@ -183,6 +183,7 @@ AM_CONDITIONAL(BOXMODEL_HD60, test "$BOXMODEL" = "hd60") AM_CONDITIONAL(BOXMODEL_BRE2ZE4K, test "$BOXMODEL" = "bre2ze4k") AM_CONDITIONAL(BOXMODEL_VUSOLO4K, test "$BOXMODEL" = "vusolo4k") AM_CONDITIONAL(BOXMODEL_VUDUO4K, test "$BOXMODEL" = "vuduo4k") +AM_CONDITIONAL(BOXMODEL_VUULTIMO4K, test "$BOXMODEL" = "vuultimo4k") AM_CONDITIONAL(BOXMODEL_VUZERO4K, test "$BOXMODEL" = "vuzero4k") # mipsbox @@ -273,6 +274,8 @@ elif test "$BOXMODEL" = "vusolo4k"; then AC_DEFINE(BOXMODEL_VUSOLO4K, 1, [vusolo4k]) elif test "$BOXMODEL" = "vuduo4k"; then AC_DEFINE(BOXMODEL_VUDUO4K, 1, [vuduo4k]) +elif test "$BOXMODEL" = "vuultimo4k"; then + AC_DEFINE(BOXMODEL_VUULTIMO4K, 1, [vuultimo4k]) elif test "$BOXMODEL" = "vuzero4k"; then AC_DEFINE(BOXMODEL_VUZERO4K, 1, [vuzero4k]) elif test "$BOXMODEL" = "vuduo"; then diff --git a/common/ca_ci.cpp b/common/ca_ci.cpp index f8913e5..be0dd2c 100644 --- a/common/ca_ci.cpp +++ b/common/ca_ci.cpp @@ -234,7 +234,7 @@ static bool transmitData(eDVBCISlot* slot, unsigned char* d, int len) { printf("%s -> %s len(%d)\n", FILENAME, __func__, len); -#if BOXMODEL_VUSOLO4K || BOXMODEL_VUDUO4K || BOXMODEL_VUZERO4K +#if BOXMODEL_VUSOLO4K || BOXMODEL_VUDUO4K || BOXMODEL_VUULTIMO4K || BOXMODEL_VUZERO4K #if y_debug for (int i = 0; i < len; i++) printf("%02x ", d[i]); @@ -1017,7 +1017,7 @@ void cCA::setSource(eDVBCISlot* slot) case TUNER_D: fprintf(ci, "D"); break; -#if BOXMODEL_VUSOLO4K || BOXMODEL_VUDUO4K +#if BOXMODEL_VUSOLO4K || BOXMODEL_VUDUO4K || BOXMODEL_VUULTIMO4K case TUNER_E: fprintf(ci, "E"); break; @@ -1054,6 +1054,32 @@ void cCA::setSource(eDVBCISlot* slot) case TUNER_P: fprintf(ci, "P"); break; +#if BOXMODEL_VUULTIMO4K + case TUNER_Q: + fprintf(ci, "Q"); + break; + case TUNER_R: + fprintf(ci, "R"); + break; + case TUNER_S: + fprintf(ci, "S"); + break; + case TUNER_T: + fprintf(ci, "T"); + break; + case TUNER_U: + fprintf(ci, "U"); + break; + case TUNER_V: + fprintf(ci, "V"); + break; + case TUNER_W: + fprintf(ci, "W"); + break; + case TUNER_X: + fprintf(ci, "X"); + break; +#endif #endif } fclose(ci); @@ -1069,10 +1095,14 @@ void cCA::setInputs() char choices[64]; FILE * fd = 0; +#if BOXMODEL_VUULTIMO4K + for (int number = 0; number < 24; number++) // tuner A to X, input 0 to 23 +#else #if BOXMODEL_VUSOLO4K || BOXMODEL_VUDUO4K for (int number = 0; number < 16; number++) // tuner A to P, input 0 to 15 #else for (int number = 0; number < 4; number++) // tuner A to D, input 0 to 3 +#endif #endif { snprintf(choices, 64, "/proc/stb/tsmux/input%d_choices", number); @@ -1134,7 +1164,7 @@ void cCA::setInputSource(eDVBCISlot* slot, bool ci) case TUNER_D: fprintf(input, "D"); break; -#if BOXMODEL_VUSOLO4K || BOXMODEL_VUDUO4K +#if BOXMODEL_VUSOLO4K || BOXMODEL_VUDUO4K || BOXMODEL_VUULTIMO4K case TUNER_E: fprintf(input, "E"); break; @@ -1171,6 +1201,32 @@ void cCA::setInputSource(eDVBCISlot* slot, bool ci) case TUNER_P: fprintf(input, "P"); break; +#if BOXMODEL_VUULTIMO4K + case TUNER_Q: + fprintf(input, "Q"); + break; + case TUNER_R: + fprintf(input, "R"); + break; + case TUNER_S: + fprintf(input, "S"); + break; + case TUNER_T: + fprintf(input, "T"); + break; + case TUNER_U: + fprintf(input, "U"); + break; + case TUNER_V: + fprintf(input, "V"); + break; + case TUNER_W: + fprintf(input, "W"); + break; + case TUNER_X: + fprintf(input, "X"); + break; +#endif #endif } } diff --git a/include/ca_ci.h b/include/ca_ci.h index 4fc90c6..5897626 100644 --- a/include/ca_ci.h +++ b/include/ca_ci.h @@ -127,7 +127,7 @@ typedef enum { TUNER_B, TUNER_C, TUNER_D -#if BOXMODEL_VUSOLO4K || BOXMODEL_VUDUO4K +#if BOXMODEL_VUSOLO4K || BOXMODEL_VUDUO4K || BOXMODEL_VUULTIMO4K , TUNER_E , TUNER_F , TUNER_G @@ -140,6 +140,16 @@ typedef enum { , TUNER_N , TUNER_O , TUNER_P +#if BOXMODEL_VUULTIMO4K + , TUNER_Q + , TUNER_R + , TUNER_S + , TUNER_T + , TUNER_U + , TUNER_V + , TUNER_W + , TUNER_X +#endif #endif } source_t; diff --git a/include/dmx_hal.h b/include/dmx_hal.h index e9ad643..a8eb72f 100644 --- a/include/dmx_hal.h +++ b/include/dmx_hal.h @@ -37,11 +37,15 @@ extern "C" { #include +#if BOXMODEL_VUULTIMO4K +#define MAX_DMX_UNITS 24 +#else #if BOXMODEL_VUSOLO4K || BOXMODEL_VUDUO4K #define MAX_DMX_UNITS 16 #else #define MAX_DMX_UNITS 4 #endif +#endif typedef enum { diff --git a/libarmbox/audio.cpp b/libarmbox/audio.cpp index 38c4e42..5d056bb 100644 --- a/libarmbox/audio.cpp +++ b/libarmbox/audio.cpp @@ -337,7 +337,7 @@ int cAudio::StopClip() hal_info("%s: clipfd not yet opened\n", __FUNCTION__); return -1; } -#if BOXMODEL_VUSOLO4K || BOXMODEL_VUDUO4K || BOXMODEL_VUZERO4K +#if BOXMODEL_VUSOLO4K || BOXMODEL_VUDUO4K || BOXMODEL_VUULTIMO4K || BOXMODEL_VUZERO4K ioctl(clipfd, SNDCTL_DSP_RESET); #endif close(clipfd); diff --git a/libarmbox/hardware_caps.c b/libarmbox/hardware_caps.c index d31b161..c163cff 100644 --- a/libarmbox/hardware_caps.c +++ b/libarmbox/hardware_caps.c @@ -60,11 +60,29 @@ hw_caps_t *get_hwcaps(void) caps.display_has_statusline = 0; // 0 because we use graphlcd/lcd4linux caps.has_button_timer = 1; caps.has_button_vformat = 0; - caps.has_HDMI = 1; + caps.has_HDMI = 2; strcpy(caps.boxvendor, "VU+"); strcpy(caps.boxname, "DUO4K"); strcpy(caps.boxarch, "BCM7278"); #endif +#if BOXMODEL_VUULTIMO4K + initialized = 1; + caps.has_CI = 2; + caps.can_cec = 1; + caps.can_shutdown = 1; + caps.display_xres = 480; // or 800 ??? + caps.display_yres = 320; // or 480 ??? + caps.display_type = HW_DISPLAY_GFX; + caps.display_can_deepstandby = 0; // 0 because we use graphlcd/lcd4linux + caps.display_can_set_brightness = 0; // 0 because we use graphlcd/lcd4linux + caps.display_has_statusline = 0; // 0 because we use graphlcd/lcd4linux + caps.has_button_timer = 1; + caps.has_button_vformat = 0; + caps.has_HDMI = 2; + strcpy(caps.boxvendor, "VU+"); + strcpy(caps.boxname, "ULTIMO4K"); + strcpy(caps.boxarch, "BCM7444S"); +#endif #if BOXMODEL_VUZERO4K initialized = 1; caps.has_CI = 1; diff --git a/libarmbox/init.cpp b/libarmbox/init.cpp index 53b9707..56d91f3 100644 --- a/libarmbox/init.cpp +++ b/libarmbox/init.cpp @@ -38,7 +38,7 @@ void hal_api_init() proc_put("/proc/stb/fb/dst_width", buffer, strlen(buffer)); sprintf(buffer, "%x", 1); proc_put("/proc/stb/fb/dst_apply", buffer, strlen(buffer)); -#if BOXMODEL_VUSOLO4K || BOXMODEL_VUDUO4K +#if BOXMODEL_VUSOLO4K || BOXMODEL_VUDUO4K || BOXMODEL_VUULTIMO4K const char mode_fcc[] = { "enable" }; proc_put("/proc/stb/frontend/fbc/fcc", mode_fcc, strlen(mode_fcc)); #endif diff --git a/libeplayer3/container/container_ffmpeg.c b/libeplayer3/container/container_ffmpeg.c index 795c141..57b46e4 100644 --- a/libeplayer3/container/container_ffmpeg.c +++ b/libeplayer3/container/container_ffmpeg.c @@ -1999,7 +1999,7 @@ int32_t container_ffmpeg_update_tracks(Context_t *context, char *filename, int32 #endif ffmpeg_printf(20, "dump format\n"); - if((avContextTab[0] != NULL) && (FFMPEG_DEBUG_LEVEL > 0)) + if ((avContextTab[0] != NULL) && (FFMPEG_DEBUG_LEVEL > 0)) av_dump_format(avContextTab[0], 0, filename, 0); diff --git a/libeplayer3/output/writer/mipsel/mjpeg.c b/libeplayer3/output/writer/mipsel/mjpeg.c index afd522f..2bd2765 100755 --- a/libeplayer3/output/writer/mipsel/mjpeg.c +++ b/libeplayer3/output/writer/mipsel/mjpeg.c @@ -42,6 +42,7 @@ #include "stm_ioctls.h" #include "bcm_ioctls.h" +#include "debug.h" #include "common.h" #include "output.h" #include "debug.h"