Merge remote-tracking branch 'tangocash/master'

This commit is contained in:
max_10
2017-09-17 21:54:06 +02:00
3 changed files with 54 additions and 21 deletions

View File

@@ -110,14 +110,19 @@ static const char *DMX_T[] = {
static int dmx_source[NUM_DEMUX] = { 0, 0, 0, 0 }; static int dmx_source[NUM_DEMUX] = { 0, 0, 0, 0 };
/* map the device numbers. */ /* map the device numbers. */
#define NUM_DEMUXDEV 3 #define NUM_DEMUXDEV 8
static const char *devname[NUM_DEMUXDEV] = { static const char *devname[NUM_DEMUXDEV] = {
"/dev/dvb/adapter0/demux0", "/dev/dvb/adapter0/demux0",
"/dev/dvb/adapter0/demux1", "/dev/dvb/adapter0/demux1",
"/dev/dvb/adapter0/demux2" "/dev/dvb/adapter0/demux2",
"/dev/dvb/adapter0/demux3",
"/dev/dvb/adapter0/demux4",
"/dev/dvb/adapter0/demux5",
"/dev/dvb/adapter0/demux6",
"/dev/dvb/adapter0/demux7"
}; };
/* did we already DMX_SET_SOURCE on that demux device? */ /* did we already DMX_SET_SOURCE on that demux device? */
static bool init[NUM_DEMUXDEV] = { false, false, false }; static bool init[NUM_DEMUXDEV] = { false, false, false, false, false, false, false, false };
/* uuuugly */ /* uuuugly */
static int dmx_tp_count = 0; static int dmx_tp_count = 0;

View File

@@ -49,15 +49,18 @@ static const char * FILENAME = "[playback.cpp]";
typedef enum typedef enum
{ {
GST_PLAY_FLAG_VIDEO = 0x00000001, GST_PLAY_FLAG_VIDEO = (1 << 0),
GST_PLAY_FLAG_AUDIO = 0x00000002, GST_PLAY_FLAG_AUDIO = (1 << 1),
GST_PLAY_FLAG_TEXT = 0x00000004, GST_PLAY_FLAG_TEXT = (1 << 2),
GST_PLAY_FLAG_VIS = 0x00000008, GST_PLAY_FLAG_VIS = (1 << 3),
GST_PLAY_FLAG_SOFT_VOLUME = 0x00000010, GST_PLAY_FLAG_SOFT_VOLUME = (1 << 4),
GST_PLAY_FLAG_NATIVE_AUDIO = 0x00000020, GST_PLAY_FLAG_NATIVE_AUDIO = (1 << 5),
GST_PLAY_FLAG_NATIVE_VIDEO = 0x00000040, GST_PLAY_FLAG_NATIVE_VIDEO = (1 << 6),
GST_PLAY_FLAG_DOWNLOAD = 0x00000080, GST_PLAY_FLAG_DOWNLOAD = (1 << 7),
GST_PLAY_FLAG_BUFFERING = 0x000000100 GST_PLAY_FLAG_BUFFERING = (1 << 8),
GST_PLAY_FLAG_DEINTERLACE = (1 << 9),
GST_PLAY_FLAG_SOFT_COLORBALANCE = (1 << 10),
GST_PLAY_FLAG_FORCE_FILTERS = (1 << 11),
} GstPlayFlags; } GstPlayFlags;
@@ -389,6 +392,9 @@ bool cPlayback::Start(char *filename, int /*vpid*/, int /*vtype*/, int /*apid*/,
lt_info("%s:%s - filename=%s\n", FILENAME, __FUNCTION__, filename); lt_info("%s:%s - filename=%s\n", FILENAME, __FUNCTION__, filename);
guint flags = GST_PLAY_FLAG_AUDIO | GST_PLAY_FLAG_VIDEO | \
GST_PLAY_FLAG_TEXT | GST_PLAY_FLAG_NATIVE_VIDEO;
// create gst pipeline // create gst pipeline
m_gst_playbin = gst_element_factory_make ("playbin", "playbin"); m_gst_playbin = gst_element_factory_make ("playbin", "playbin");
@@ -396,13 +402,6 @@ bool cPlayback::Start(char *filename, int /*vpid*/, int /*vtype*/, int /*apid*/,
{ {
lt_info("%s:%s - m_gst_playbin\n", FILENAME, __FUNCTION__); lt_info("%s:%s - m_gst_playbin\n", FILENAME, __FUNCTION__);
guint flags;
g_object_get(G_OBJECT (m_gst_playbin), "flags", &flags, NULL);
/* avoid video conversion, let the (hardware) sinks handle that */
flags |= GST_PLAY_FLAG_NATIVE_VIDEO;
/* volume control is done by hardware */
flags &= ~GST_PLAY_FLAG_SOFT_VOLUME;
g_object_set(G_OBJECT (m_gst_playbin), "uri", uri, NULL); g_object_set(G_OBJECT (m_gst_playbin), "uri", uri, NULL);
g_object_set(G_OBJECT (m_gst_playbin), "flags", flags, NULL); g_object_set(G_OBJECT (m_gst_playbin), "flags", flags, NULL);

View File

@@ -85,6 +85,26 @@ static const char *VMPEG_dst_all[] = {
"/proc/stb/vmpeg/1/dst_all" "/proc/stb/vmpeg/1/dst_all"
}; };
static const char *VMPEG_dst_height[] = {
"/proc/stb/vmpeg/0/dst_height",
"/proc/stb/vmpeg/1/dst_height"
};
static const char *VMPEG_dst_width[] = {
"/proc/stb/vmpeg/0/dst_width",
"/proc/stb/vmpeg/1/dst_width"
};
static const char *VMPEG_dst_top[] = {
"/proc/stb/vmpeg/0/dst_top",
"/proc/stb/vmpeg/1/dst_top"
};
static const char *VMPEG_dst_left[] = {
"/proc/stb/vmpeg/0/dst_left",
"/proc/stb/vmpeg/1/dst_left"
};
static const char *VMPEG_framerate[] = { static const char *VMPEG_framerate[] = {
"/proc/stb/vmpeg/0/framerate", "/proc/stb/vmpeg/0/framerate",
"/proc/stb/vmpeg/1/framerate" "/proc/stb/vmpeg/1/framerate"
@@ -653,8 +673,17 @@ void cVideo::Pig(int x, int y, int w, int h, int osd_w, int osd_h, int startx, i
_h /= 720; _h /= 720;
} }
lt_debug("#%d %s: x:%d y:%d w:%d h:%d xr:%d yr:%d\n", devnum, __func__, _x, _y, _w, _h, xres, yres); lt_debug("#%d %s: x:%d y:%d w:%d h:%d xr:%d yr:%d\n", devnum, __func__, _x, _y, _w, _h, xres, yres);
sprintf(buffer, "%x %x %x %x", _x, _y, _w, _h); sprintf(buffer, "%x", _x);
proc_put(VMPEG_dst_all[devnum], buffer, strlen(buffer)); proc_put(VMPEG_dst_left[devnum], buffer, strlen(buffer));
sprintf(buffer, "%x", _y);
proc_put(VMPEG_dst_top[devnum], buffer, strlen(buffer));
sprintf(buffer, "%x", _w);
proc_put(VMPEG_dst_width[devnum], buffer, strlen(buffer));
sprintf(buffer, "%x", _h);
proc_put(VMPEG_dst_height[devnum], buffer, strlen(buffer));
} }
static inline int rate2csapi(int rate) static inline int rate2csapi(int rate)