diff options
author | Jochen Dolze <vdr@dolze.de> | 2010-09-24 23:02:39 +0200 |
---|---|---|
committer | Jochen Dolze <vdr@dolze.de> | 2010-09-24 23:02:39 +0200 |
commit | 05dff1022a467deec38f93b0987db9aeb2b43420 (patch) | |
tree | ba18b9ed88d11070b7100fd2d5a895737d14e330 /command/demux.cpp | |
parent | 467feedc49246f6c2287c0e8a20a171596a9bba3 (diff) | |
download | vdr-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.cpp | 86 |
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); } |