mirror of
https://github.com/tuxbox-neutrino/libstb-hal.git
synced 2025-08-26 15:02:58 +02:00
DMX_PIP_CHANNEL removed, DMX_VIDEO_CHANNEL does the same
This commit is contained in:
@@ -65,7 +65,6 @@ typedef enum
|
|||||||
DMX_AUDIO_CHANNEL,
|
DMX_AUDIO_CHANNEL,
|
||||||
DMX_PES_CHANNEL,
|
DMX_PES_CHANNEL,
|
||||||
DMX_PSI_CHANNEL,
|
DMX_PSI_CHANNEL,
|
||||||
DMX_PIP_CHANNEL,
|
|
||||||
DMX_TP_CHANNEL,
|
DMX_TP_CHANNEL,
|
||||||
DMX_PCR_ONLY_CHANNEL
|
DMX_PCR_ONLY_CHANNEL
|
||||||
} DMX_CHANNEL_TYPE;
|
} DMX_CHANNEL_TYPE;
|
||||||
|
@@ -511,7 +511,6 @@ bool cDemux::pesFilter(const unsigned short _pid)
|
|||||||
|
|
||||||
switch (dmx_type)
|
switch (dmx_type)
|
||||||
{
|
{
|
||||||
case DMX_PIP_CHANNEL:
|
|
||||||
case DMX_VIDEO_CHANNEL:
|
case DMX_VIDEO_CHANNEL:
|
||||||
switch (num)
|
switch (num)
|
||||||
{
|
{
|
||||||
@@ -532,18 +531,15 @@ bool cDemux::pesFilter(const unsigned short _pid)
|
|||||||
break;
|
break;
|
||||||
case DMX_PES_CHANNEL:
|
case DMX_PES_CHANNEL:
|
||||||
p_flt.pes_type = DMX_PES_OTHER;
|
p_flt.pes_type = DMX_PES_OTHER;
|
||||||
p_flt.output = DMX_OUT_TAP;
|
p_flt.output = DMX_OUT_TAP;
|
||||||
break;
|
break;
|
||||||
#if 0
|
#if 0
|
||||||
case DMX_PSI_CHANNEL:
|
case DMX_PSI_CHANNEL:
|
||||||
break;
|
break;
|
||||||
case DMX_PIP_CHANNEL: /* PIP is a special version of DMX_VIDEO_CHANNEL */
|
|
||||||
p_flt.pes_type = DMX_PES_VIDEO1;
|
|
||||||
break;
|
|
||||||
#endif
|
#endif
|
||||||
case DMX_TP_CHANNEL:
|
case DMX_TP_CHANNEL:
|
||||||
p_flt.pes_type = DMX_PES_OTHER;
|
p_flt.pes_type = DMX_PES_OTHER;
|
||||||
p_flt.output = DMX_OUT_TSDEMUX_TAP;
|
p_flt.output = DMX_OUT_TSDEMUX_TAP;
|
||||||
break;
|
break;
|
||||||
case DMX_PCR_ONLY_CHANNEL:
|
case DMX_PCR_ONLY_CHANNEL:
|
||||||
switch (num)
|
switch (num)
|
||||||
|
@@ -16,7 +16,6 @@ typedef enum
|
|||||||
DMX_AUDIO_CHANNEL,
|
DMX_AUDIO_CHANNEL,
|
||||||
DMX_PES_CHANNEL,
|
DMX_PES_CHANNEL,
|
||||||
DMX_PSI_CHANNEL,
|
DMX_PSI_CHANNEL,
|
||||||
DMX_PIP_CHANNEL,
|
|
||||||
DMX_TP_CHANNEL,
|
DMX_TP_CHANNEL,
|
||||||
DMX_PCR_ONLY_CHANNEL
|
DMX_PCR_ONLY_CHANNEL
|
||||||
} DMX_CHANNEL_TYPE;
|
} DMX_CHANNEL_TYPE;
|
||||||
|
@@ -8,13 +8,13 @@
|
|||||||
|
|
||||||
#include <linux/dvb/audio.h>
|
#include <linux/dvb/audio.h>
|
||||||
|
|
||||||
|
#include <hardware_caps.h>
|
||||||
#include <proc_tools.h>
|
#include <proc_tools.h>
|
||||||
|
|
||||||
#include "audio_lib.h"
|
#include "audio_lib.h"
|
||||||
#include "audio_mixer.h"
|
#include "audio_mixer.h"
|
||||||
#include "hal_debug.h"
|
#include "hal_debug.h"
|
||||||
|
|
||||||
#define AUDIO_DEVICE "/dev/dvb/adapter0/audio0"
|
|
||||||
#define hal_debug(args...) _hal_debug(HAL_DEBUG_AUDIO, this, args)
|
#define hal_debug(args...) _hal_debug(HAL_DEBUG_AUDIO, this, args)
|
||||||
#define hal_info(args...) _hal_info(HAL_DEBUG_AUDIO, this, args)
|
#define hal_info(args...) _hal_info(HAL_DEBUG_AUDIO, this, args)
|
||||||
|
|
||||||
@@ -27,9 +27,26 @@ enum
|
|||||||
};
|
};
|
||||||
|
|
||||||
cAudio *audioDecoder = NULL;
|
cAudio *audioDecoder = NULL;
|
||||||
|
cAudio *pipAudioDecoder = NULL;
|
||||||
|
|
||||||
cAudio::cAudio(void *, void *, void *)
|
static const char *ADEV[] =
|
||||||
{
|
{
|
||||||
|
"/dev/dvb/adapter0/audio0",
|
||||||
|
"/dev/dvb/adapter0/audio1",
|
||||||
|
"/dev/dvb/adapter0/audio2",
|
||||||
|
"/dev/dvb/adapter0/audio3"
|
||||||
|
};
|
||||||
|
|
||||||
|
cAudio::cAudio(void *, void *, void *, unsigned int unit)
|
||||||
|
{
|
||||||
|
hw_caps_t *hwcaps = get_hwcaps();
|
||||||
|
if (unit > (unsigned int) hwcaps->pip_devs)
|
||||||
|
{
|
||||||
|
hal_info("%s: unit %d out of range, setting to 0\n", __func__, unit);
|
||||||
|
devnum = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
devnum = unit;
|
||||||
fd = -1;
|
fd = -1;
|
||||||
clipfd = -1;
|
clipfd = -1;
|
||||||
mixer_fd = -1;
|
mixer_fd = -1;
|
||||||
@@ -54,7 +71,7 @@ void cAudio::openDevice(void)
|
|||||||
|
|
||||||
if (fd < 0)
|
if (fd < 0)
|
||||||
{
|
{
|
||||||
if ((fd = open(AUDIO_DEVICE, O_RDWR)) < 0)
|
if ((fd = open(ADEV[devnum], O_RDWR)) < 0)
|
||||||
hal_info("openDevice: open failed (%m)\n");
|
hal_info("openDevice: open failed (%m)\n");
|
||||||
fcntl(fd, F_SETFD, FD_CLOEXEC);
|
fcntl(fd, F_SETFD, FD_CLOEXEC);
|
||||||
do_mute(true, false);
|
do_mute(true, false);
|
||||||
|
@@ -26,6 +26,7 @@ class cAudio
|
|||||||
friend class cPlayback;
|
friend class cPlayback;
|
||||||
private:
|
private:
|
||||||
int fd;
|
int fd;
|
||||||
|
unsigned int devnum;
|
||||||
bool Muted;
|
bool Muted;
|
||||||
|
|
||||||
int clipfd; /* for pcm playback */
|
int clipfd; /* for pcm playback */
|
||||||
@@ -50,7 +51,7 @@ class cAudio
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
/* construct & destruct */
|
/* construct & destruct */
|
||||||
cAudio(void *, void *, void *);
|
cAudio(void *, void *, void *, unsigned int unit = 0);
|
||||||
~cAudio(void);
|
~cAudio(void);
|
||||||
|
|
||||||
void open_AVInput_Device(void)
|
void open_AVInput_Device(void)
|
||||||
|
@@ -503,31 +503,50 @@ bool cDemux::pesFilter(const unsigned short _pid)
|
|||||||
|
|
||||||
memset(&p_flt, 0, sizeof(p_flt));
|
memset(&p_flt, 0, sizeof(p_flt));
|
||||||
p_flt.pid = pid;
|
p_flt.pid = pid;
|
||||||
p_flt.output = DMX_OUT_DECODER;
|
|
||||||
p_flt.input = DMX_IN_FRONTEND;
|
p_flt.input = DMX_IN_FRONTEND;
|
||||||
|
p_flt.output = DMX_OUT_DECODER;
|
||||||
p_flt.flags = DMX_IMMEDIATE_START;
|
p_flt.flags = DMX_IMMEDIATE_START;
|
||||||
|
|
||||||
switch (dmx_type)
|
switch (dmx_type)
|
||||||
{
|
{
|
||||||
case DMX_PCR_ONLY_CHANNEL:
|
case DMX_VIDEO_CHANNEL:
|
||||||
p_flt.pes_type = DMX_PES_PCR;
|
switch (num)
|
||||||
|
{
|
||||||
|
case 0: p_flt.pes_type = DMX_PES_VIDEO0; break;
|
||||||
|
case 1: p_flt.pes_type = DMX_PES_VIDEO1; break;
|
||||||
|
case 2: p_flt.pes_type = DMX_PES_VIDEO2; break;
|
||||||
|
case 3: p_flt.pes_type = DMX_PES_VIDEO3; break;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case DMX_AUDIO_CHANNEL:
|
case DMX_AUDIO_CHANNEL:
|
||||||
p_flt.pes_type = DMX_PES_AUDIO;
|
switch (num)
|
||||||
break;
|
{
|
||||||
case DMX_VIDEO_CHANNEL:
|
case 0: p_flt.pes_type = DMX_PES_AUDIO0; break;
|
||||||
p_flt.pes_type = DMX_PES_VIDEO;
|
case 1: p_flt.pes_type = DMX_PES_AUDIO1; break;
|
||||||
break;
|
case 2: p_flt.pes_type = DMX_PES_AUDIO2; break;
|
||||||
case DMX_PIP_CHANNEL: /* PIP is a special version of DMX_VIDEO_CHANNEL */
|
case 3: p_flt.pes_type = DMX_PES_AUDIO3; break;
|
||||||
p_flt.pes_type = DMX_PES_VIDEO1;
|
}
|
||||||
break;
|
break;
|
||||||
case DMX_PES_CHANNEL:
|
case DMX_PES_CHANNEL:
|
||||||
p_flt.pes_type = DMX_PES_OTHER;
|
p_flt.pes_type = DMX_PES_OTHER;
|
||||||
p_flt.output = DMX_OUT_TAP;
|
p_flt.output = DMX_OUT_TAP;
|
||||||
break;
|
break;
|
||||||
|
#if 0
|
||||||
|
case DMX_PSI_CHANNEL:
|
||||||
|
break;
|
||||||
|
#endif
|
||||||
case DMX_TP_CHANNEL:
|
case DMX_TP_CHANNEL:
|
||||||
p_flt.pes_type = DMX_PES_OTHER;
|
p_flt.pes_type = DMX_PES_OTHER;
|
||||||
p_flt.output = DMX_OUT_TSDEMUX_TAP;
|
p_flt.output = DMX_OUT_TSDEMUX_TAP;
|
||||||
|
break;
|
||||||
|
case DMX_PCR_ONLY_CHANNEL:
|
||||||
|
switch (num)
|
||||||
|
{
|
||||||
|
case 0: p_flt.pes_type = DMX_PES_PCR0; break;
|
||||||
|
case 1: p_flt.pes_type = DMX_PES_PCR1; break;
|
||||||
|
case 2: p_flt.pes_type = DMX_PES_PCR2; break;
|
||||||
|
case 3: p_flt.pes_type = DMX_PES_PCR3; break;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
hal_info("%s #%d invalid dmx_type %d!\n", __func__, num, dmx_type);
|
hal_info("%s #%d invalid dmx_type %d!\n", __func__, num, dmx_type);
|
||||||
|
@@ -29,8 +29,11 @@ hw_caps_t *get_hwcaps(void)
|
|||||||
|
|
||||||
memset(&caps, 0, sizeof(hw_caps_t));
|
memset(&caps, 0, sizeof(hw_caps_t));
|
||||||
|
|
||||||
if (access("/dev/dvb/adapter0/video1", F_OK) != -1)
|
caps.pip_devs = 0;
|
||||||
caps.can_pip = 1;
|
if (access("/dev/dvb/adapter0/video1", F_OK) != -1) caps.pip_devs = 1;
|
||||||
|
if (access("/dev/dvb/adapter0/video2", F_OK) != -1) caps.pip_devs = 2;
|
||||||
|
if (access("/dev/dvb/adapter0/video3", F_OK) != -1) caps.pip_devs = 3;
|
||||||
|
if (caps.pip_devs > 0) caps.can_pip = 1;
|
||||||
|
|
||||||
caps.has_CI = 0;
|
caps.has_CI = 0;
|
||||||
caps.can_cec = 1;
|
caps.can_cec = 1;
|
||||||
|
@@ -39,6 +39,7 @@
|
|||||||
#include "video_lib.h"
|
#include "video_lib.h"
|
||||||
#include "hal_debug.h"
|
#include "hal_debug.h"
|
||||||
|
|
||||||
|
#include <hardware_caps.h>
|
||||||
#include <proc_tools.h>
|
#include <proc_tools.h>
|
||||||
|
|
||||||
extern "C"
|
extern "C"
|
||||||
@@ -82,36 +83,48 @@ static bool stillpicture = false;
|
|||||||
static const char *VDEV[] =
|
static const char *VDEV[] =
|
||||||
{
|
{
|
||||||
"/dev/dvb/adapter0/video0",
|
"/dev/dvb/adapter0/video0",
|
||||||
"/dev/dvb/adapter0/video1"
|
"/dev/dvb/adapter0/video1",
|
||||||
|
"/dev/dvb/adapter0/video2",
|
||||||
|
"/dev/dvb/adapter0/video3"
|
||||||
};
|
};
|
||||||
static const char *VMPEG_aspect[] =
|
static const char *VMPEG_aspect[] =
|
||||||
{
|
{
|
||||||
"/proc/stb/vmpeg/0/aspect",
|
"/proc/stb/vmpeg/0/aspect",
|
||||||
"/proc/stb/vmpeg/1/aspect"
|
"/proc/stb/vmpeg/1/aspect",
|
||||||
|
"/proc/stb/vmpeg/2/aspect",
|
||||||
|
"/proc/stb/vmpeg/3/aspect"
|
||||||
};
|
};
|
||||||
|
|
||||||
static const char *VMPEG_xres[] =
|
static const char *VMPEG_xres[] =
|
||||||
{
|
{
|
||||||
"/proc/stb/vmpeg/0/xres",
|
"/proc/stb/vmpeg/0/xres",
|
||||||
"/proc/stb/vmpeg/1/xres"
|
"/proc/stb/vmpeg/1/xres",
|
||||||
|
"/proc/stb/vmpeg/2/xres",
|
||||||
|
"/proc/stb/vmpeg/3/xres"
|
||||||
};
|
};
|
||||||
|
|
||||||
static const char *VMPEG_yres[] =
|
static const char *VMPEG_yres[] =
|
||||||
{
|
{
|
||||||
"/proc/stb/vmpeg/0/yres",
|
"/proc/stb/vmpeg/0/yres",
|
||||||
"/proc/stb/vmpeg/1/yres"
|
"/proc/stb/vmpeg/1/yres",
|
||||||
|
"/proc/stb/vmpeg/2/yres",
|
||||||
|
"/proc/stb/vmpeg/3/yres"
|
||||||
};
|
};
|
||||||
|
|
||||||
static const char *VMPEG_dst_all[] =
|
static const char *VMPEG_dst_all[] =
|
||||||
{
|
{
|
||||||
"/proc/stb/vmpeg/0/dst_all",
|
"/proc/stb/vmpeg/0/dst_all",
|
||||||
"/proc/stb/vmpeg/1/dst_all"
|
"/proc/stb/vmpeg/1/dst_all",
|
||||||
|
"/proc/stb/vmpeg/2/dst_all",
|
||||||
|
"/proc/stb/vmpeg/3/dst_all"
|
||||||
};
|
};
|
||||||
|
|
||||||
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",
|
||||||
|
"/proc/stb/vmpeg/2/framerate",
|
||||||
|
"/proc/stb/vmpeg/3/framerate"
|
||||||
};
|
};
|
||||||
|
|
||||||
static const char *VMPEG_visible[] =
|
static const char *VMPEG_visible[] =
|
||||||
|
Reference in New Issue
Block a user