summaryrefslogtreecommitdiff
path: root/markad-standalone.cpp
diff options
context:
space:
mode:
authorJochen Dolze <vdr@dolze.de>2010-03-14 16:25:41 +0100
committerJochen Dolze <vdr@dolze.de>2010-03-14 16:25:41 +0100
commitc74f0198ce3362a94ebbd9ac03c721ae5a67b434 (patch)
treeca42b3d845530658b797bc8be6f06521714eb532 /markad-standalone.cpp
parent12b0a5aa366f5b08d2cf8c6da935af64f4fbcb53 (diff)
downloadvdr-plugin-markad-c74f0198ce3362a94ebbd9ac03c721ae5a67b434.tar.gz
vdr-plugin-markad-c74f0198ce3362a94ebbd9ac03c721ae5a67b434.tar.bz2
Added support for 1.7.0 in standalone version
Diffstat (limited to 'markad-standalone.cpp')
-rw-r--r--markad-standalone.cpp42
1 files changed, 41 insertions, 1 deletions
diff --git a/markad-standalone.cpp b/markad-standalone.cpp
index 5925097..1453993 100644
--- a/markad-standalone.cpp
+++ b/markad-standalone.cpp
@@ -425,6 +425,37 @@ bool cMarkAdStandalone::CheckTS(const char *Directory)
return true;
}
+bool cMarkAdStandalone::CheckVDRHD(const char *Directory)
+{
+ char *buf;
+ if (asprintf(&buf,"%s/001.vdr",Directory)==-1) return false;
+
+ int fd=open(buf,O_RDONLY);
+ free(buf);
+ if (fd==-1) return false;
+
+ uchar pes_buf[32];
+ if (read(fd,pes_buf,sizeof(pes_buf))!=sizeof(pes_buf))
+ {
+ close(fd);
+ return false;
+ }
+ close(fd);
+
+ if ((pes_buf[0]==0) && (pes_buf[1]==0) && (pes_buf[2]==1) && ((pes_buf[3] & 0xF0)==0xE0))
+ {
+ int payloadstart=9+pes_buf[8];
+ if (payloadstart>23) return false;
+ uchar *start=&pes_buf[payloadstart];
+ if ((start[0]==0) && (start[1]==0) && (start[2]==1) && (start[5]==0) && (start[6]==0)
+ && (start[7]==0) && (start[8]==1))
+ {
+ return true;
+ }
+ }
+ return false;
+}
+
bool cMarkAdStandalone::CheckPATPMT(const char *Directory)
{
char *buf;
@@ -604,7 +635,16 @@ cMarkAdStandalone::cMarkAdStandalone(const char *Directory)
macontext.General.APid.Num=-1;
macontext.General.DPid.Num=-1;
macontext.General.VPid.Num=-1;
- macontext.General.VPid.Type=MARKAD_PIDTYPE_VIDEO_H262;
+
+ if (CheckVDRHD(Directory))
+ {
+ macontext.General.VPid.Type=MARKAD_PIDTYPE_VIDEO_H264;
+ }
+ else
+ {
+ macontext.General.VPid.Type=MARKAD_PIDTYPE_VIDEO_H262;
+ }
+
if (!markFileName[0]) strcpy(markFileName,"marks.vdr");
}