summaryrefslogtreecommitdiff
path: root/recv.cpp
diff options
context:
space:
mode:
authorJochen Dolze <vdr@dolze.de>2009-09-22 09:29:03 +0200
committerJochen Dolze <vdr@dolze.de>2009-09-22 09:29:03 +0200
commit8f9594678c4e0d94e546cd2e94f898bf796c86c6 (patch)
treedb70bb896f08b831485f9d97a53b134708b9c5a6 /recv.cpp
parent27b768a40f33b229ee832d22f24696565b812f98 (diff)
downloadvdr-plugin-markad-8f9594678c4e0d94e546cd2e94f898bf796c86c6.tar.gz
vdr-plugin-markad-8f9594678c4e0d94e546cd2e94f898bf796c86c6.tar.bz2
Updated various things
Diffstat (limited to 'recv.cpp')
-rw-r--r--recv.cpp52
1 files changed, 37 insertions, 15 deletions
diff --git a/recv.cpp b/recv.cpp
index b66cf93..447d82a 100644
--- a/recv.cpp
+++ b/recv.cpp
@@ -44,14 +44,27 @@ cMarkAdReceiver::cMarkAdReceiver(int RecvNumber, const char *Filename, cTimer *T
macontext.General.ManualRecording=true;
}
- macontext.General.VPid=Timer->Channel()->Vpid();
-// macontext.General.APid=Timer->Channel()->Apid(0); // TODO ... better solution?
- macontext.General.DPid=Timer->Channel()->Dpid(0); // TODO ... better solution?
+ macontext.General.VPid.Num=Timer->Channel()->Vpid();
+ if (useH264)
+ {
+ macontext.General.VPid.Type=MARKAD_PIDTYPE_VIDEO_H264;
+ }
+ else
+ {
+ macontext.General.VPid.Type=MARKAD_PIDTYPE_VIDEO_H262;
+ }
+
+// macontext.General.APid.Pid=Timer->Channel()->Apid(0); // TODO ... better solution?
+// macontext.General.DPid.Type=MARKAD_PIDTYPE_AUDIO_MP2;
+
+ macontext.General.DPid.Num=Timer->Channel()->Dpid(0); // TODO ... better solution?
+ macontext.General.DPid.Type=MARKAD_PIDTYPE_AUDIO_AC3;
macontext.General.H264=useH264;
- if (macontext.General.VPid)
+ if (macontext.General.VPid.Num)
{
+ dsyslog("markad [%i]: using video",recvnumber);
video=new cMarkAdVideo(RecvNumber,&macontext);
video_demux = new cMarkAdDemux();
}
@@ -61,8 +74,9 @@ cMarkAdReceiver::cMarkAdReceiver(int RecvNumber, const char *Filename, cTimer *T
video_demux=NULL;
}
- if (macontext.General.APid)
+ if (macontext.General.APid.Num)
{
+ dsyslog("markad [%i]: using mp2",recvnumber);
mp2_demux = new cMarkAdDemux();
}
else
@@ -70,8 +84,9 @@ cMarkAdReceiver::cMarkAdReceiver(int RecvNumber, const char *Filename, cTimer *T
mp2_demux = NULL;
}
- if (macontext.General.DPid)
+ if (macontext.General.DPid.Num)
{
+ dsyslog("markad [%i]: using ac3",recvnumber);
ac3_demux = new cMarkAdDemux();
}
else
@@ -79,7 +94,7 @@ cMarkAdReceiver::cMarkAdReceiver(int RecvNumber, const char *Filename, cTimer *T
ac3_demux=NULL;
}
- if ((macontext.General.APid) || (macontext.General.DPid))
+ if ((macontext.General.APid.Num) || (macontext.General.DPid.Num))
{
audio=new cMarkAdAudio(RecvNumber,&macontext);
}
@@ -88,7 +103,7 @@ cMarkAdReceiver::cMarkAdReceiver(int RecvNumber, const char *Filename, cTimer *T
audio=NULL;
}
- decoder=new cMarkAdDecoder(RecvNumber,useH264,macontext.General.DPid!=0);
+ decoder=new cMarkAdDecoder(RecvNumber,useH264,macontext.General.DPid.Num!=0);
common=new cMarkAdCommon(RecvNumber,&macontext);
marks.Load(Filename);
@@ -111,10 +126,16 @@ cMarkAdReceiver::~cMarkAdReceiver()
{
MarkAdMark tempmark;
tempmark.Position=lastiframe;
- tempmark.Comment=strdup("stop of content (user)");
- AddMark(&tempmark);
- isyslog("markad [%i]: stop of content (user)",recvnumber);
- free(tempmark.Comment);
+
+ char *buf;
+ asprintf(&buf,"stop of user content (%i)",lastiframe);
+ if (buf)
+ {
+ tempmark.Comment=buf;
+ AddMark(&tempmark);
+ isyslog("markad [%i]: %s",recvnumber,buf);
+ free(buf);
+ }
}
if (video_demux) delete video_demux;
@@ -135,14 +156,14 @@ int cMarkAdReceiver::LastIFrame()
if (!Index)
{
esyslog("markad [%i]: ERROR can't allocate index",recvnumber);
- return -1;
+ return 0;
}
else if (!Index->Ok())
{
// index file is not ready till now, try it later
delete Index;
Index=NULL;
- return -1;
+ return 0;
}
}
return Index->GetNextIFrame(Index->Last(),false,NULL,NULL,NULL,true);
@@ -299,7 +320,7 @@ void cMarkAdReceiver::Action()
while (tslen>0)
{
- int len=ac3_demux->Process(macontext.General.APid,tspkt,tslen,&pkt,&pktlen);
+ int len=ac3_demux->Process(macontext.General.DPid,tspkt,tslen,&pkt,&pktlen);
if (len<0)
{
break;
@@ -312,6 +333,7 @@ void cMarkAdReceiver::Action()
if (decoder->DecodeAC3(&macontext,pkt,pktlen))
{
mark=audio->Process(lastiframe);
+ AddMark(mark);
}
}
tspkt+=len;