summaryrefslogtreecommitdiff
path: root/command/demux.cpp
diff options
context:
space:
mode:
authorJochen Dolze <vdr@dolze.de>2010-09-24 23:02:39 +0200
committerJochen Dolze <vdr@dolze.de>2010-09-24 23:02:39 +0200
commit05dff1022a467deec38f93b0987db9aeb2b43420 (patch)
treeba18b9ed88d11070b7100fd2d5a895737d14e330 /command/demux.cpp
parent467feedc49246f6c2287c0e8a20a171596a9bba3 (diff)
downloadvdr-plugin-markad-05dff1022a467deec38f93b0987db9aeb2b43420.tar.gz
vdr-plugin-markad-05dff1022a467deec38f93b0987db9aeb2b43420.tar.bz2
Added support for libavcodec51 (see define in Makefile)
Lowered memory consumption on some cases Enhanced buffer usage output
Diffstat (limited to 'command/demux.cpp')
-rw-r--r--command/demux.cpp86
1 files changed, 49 insertions, 37 deletions
diff --git a/command/demux.cpp b/command/demux.cpp
index 20922cd..c3580c5 100644
--- a/command/demux.cpp
+++ b/command/demux.cpp
@@ -41,37 +41,6 @@ void cMarkAdDemux::Clear()
skip=0;
}
-void cMarkAdDemux::ProcessVDR(MarkAdPid Pid, uchar *Data, int Count, MarkAdPacket *Pkt)
-{
- if (!Pkt) return;
-
- if ((Pid.Type==MARKAD_PIDTYPE_AUDIO_AC3) || (Pid.Type==MARKAD_PIDTYPE_AUDIO_MP2))
- {
- if (!pes2audioes) pes2audioes=new cMarkAdPES2ES("PES2ES audio");
- if (!pes2audioes) return;
- pes2audioes->Process(Pid,Data,Count,Pkt);
- }
-
- if ((Pid.Type==MARKAD_PIDTYPE_VIDEO_H262) || (Pid.Type==MARKAD_PIDTYPE_VIDEO_H264))
- {
- if (!pes2videoes)
- {
- if (Pid.Type==MARKAD_PIDTYPE_VIDEO_H264)
- {
- pes2videoes=new cMarkAdPES2ES("PES2H264ES video",425984);
- }
- else
- {
- pes2videoes=new cMarkAdPES2ES("PES2ES video",65536);
- }
- }
- if (!pes2videoes) return;
- pes2videoes->Process(Pid,Data,Count,Pkt);
- }
-
- return;
-}
-
void cMarkAdDemux::GetVideoPTS(uchar *Data, int Count, unsigned int *Timestamp)
{
if (!Data) return;
@@ -102,6 +71,38 @@ void cMarkAdDemux::GetVideoPTS(uchar *Data, int Count, unsigned int *Timestamp)
return;
}
+void cMarkAdDemux::ProcessVDR(MarkAdPid Pid, uchar *Data, int Count, MarkAdPacket *Pkt)
+{
+ if (!Pkt) return;
+
+ if ((Pid.Type==MARKAD_PIDTYPE_AUDIO_AC3) || (Pid.Type==MARKAD_PIDTYPE_AUDIO_MP2))
+ {
+ if (!pes2audioes) pes2audioes=new cMarkAdPES2ES((Pid.Type==MARKAD_PIDTYPE_AUDIO_AC3) ?
+ "PES2ES AC3" : "PES2ES MP2");
+ if (!pes2audioes) return;
+ pes2audioes->Process(Pid,Data,Count,Pkt);
+ }
+
+ if ((Pid.Type==MARKAD_PIDTYPE_VIDEO_H262) || (Pid.Type==MARKAD_PIDTYPE_VIDEO_H264))
+ {
+ if (!pes2videoes)
+ {
+ if (Pid.Type==MARKAD_PIDTYPE_VIDEO_H264)
+ {
+ pes2videoes=new cMarkAdPES2ES("PES2H264ES",425984);
+ }
+ else
+ {
+ pes2videoes=new cMarkAdPES2ES("PES2H262ES",65536);
+ }
+ }
+ if (!pes2videoes) return;
+ pes2videoes->Process(Pid,Data,Count,Pkt);
+ }
+
+ return;
+}
+
void cMarkAdDemux::ProcessTS(MarkAdPid Pid, uchar *Data, int Count, MarkAdPacket *Pkt)
{
if (!Pkt) return;
@@ -111,13 +112,23 @@ void cMarkAdDemux::ProcessTS(MarkAdPid Pid, uchar *Data, int Count, MarkAdPacket
if (!ts2pkt)
{
- if (Pid.Type==MARKAD_PIDTYPE_VIDEO_H264)
+ switch (Pid.Type)
{
+ case MARKAD_PIDTYPE_VIDEO_H264:
ts2pkt=new cMarkAdTS2Pkt("TS2H264",819200);
- }
- else
- {
- ts2pkt=new cMarkAdTS2Pkt("TS2PKT",262144);
+ break;
+
+ case MARKAD_PIDTYPE_VIDEO_H262:
+ ts2pkt=new cMarkAdTS2Pkt("TS2H262",262144);
+ break;
+
+ case MARKAD_PIDTYPE_AUDIO_AC3:
+ ts2pkt=new cMarkAdTS2Pkt("TS2PES AC3",32768);
+ break;
+
+ case MARKAD_PIDTYPE_AUDIO_MP2:
+ ts2pkt=new cMarkAdTS2Pkt("TS2PES MP2",16384);
+ break;
}
}
if (!ts2pkt) return;
@@ -130,7 +141,8 @@ void cMarkAdDemux::ProcessTS(MarkAdPid Pid, uchar *Data, int Count, MarkAdPacket
if ((Pid.Type==MARKAD_PIDTYPE_AUDIO_AC3) || (Pid.Type==MARKAD_PIDTYPE_AUDIO_MP2))
{
- if (!pes2audioes) pes2audioes=new cMarkAdPES2ES("PES2ES audio");
+ if (!pes2audioes) pes2audioes=new cMarkAdPES2ES((Pid.Type==MARKAD_PIDTYPE_AUDIO_AC3) ?
+ "PES2ES AC3" : "PES2ES MP2");
if (!pes2audioes) return;
pes2audioes->Process(Pid,pkt.Data,pkt.Length,Pkt);
}