-add h265 to record and stream

This commit is contained in:
Jacek Jendrzej
2014-05-29 16:23:36 +02:00
parent 193c49d55e
commit d9483e019e
6 changed files with 11 additions and 4 deletions

View File

@@ -34,6 +34,7 @@
#define ES_TYPE_MPEG12 0x02 #define ES_TYPE_MPEG12 0x02
#define ES_TYPE_AVC 0x1b #define ES_TYPE_AVC 0x1b
#define ES_TYPE_HEVC 0x24
#define ES_TYPE_MPA 0x03 #define ES_TYPE_MPA 0x03
#define ES_TYPE_EAC3 0x7a #define ES_TYPE_EAC3 0x7a
#define ES_TYPE_AC3 0x81 #define ES_TYPE_AC3 0x81
@@ -131,6 +132,10 @@ void CGenPsi::addPid(uint16_t pid, uint16_t pidtype, short isAC3, const char *da
pcrpid=vpid=pid; pcrpid=vpid=pid;
vtype = ES_TYPE_AVC; vtype = ES_TYPE_AVC;
break; break;
case EN_TYPE_HEVC:
pcrpid=vpid=pid;
vtype = ES_TYPE_HEVC;
break;
case EN_TYPE_PCR: case EN_TYPE_PCR:
pcrpid=pid; pcrpid=pid;
break; break;

View File

@@ -30,6 +30,7 @@
#define EN_TYPE_AVC 0x04 #define EN_TYPE_AVC 0x04
#define EN_TYPE_DVBSUB 0x06 #define EN_TYPE_DVBSUB 0x06
#define EN_TYPE_AUDIO_EAC3 0x07 #define EN_TYPE_AUDIO_EAC3 0x07
#define EN_TYPE_HEVC 0x08
class CGenPsi class CGenPsi
{ {

View File

@@ -164,7 +164,7 @@ record_error_msg_t CRecordInstance::Start(CZapitChannel * channel)
CGenPsi psi; CGenPsi psi;
numpids = 0; numpids = 0;
if (allpids.PIDs.vpid != 0){ if (allpids.PIDs.vpid != 0){
psi.addPid(allpids.PIDs.vpid, recMovieInfo->VideoType ? EN_TYPE_AVC : EN_TYPE_VIDEO, 0); psi.addPid(allpids.PIDs.vpid, recMovieInfo->VideoType == 1 ? EN_TYPE_AVC : recMovieInfo->VideoType == 2 ? EN_TYPE_HEVC : EN_TYPE_VIDEO, 0);
if (allpids.PIDs.pcrpid && (allpids.PIDs.pcrpid != allpids.PIDs.vpid)) { if (allpids.PIDs.pcrpid && (allpids.PIDs.pcrpid != allpids.PIDs.vpid)) {
psi.addPid(allpids.PIDs.pcrpid, EN_TYPE_PCR, 0); psi.addPid(allpids.PIDs.pcrpid, EN_TYPE_PCR, 0);
apids[numpids++]=allpids.PIDs.pcrpid; apids[numpids++]=allpids.PIDs.pcrpid;

View File

@@ -437,7 +437,7 @@ void CStreamManager::AddPids(int fd, CZapitChannel *channel, stream_pids_t &pids
for (stream_pids_t::iterator it = pids.begin(); it != pids.end(); ++it) { for (stream_pids_t::iterator it = pids.begin(); it != pids.end(); ++it) {
if (*it == channel->getVideoPid()) { if (*it == channel->getVideoPid()) {
printf("CStreamManager::Parse: genpsi vpid %x (%d)\n", *it, channel->type); printf("CStreamManager::Parse: genpsi vpid %x (%d)\n", *it, channel->type);
psi.addPid(*it, channel->type ? EN_TYPE_AVC : EN_TYPE_VIDEO, 0); psi.addPid(*it, channel->type == 1 ? EN_TYPE_AVC : channel->type == 2 ? EN_TYPE_HEVC : EN_TYPE_VIDEO, 0);
} else { } else {
for (int i = 0; i < channel->getAudioChannelCount(); i++) { for (int i = 0; i < channel->getAudioChannelCount(); i++) {
if (*it == channel->getAudioChannel(i)->pid) { if (*it == channel->getAudioChannel(i)->pid) {

View File

@@ -52,7 +52,7 @@ typedef SIservice * SIservicePtr;
#define TIME_EIT_SCHEDULED_PAUSE 60 * 60 #define TIME_EIT_SCHEDULED_PAUSE 60 * 60
/* force EIT thread to change filter after, seconds */ /* force EIT thread to change filter after, seconds */
#define TIME_EIT_SKIPPING 180 // 90 <- Canal diditaal 19.2e -> ~100 seconds for 0x5x #define TIME_EIT_SKIPPING 240 // 90 <- Canal diditaal 19.2e -> ~100 seconds for 0x5x
/* a little more time for freesat epg */ /* a little more time for freesat epg */
#define TIME_FSEIT_SKIPPING 240 #define TIME_FSEIT_SKIPPING 240
/* Timeout in ms for reading from dmx in EIT threads. Dont make this too long /* Timeout in ms for reading from dmx in EIT threads. Dont make this too long

View File

@@ -265,9 +265,10 @@ bool CPmt::ParseEsInfo(ElementaryStreamInfo *esinfo, CZapitChannel * const chann
switch (stream_type) { switch (stream_type) {
case 0x01: case 0x01:
case 0x02: case 0x02:
case 0x24:
case 0x1b: // AVC Video Stream (MPEG4 H264) case 0x1b: // AVC Video Stream (MPEG4 H264)
channel->setVideoPid(esinfo->getPid()); channel->setVideoPid(esinfo->getPid());
channel->type = (stream_type == 0x1b); //FIXME channel->type = (stream_type == 0x1b) ? 1 : (stream_type == 0x24) ? 2 : 0; //FIXME
printf("[pmt] vpid %04x stream %d type %d\n", esinfo->getPid(), stream_type, channel->type); printf("[pmt] vpid %04x stream %d type %d\n", esinfo->getPid(), stream_type, channel->type);
break; break;
case 0x03: case 0x03: