[vdr-plugin-markad] 02/07: Imported Upstream version 0.1.4+git20150212

Tobias Grimm tiber-guest at moszumanska.debian.org
Thu Feb 12 21:35:31 UTC 2015


This is an automated email from the git hooks/post-receive script.

tiber-guest pushed a commit to branch master
in repository vdr-plugin-markad.

commit 661d5dea3456850a32d9e1aa1ae8f802865129ab
Author: etobi <git at e-tobi.net>
Date:   Thu Feb 12 22:00:01 2015 +0100

    Imported Upstream version 0.1.4+git20150212
---
 .gitignore                                         |  15 ++
 AUTHORS                                            |   1 +
 Makefile                                           |   7 +-
 command/Makefile                                   |   5 +-
 command/decoder.cpp                                | 116 +++++----
 command/decoder.h                                  |   1 +
 command/demux.cpp                                  |  37 +--
 command/demux.h                                    |   1 +
 command/global.h                                   |   1 +
 ...LS_4_Austria-A16_9-P0.pgm => 3sat-A16_9-P0.pgm} | Bin 19219 -> 19254 bytes
 command/logos/ATV-A16_9-P0.pgm                     | Bin 10018 -> 19219 bytes
 command/logos/ATV-A16_9-P2.pgm                     | Bin 2497 -> 4817 bytes
 ...el_eins_HD-A16_9-P0.pgm => ATV_HD-A16_9-P0.pgm} |   4 +-
 ...ustria-A16_9-P0.pgm => AXN_Action-A16_9-P0.pgm} |   2 +-
 command/logos/DMAX-A16_9-P0.pgm                    | Bin 10728 -> 11218 bytes
 ...L_HD-A16_9-P0.pgm => Das_Erste_HD-A16_9-P0.pgm} |   6 +-
 ...HD-A16_9-P0.pgm => Deluxe_Music_HD-A3_2-P0.pgm} |   4 +-
 ...ia-A16_9-P0.pgm => Disney_Channel-A16_9-P0.pgm} |   6 +-
 ...-A16_9-P0.pgm => Disney_Channel_HD-A4_3-P0.pgm} |   4 +-
 ..._Austria-A16_9-P0.pgm => EinsPlus-A16_9-P1.pgm} |   4 +-
 ..._Austria-A16_9-P0.pgm => EinsPlus-A16_9-P2.pgm} |   4 +-
 ...Austria-A16_9-P0.pgm => Fox_Serie-A16_9-P0.pgm} |   2 +-
 ..._Austria-A16_9-P0.pgm => Fox_Serie-A4_3-P0.pgm} |   2 +-
 ...stria-A16_9-P1.pgm => MDR_Sachsen-A16_9-P0.pgm} | Bin 4817 -> 4817 bytes
 ...S_4_Austria-A16_9-P0.pgm => N24_HD-A4_3-P0.pgm} |   4 +-
 ...S_4_Austria-A16_9-P1.pgm => N24_HD-A4_3-P1.pgm} | Bin 4817 -> 6417 bytes
 ...S_4_Austria-A16_9-P1.pgm => N24_HD-A4_3-P2.pgm} | Bin 4817 -> 6417 bytes
 ...Austria-A16_9-P0.pgm => NDR_FS_HH-A16_9-P0.pgm} | Bin 19219 -> 19254 bytes
 ...Austria-A16_9-P0.pgm => NDR_FS_MV-A16_9-P0.pgm} | Bin 19219 -> 19254 bytes
 ...ustria-A16_9-P0.pgm => NDR_FS_NDS-A16_9-P0.pgm} | Bin 19219 -> 19254 bytes
 ...Austria-A16_9-P0.pgm => NDR_FS_SH-A16_9-P0.pgm} | Bin 19219 -> 19254 bytes
 ...4_Austria-A16_9-P0.pgm => ORF1_HD-A16_9-P0.pgm} |   6 +-
 ...ustria-A16_9-P0.pgm => PHOENIX_HD-A16_9-P0.pgm} | Bin 19219 -> 20019 bytes
 ...ustria-A16_9-P1.pgm => PHOENIX_HD-A16_9-P1.pgm} | Bin 4817 -> 5018 bytes
 ...ustria-A16_9-P1.pgm => PHOENIX_HD-A16_9-P2.pgm} | Bin 4817 -> 5018 bytes
 command/logos/PULS_4_Austria-A16_9-P0.pgm          | Bin 19219 -> 10258 bytes
 command/logos/PULS_4_Austria-A16_9-P1.pgm          | Bin 4817 -> 2577 bytes
 command/logos/PULS_4_Austria-A16_9-P2.pgm          | Bin 4817 -> 2577 bytes
 ..._Austria-A16_9-P0.pgm => ProSieben-A4_3-P0.pgm} | Bin 19219 -> 19254 bytes
 command/logos/ProSieben_MAXX-A16_9-P0.pgm          | Bin 0 -> 7212 bytes
 ...A16_9-P0.pgm => ProSieben_MAXX_HD-A16_9-P0.pgm} |   4 +-
 ...{SIXX-A16_9-P0.pgm => RSI_LA_1_HD-A16_9-P0.pgm} | Bin 13193 -> 17266 bytes
 .../logos/{SIXX-A16_9-P0.pgm => RTL-A16_9-P0.pgm}  | Bin 13193 -> 12018 bytes
 ...{SIXX-A16_9-P0.pgm => RTS_Deux_HD-A16_9-P0.pgm} | Bin 13193 -> 14418 bytes
 .../{ATV-A16_9-P0.pgm => RTS_Un_HD-A16_9-P0.pgm}   | Bin 10018 -> 11538 bytes
 ...-A16_9-P0.pgm => SAT_1_HD_Austria-A16_9-P0.pgm} |   4 +-
 command/logos/SF_1_HD-A16_9-P0.pgm                 |   5 +
 command/logos/SF_zwei_HD-A16_9-P0.pgm              |   5 +
 command/logos/SF_zwei_HD-A16_9-P1.pgm              | Bin 0 -> 6882 bytes
 command/logos/SF_zwei_HD-A16_9-P2.pgm              | Bin 0 -> 6882 bytes
 command/logos/SIXX-A16_9-P0.pgm                    | Bin 13193 -> 13193 bytes
 command/logos/SIXX_HD-A16_9-P0.pgm                 |   4 +-
 ..._eins_HD-A16_9-P0.pgm => SPORT1_HD-A4_3-P0.pgm} |   4 +-
 ..._Austria-A16_9-P0.pgm => SUPER_RTL-A4_3-P0.pgm} |   4 +-
 command/logos/SUPER_RTL_HD-A16_9-P0.pgm            |   4 +-
 ...ULS_4_Austria-A16_9-P0.pgm => ZDF-A16_9-P0.pgm} | Bin 19219 -> 19219 bytes
 ...ustria-A16_9-P0.pgm => ZDFinfo_HD-A16_9-P0.pgm} |   6 +-
 ...ER_RTL_HD-A16_9-P0.pgm => arte_HD-A16_9-P0.pgm} |   4 +-
 command/logos/kabel_eins_HD-A16_9-P0.pgm           |   4 +-
 command/logos/kabel_eins_HD-A16_9-P1.pgm           | Bin 10537 -> 12978 bytes
 command/logos/kabel_eins_HD-A16_9-P2.pgm           | Bin 10537 -> 12978 bytes
 ...ria-A16_9-P0.pgm => zdf_kultur_HD-A16_9-P0.pgm} |   6 +-
 command/markad-standalone.cpp                      | 280 +++++++++++++++------
 command/markad-standalone.h                        |   4 +-
 command/markad.1                                   |   2 +-
 command/marks.cpp                                  |   1 +
 command/streaminfo.cpp                             |  16 ++
 command/video.cpp                                  | 183 ++++++++++----
 command/video.h                                    |  40 ++-
 plugin/HISTORY                                     |   1 +
 plugin/Makefile                                    |   7 +-
 plugin/README                                      |   1 +
 plugin/markad.cpp                                  |   1 +
 plugin/po/de_DE.po                                 |   5 +-
 plugin/po/es_ES.po                                 |   5 +-
 plugin/po/fi_FI.po                                 |   5 +-
 plugin/po/it_IT.po                                 |   5 +-
 plugin/po/sk_SK.po                                 |   5 +-
 plugin/setup.cpp                                   |  61 +++--
 plugin/setup.h                                     |   4 +-
 plugin/status.cpp                                  |  53 +++-
 plugin/status.h                                    |   2 +-
 version.h => version.dist                          |   2 +-
 83 files changed, 664 insertions(+), 305 deletions(-)

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..c69f42b
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,15 @@
+.gitignore
+
+command/markad
+command/.dependencies
+command/*.o
+command/*~
+command/po/*.pot
+command/po/*.mo
+
+plugin/.dependencies
+plugin/*.o
+plugin/*.so
+plugin/*~
+plugin/po/*.pot
+plugin/po/*.mo
diff --git a/AUTHORS b/AUTHORS
new file mode 100644
index 0000000..8d8e8df
--- /dev/null
+++ b/AUTHORS
@@ -0,0 +1 @@
+Jochen Dolze <vdr at dolze.de>
diff --git a/Makefile b/Makefile
index 3118e11..52812c1 100644
--- a/Makefile
+++ b/Makefile
@@ -6,6 +6,7 @@
 
 DIRS = command plugin
 
+$(shell GITVERSION=`git rev-parse --short HEAD 2> /dev/null`; if [ "$$GITVERSION" ]; then sed "s/\";/ ($$GITVERSION)\";/" version.dist > version.h; else cp version.dist version.h; fi)
 VERSION = $(shell grep 'static const char \*VERSION *=' version.h | awk '{ print $$6 }' | sed -e 's/[";]//g')
 
 TMPDIR = /tmp
@@ -31,13 +32,13 @@ dist:
 	@cp -a plugin/dist/* $(TMPDIR)/$(ARCHIVE)/plugin/dist
 	@cp -a plugin/po/*.po $(TMPDIR)/$(ARCHIVE)/plugin/po
 	@cp -a command/*.cpp command/*.h command/*.1 command/Makefile $(TMPDIR)/$(ARCHIVE)/command 
-	@cp -a command/logos/*.pgm $(TMPDIR)/$(ARCHIVE)/command/logos
+	@cp -u command/logos/*.pgm $(TMPDIR)/$(ARCHIVE)/command/logos
 	@cp -a command/po/*.po $(TMPDIR)/$(ARCHIVE)/command/po
-	@cp -a *.h COPYING HISTORY README INSTALL Makefile $(TMPDIR)/$(ARCHIVE)
+	@cp -a *.dist *.h COPYING HISTORY README INSTALL Makefile $(TMPDIR)/$(ARCHIVE)
 	@tar czf $(PACKAGE).tgz -C $(TMPDIR) $(ARCHIVE)
 	@-rm -rf $(TMPDIR)/$(ARCHIVE)
 	@echo Distribution package created as $(PACKAGE).tgz
 
 clean:
 	for i in $(DIRS); do make -C $$i clean; done
-	@-rm -f $(PACKAGE).tgz
+	@-rm -f version.h $(PACKAGE).tgz
diff --git a/command/Makefile b/command/Makefile
index 648e1f9..6a445d0 100644
--- a/command/Makefile
+++ b/command/Makefile
@@ -7,6 +7,7 @@
 
 ### The version number of this plugin (taken from the main source file):
 
+$(shell GITVERSION=`git rev-parse --short HEAD 2> /dev/null`; if [ "$$GITVERSION" ]; then sed "s/\";/ ($$GITVERSION)\";/" ../version.dist > ../version.h; else cp ../version.dist ../version.h; fi)
 VERSION = $(shell grep 'static const char \*VERSION *=' ../version.h | awk '{ print $$6 }' | sed -e 's/[";]//g')
 
 ### The C++ compiler and options:
@@ -83,7 +84,7 @@ i18n: $(I18Npot)
 ### Targets:
 
 markad: $(OBJS)
-	$(CXX) $(CXXFLAGS) $(OBJS) $(LIBS) -o $@
+	$(CXX) $(CXXFLAGS) $(LDFLAGS) $(OBJS) $(LIBS) -o $@
 
 
 MANDIR	= $(DESTDIR)/usr/share/man
@@ -96,7 +97,7 @@ install: install-doc markad $(I18Nmsgs)
 	@cp --remove-destination markad $(DESTDIR)/usr/bin/markad
 	@$(STRIP) $(DESTDIR)/usr/bin/markad
 	@mkdir -p $(DESTDIR)/var/lib/markad
-	@cp -a logos/* $(DESTDIR)/var/lib/markad
+	@cp -u logos/* $(DESTDIR)/var/lib/markad
 	@echo markad installed
 
 clean:
diff --git a/command/decoder.cpp b/command/decoder.cpp
index 4b112c8..cbd8055 100644
--- a/command/decoder.cpp
+++ b/command/decoder.cpp
@@ -6,6 +6,7 @@
  */
 
 #include <stdint.h>
+#include <stdio.h>
 #include <sched.h>
 #include <errno.h>
 #include <sys/types.h>
@@ -101,9 +102,22 @@ fail:
 }
 #endif
 
+#ifndef AV_CODEC_ID_H264
+#define AV_CODEC_ID_H264 CODEC_ID_H264
+#endif
+#ifndef AV_CODEC_ID_MPEG2VIDEO
+#define AV_CODEC_ID_MPEG2VIDEO CODEC_ID_MPEG2VIDEO
+#endif
+#ifndef AV_CODEC_ID_MPEG2VIDEO_XVMC
+#define AV_CODEC_ID_MPEG2VIDEO_XVMC CODEC_ID_MPEG2VIDEO_XVMC
+#endif
+#ifndef AV_CODEC_ID_NONE
+#define AV_CODEC_ID_NONE CODEC_ID_NONE
+#endif
+
 cMarkAdDecoder::cMarkAdDecoder(bool useH264, int Threads)
 {
-#if LIBAVCODEC_VERSION_INT < ((53<<16)+(7<<8)+1)  
+#if LIBAVCODEC_VERSION_INT < ((53<<16)+(7<<8)+1)
     avcodec_init();
 #endif
     avcodec_register_all();
@@ -111,6 +125,7 @@ cMarkAdDecoder::cMarkAdDecoder(bool useH264, int Threads)
     last_qscale_table=NULL;
     skipframes=true;
 
+    addPkt=false;
     noticeERRVID=false;
 
     cpu_set_t cpumask;
@@ -151,45 +166,54 @@ cMarkAdDecoder::cMarkAdDecoder(bool useH264, int Threads)
     }
 
     video_codec=NULL;
+#if LIBAVCODEC_VERSION_INT >= ((54<<16)+(51<<8)+100)
+    AVCodecID video_codecid;
+#else
     CodecID video_codecid;
+#endif
 
     if (useH264)
     {
-        video_codecid=CODEC_ID_H264;
+        video_codecid=AV_CODEC_ID_H264;
     }
     else
     {
-        video_codecid=CODEC_ID_MPEG2VIDEO_XVMC;
+        video_codecid=AV_CODEC_ID_MPEG2VIDEO_XVMC;
     }
 
     video_codec = avcodec_find_decoder(video_codecid);
-    if ((!video_codec) && (video_codecid==CODEC_ID_MPEG2VIDEO_XVMC))
+    if ((!video_codec) && (video_codecid==AV_CODEC_ID_MPEG2VIDEO_XVMC))
     {
         // fallback to MPEG2VIDEO
-        video_codecid=CODEC_ID_MPEG2VIDEO;
+        video_codecid=AV_CODEC_ID_MPEG2VIDEO;
         video_codec=avcodec_find_decoder(video_codecid);
     }
 
     if (video_codec)
     {
+#if LIBAVCODEC_VERSION_INT >= ((54<<16)+(51<<8)+100)
+        video_context = avcodec_alloc_context3(NULL);
+#else
         video_context = avcodec_alloc_context();
+#endif
         if (video_context)
         {
             if (video_codec->capabilities & CODEC_CAP_TRUNCATED)
                 video_context->flags|=CODEC_FLAG_TRUNCATED; // we do not send complete frames
-
+            video_context->flags|=CODEC_FLAG_LOW_DELAY;
             video_context->flags2|=CODEC_FLAG2_FAST; // really?
             video_context->skip_idct=AVDISCARD_ALL;
 
-            av_log_set_level(AV_LOG_FATAL); // silence decoder output
-
-            if (video_codecid==CODEC_ID_H264)
-            {
-                video_context->flags2|=CODEC_FLAG2_CHUNKS; // needed for H264!
-            }
-            else
+            if (video_codecid!=AV_CODEC_ID_H264)
             {
                 video_context->skip_frame=AVDISCARD_NONKEY; // just I-frames
+            } else {
+                video_context->flags2|=CODEC_FLAG2_CHUNKS;
+#if LIBAVCODEC_VERSION_INT >= ((52<<16)+(47<<8)+0)
+                av_log_set_level(AV_LOG_FATAL); // silence decoder output
+#else
+                av_log_set_level(AV_LOG_QUIET);
+#endif
             }
             video_context->codec_id = video_codecid;
             video_context->codec_type = AVMEDIA_TYPE_VIDEO;
@@ -198,15 +222,15 @@ cMarkAdDecoder::cMarkAdDecoder(bool useH264, int Threads)
 #else
             int ret=avcodec_open(video_context, video_codec);
 #endif
-            if ((ret < 0) && (video_codecid==CODEC_ID_MPEG2VIDEO_XVMC))
+            if ((ret < 0) && (video_codecid==AV_CODEC_ID_MPEG2VIDEO_XVMC))
             {
                 // fallback to MPEG2VIDEO
-                video_codecid=CODEC_ID_MPEG2VIDEO;
+                video_codecid=AV_CODEC_ID_MPEG2VIDEO;
                 video_codec=avcodec_find_decoder(video_codecid);
                 if (video_codec)
                 {
                     video_context->codec_type=AVMEDIA_TYPE_UNKNOWN;
-                    video_context->codec_id=CODEC_ID_NONE;
+                    video_context->codec_id=AV_CODEC_ID_NONE;
                     video_context->codec_tag=0;
                     memset(video_context->codec_name,0,sizeof(video_context->codec_name));
 #if LIBAVCODEC_VERSION_INT >= ((53<<16)+(5<<8)+0)
@@ -225,13 +249,13 @@ cMarkAdDecoder::cMarkAdDecoder(bool useH264, int Threads)
             {
                 switch (video_codecid)
                 {
-                case CODEC_ID_H264:
+                case AV_CODEC_ID_H264:
                     esyslog("could not open codec for H264");
                     break;
-                case CODEC_ID_MPEG2VIDEO_XVMC:
+                case AV_CODEC_ID_MPEG2VIDEO_XVMC:
                     esyslog("could not open codec MPEG2 (XVMC)");
                     break;
-                case CODEC_ID_MPEG2VIDEO:
+                case AV_CODEC_ID_MPEG2VIDEO:
                     esyslog("could not open codec MPEG2");
                     break;
                 default:
@@ -286,13 +310,13 @@ cMarkAdDecoder::cMarkAdDecoder(bool useH264, int Threads)
     {
         switch (video_codecid)
         {
-        case CODEC_ID_H264:
+        case AV_CODEC_ID_H264:
             esyslog("codec for H264 not found");
             break;
-        case CODEC_ID_MPEG2VIDEO_XVMC:
+        case AV_CODEC_ID_MPEG2VIDEO_XVMC:
             esyslog("codec for MPEG2 (XVMC) not found");
             break;
-        case CODEC_ID_MPEG2VIDEO:
+        case AV_CODEC_ID_MPEG2VIDEO:
             esyslog("codec for MPEG2 not found");
             break;
         default:
@@ -321,7 +345,11 @@ bool cMarkAdDecoder::Clear()
     {
         avcodec_flush_buffers(video_context);
         AVCodecContext *dest;
+#if LIBAVCODEC_VERSION_INT >= ((54<<16)+(51<<8)+100)
+        dest=avcodec_alloc_context3(NULL);
+#else
         dest=avcodec_alloc_context();
+#endif
         if (dest)
         {
             if (avcodec_copy_context(dest,video_context)!=0) ret=false;
@@ -384,26 +412,18 @@ bool cMarkAdDecoder::DecodeVideo(MarkAdContext *maContext,uchar *pkt, int plen)
     if (!video_frame) return false;
     maContext->Video.Data.Valid=false;
 
-    if ((video_context->codec_id==CODEC_ID_H264) && (!video_context->skip_frame))
-    {
-        // with H264 we cannot set skip_frame just to NONKEY, is depends on Interlaced...
-        if (maContext->Video.Info.Height)
-        {
-            if (maContext->Video.Info.Interlaced)
-            {
-                video_context->skip_frame=AVDISCARD_BIDIR; // just P/I-frames
-                video_context->skip_loop_filter=AVDISCARD_BIDIR;
-            }
-            else
-            {
-                video_context->skip_frame=AVDISCARD_NONKEY; // just I-frames
-                video_context->skip_loop_filter=AVDISCARD_NONKEY;
-            }
+    if (video_context->codec_id==AV_CODEC_ID_H264) {
+        if (plen>=5) {
+            if (((pkt[4] & 0x1F)==9) && (pkt[5]==0x10)) addPkt=true;
         }
-        else
-        {
-            return false;
+        if (!addPkt) return false;
+    }
+
+    if (video_context->codec_id==AV_CODEC_ID_MPEG2VIDEO) {
+        if (plen>=5) {
+            if (!pkt[0] && !pkt[1] && (pkt[2]==1) && !pkt[3]  && ((pkt[5] & 8)==8)) addPkt=true;
         }
+        if (!addPkt) return false;
     }
 
     AVPacket avpkt;
@@ -436,6 +456,7 @@ bool cMarkAdDecoder::DecodeVideo(MarkAdContext *maContext,uchar *pkt, int plen)
             {
                 esyslog("error decoding video");
                 noticeERRVID=true;
+                addPkt=false;
             }
             break;
         }
@@ -446,19 +467,10 @@ bool cMarkAdDecoder::DecodeVideo(MarkAdContext *maContext,uchar *pkt, int plen)
         }
         if (video_frame_ready)
         {
-            if (video_context->skip_frame!=AVDISCARD_DEFAULT)
-            {
-                if (last_qscale_table!=video_frame->qscale_table)
-                {
-                    if (SetVideoInfos(maContext,video_context,video_frame)) ret=true;
-                    last_qscale_table=video_frame->qscale_table;
-                }
-            }
-            else
-            {
-                if (SetVideoInfos(maContext,video_context,video_frame)) ret=true;
-            }
+            if (SetVideoInfos(maContext,video_context,video_frame)) ret=true;
         }
+        if (!len) break;
     }
+    if (ret) addPkt=false;
     return ret;
 }
diff --git a/command/decoder.h b/command/decoder.h
index 707ca56..416f74c 100644
--- a/command/decoder.h
+++ b/command/decoder.h
@@ -51,6 +51,7 @@ private:
     bool SetVideoInfos(MarkAdContext *maContext,AVCodecContext *Video_Context,
                        AVFrame *Video_Frame);
     bool noticeERRVID;
+    bool addPkt;
 public:
     bool DecodeVideo(MarkAdContext *maContext, uchar *pkt, int plen);
     bool Clear();
diff --git a/command/demux.cpp b/command/demux.cpp
index b136d17..0423f2c 100644
--- a/command/demux.cpp
+++ b/command/demux.cpp
@@ -112,6 +112,7 @@ int cPaketQueue::findpktheader(int start, int *streamsize,int *headersize, bool
         {
             if (scanner==1L)
             {
+                if (buffer[i]==0xE0) longstartcode=false;
                 found=true;
                 break;
             }
@@ -149,6 +150,7 @@ int cPaketQueue::findpktheader(int start, int *streamsize,int *headersize, bool
         {
             if (scanner==1L)
             {
+                if (buffer[i]==0xE0) longstartcode=false;
                 found=true;
             }
             if ((scanner & 0xFFFFFFF0)==0x1E0L)
@@ -389,9 +391,9 @@ bool cPaketQueue::Put(uchar *Data, int Size)
         if (outptr>(inptr-outptr))
         {
             memcpy(buffer,&buffer[outptr],inptr-outptr);
-            if (scannerstart==inptr) scannerstart-=outptr;
+            scannerstart-=outptr;
             inptr-=outptr;
-            if (pktinfo.pkthdr==outptr) pktinfo.pkthdr=0;
+            if (pktinfo.pkthdr>0) pktinfo.pkthdr-=outptr;
             outptr=0;
         }
     }
@@ -540,6 +542,7 @@ uchar *cPaketQueue::GetPacket(int *Size, int Type)
     else
     {
         scannerstart=pkthdr+pktsyncsize;
+        if (pktsyncsize>4) scanner=0xFFFFFFFF;
     }
 
     uchar *ptr=&buffer[pktinfo.pkthdr];
@@ -602,7 +605,7 @@ void cTS2Pkt::Clear(AvPacket *Pkt)
         Pkt->Type=0;
         Pkt->Stream=0;
     }
-    sync=false;
+    firstsync=sync=false;
     counter=-1;
     if (queue) queue->Clear();
 }
@@ -683,10 +686,16 @@ bool cTS2Pkt::Process(uchar *TSData, int TSSize, AvPacket *Pkt)
             return true;
         }
 
-        if ((tshdr->TError) && (lasterror!=ERR_HDRBIT))
+        if (tshdr->TError)
         {
-            lasterror=ERR_HDRBIT;
-            esyslog("stream error bit set (0x%04x)",pid);
+            if (lasterror!=ERR_HDRBIT) {
+                lasterror=ERR_HDRBIT;
+                esyslog("stream error bit set (0x%04x)",pid);
+            }
+            Clear(Pkt);
+            skipped+=queue->Skipped();
+            skipped+=TS_SIZE;
+            return true;
         }
 
         int buflen=TS_SIZE+1;
@@ -969,7 +978,7 @@ void cDemux::Clear()
     if (ts2pkt_apid) ts2pkt_apid->Clear();
 
     if (queue) queue->Clear();
-    offset=0;
+    offset=rawoffset=0;
     vdroffset=0;
     last_bplen=0;
     from_oldfile=0;
@@ -1186,7 +1195,7 @@ bool cDemux::vdraddpatpmt(uchar *data, int count)
     // a picture starts @376, vdr outputs 0 (!)
     int pid;
     if (checkts(data,count,pid)!=0) return false;
-    if ((!pid) || (pid==132))
+    if ((!pid) || (pid==132)) // 0=PAT 132=PMT
     {
         last_bplen=0;
         vdroffset+=count;
@@ -1242,10 +1251,7 @@ int cDemux::Process(uchar *Data, int Count, AvPacket *pkt)
     if ((raw) && (!Data) && (!Count))
     {
         uchar Dummy[6];
-        if (TS)
-        {
-        }
-        else
+        if (!TS)
         {
             Dummy[0]=0;
             Dummy[1]=0;
@@ -1269,6 +1275,7 @@ int cDemux::Process(uchar *Data, int Count, AvPacket *pkt)
         bpkt=queue->Get(&bplen);
         if (!bpkt) return -1;
         last_bplen=bplen;
+        rawoffset+=bplen;
         if ((vdrcount) && (TS)) vdraddpatpmt(bpkt,bplen);
     }
 
@@ -1337,7 +1344,7 @@ int cDemux::Process(uchar *Data, int Count, AvPacket *pkt)
             break;
         }
     }
-    if (TS)
+    else
     {
         if (stream_or_pid==vpid)
         {
@@ -1345,7 +1352,7 @@ int cDemux::Process(uchar *Data, int Count, AvPacket *pkt)
             {
                 if (h264)
                 {
-                    ts2pkt_vpid=new cTS2Pkt(vpid,"TS2H264",524288,true);
+                    ts2pkt_vpid=new cTS2Pkt(vpid,"TS2H264",819200,true);
                 }
                 else
                 {
@@ -1363,7 +1370,7 @@ int cDemux::Process(uchar *Data, int Count, AvPacket *pkt)
                     ts2pkt_vpid->Resize(3*tpkt.Length,"TS2PES");
                     if (h264)
                     {
-                        pes2videoes=new cPES2ES(PACKET_H264,"PES2H264ES",524288);
+                        pes2videoes=new cPES2ES(PACKET_H264,"PES2H264ES",589824);
                     }
                     else
                     {
diff --git a/command/demux.h b/command/demux.h
index ba71e30..8385b3e 100644
--- a/command/demux.h
+++ b/command/demux.h
@@ -326,6 +326,7 @@ private:
     bool h264;
     bool TS;
     uint64_t offset;
+    uint64_t rawoffset;
     int from_oldfile;
     int last_bplen;
 
diff --git a/command/global.h b/command/global.h
index aad3c62..116fc4d 100644
--- a/command/global.h
+++ b/command/global.h
@@ -67,6 +67,7 @@ typedef struct config
     int ignoreInfo;
     int svdrpport;
     int threads;
+    int astopoffs;
 
     bool DecodeVideo;
     bool DecodeAudio;
diff --git a/command/logos/PULS_4_Austria-A16_9-P0.pgm b/command/logos/3sat-A16_9-P0.pgm
similarity index 69%
copy from command/logos/PULS_4_Austria-A16_9-P0.pgm
copy to command/logos/3sat-A16_9-P0.pgm
index 573b282..2da0b4d 100644
Binary files a/command/logos/PULS_4_Austria-A16_9-P0.pgm and b/command/logos/3sat-A16_9-P0.pgm differ
diff --git a/command/logos/ATV-A16_9-P0.pgm b/command/logos/ATV-A16_9-P0.pgm
index daa2553..5ed6ff4 100644
Binary files a/command/logos/ATV-A16_9-P0.pgm and b/command/logos/ATV-A16_9-P0.pgm differ
diff --git a/command/logos/ATV-A16_9-P2.pgm b/command/logos/ATV-A16_9-P2.pgm
index 92bf091..0bfba9a 100644
Binary files a/command/logos/ATV-A16_9-P2.pgm and b/command/logos/ATV-A16_9-P2.pgm differ
diff --git a/command/logos/kabel_eins_HD-A16_9-P0.pgm b/command/logos/ATV_HD-A16_9-P0.pgm
similarity index 72%
copy from command/logos/kabel_eins_HD-A16_9-P0.pgm
copy to command/logos/ATV_HD-A16_9-P0.pgm
index c113e45..11816db 100644
--- a/command/logos/kabel_eins_HD-A16_9-P0.pgm
+++ b/command/logos/ATV_HD-A16_9-P0.pgm
@@ -1,5 +1,5 @@
 P5
 #C1
-315 135
+321 127
 255
-������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ [...]
+������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ [...]
\ No newline at end of file
diff --git a/command/logos/PULS_4_Austria-A16_9-P0.pgm b/command/logos/AXN_Action-A16_9-P0.pgm
similarity index 69%
copy from command/logos/PULS_4_Austria-A16_9-P0.pgm
copy to command/logos/AXN_Action-A16_9-P0.pgm
index 573b282..49ffa8f 100644
--- a/command/logos/PULS_4_Austria-A16_9-P0.pgm
+++ b/command/logos/AXN_Action-A16_9-P0.pgm
@@ -2,4 +2,4 @@ P5
 #C1
 192 100
 255
-������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ [...]
\ No newline at end of file
+������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ [...]
\ No newline at end of file
diff --git a/command/logos/DMAX-A16_9-P0.pgm b/command/logos/DMAX-A16_9-P0.pgm
index c79317f..310bc48 100644
Binary files a/command/logos/DMAX-A16_9-P0.pgm and b/command/logos/DMAX-A16_9-P0.pgm differ
diff --git a/command/logos/SUPER_RTL_HD-A16_9-P0.pgm b/command/logos/Das_Erste_HD-A16_9-P0.pgm
similarity index 73%
copy from command/logos/SUPER_RTL_HD-A16_9-P0.pgm
copy to command/logos/Das_Erste_HD-A16_9-P0.pgm
index 82767f5..57db041 100644
--- a/command/logos/SUPER_RTL_HD-A16_9-P0.pgm
+++ b/command/logos/Das_Erste_HD-A16_9-P0.pgm
@@ -1,5 +1,5 @@
 P5
-#C0
-445 137
+#C1
+288 180
 255
-������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ [...]
\ No newline at end of file
+������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ [...]
\ No newline at end of file
diff --git a/command/logos/kabel_eins_HD-A16_9-P0.pgm b/command/logos/Deluxe_Music_HD-A3_2-P0.pgm
similarity index 58%
copy from command/logos/kabel_eins_HD-A16_9-P0.pgm
copy to command/logos/Deluxe_Music_HD-A3_2-P0.pgm
index c113e45..0996626 100644
--- a/command/logos/kabel_eins_HD-A16_9-P0.pgm
+++ b/command/logos/Deluxe_Music_HD-A3_2-P0.pgm
@@ -1,5 +1,5 @@
 P5
 #C1
-315 135
+210 190
 255
-������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ [...]
+������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ [...]
\ No newline at end of file
diff --git a/command/logos/PULS_4_Austria-A16_9-P0.pgm b/command/logos/Disney_Channel-A16_9-P0.pgm
similarity index 63%
copy from command/logos/PULS_4_Austria-A16_9-P0.pgm
copy to command/logos/Disney_Channel-A16_9-P0.pgm
index 573b282..a97ae87 100644
--- a/command/logos/PULS_4_Austria-A16_9-P0.pgm
+++ b/command/logos/Disney_Channel-A16_9-P0.pgm
@@ -1,5 +1,5 @@
 P5
-#C1
-192 100
+#C0
+168 120
 255
-������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ [...]
\ No newline at end of file
+������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ [...]
diff --git a/command/logos/SUPER_RTL_HD-A16_9-P0.pgm b/command/logos/Disney_Channel_HD-A4_3-P0.pgm
similarity index 72%
copy from command/logos/SUPER_RTL_HD-A16_9-P0.pgm
copy to command/logos/Disney_Channel_HD-A4_3-P0.pgm
index 82767f5..55b70c1 100644
--- a/command/logos/SUPER_RTL_HD-A16_9-P0.pgm
+++ b/command/logos/Disney_Channel_HD-A4_3-P0.pgm
@@ -1,5 +1,5 @@
 P5
 #C0
-445 137
+314 207
 255
-������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ [...]
\ No newline at end of file
+������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ [...]
\ No newline at end of file
diff --git a/command/logos/PULS_4_Austria-A16_9-P0.pgm b/command/logos/EinsPlus-A16_9-P1.pgm
similarity index 69%
copy from command/logos/PULS_4_Austria-A16_9-P0.pgm
copy to command/logos/EinsPlus-A16_9-P1.pgm
index 573b282..9845de6 100644
--- a/command/logos/PULS_4_Austria-A16_9-P0.pgm
+++ b/command/logos/EinsPlus-A16_9-P1.pgm
@@ -1,5 +1,5 @@
 P5
-#C1
+# CREATOR: GIMP PNM Filter Version 1.1
 192 100
 255
-������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ [...]
\ No newline at end of file
+������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ [...]
\ No newline at end of file
diff --git a/command/logos/PULS_4_Austria-A16_9-P0.pgm b/command/logos/EinsPlus-A16_9-P2.pgm
similarity index 69%
copy from command/logos/PULS_4_Austria-A16_9-P0.pgm
copy to command/logos/EinsPlus-A16_9-P2.pgm
index 573b282..660934a 100644
--- a/command/logos/PULS_4_Austria-A16_9-P0.pgm
+++ b/command/logos/EinsPlus-A16_9-P2.pgm
@@ -1,5 +1,5 @@
 P5
-#C1
+# CREATOR: GIMP PNM Filter Version 1.1
 192 100
 255
-������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ [...]
\ No newline at end of file
+������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ [...]
\ No newline at end of file
diff --git a/command/logos/PULS_4_Austria-A16_9-P0.pgm b/command/logos/Fox_Serie-A16_9-P0.pgm
similarity index 69%
copy from command/logos/PULS_4_Austria-A16_9-P0.pgm
copy to command/logos/Fox_Serie-A16_9-P0.pgm
index 573b282..e3b528b 100644
--- a/command/logos/PULS_4_Austria-A16_9-P0.pgm
+++ b/command/logos/Fox_Serie-A16_9-P0.pgm
@@ -2,4 +2,4 @@ P5
 #C1
 192 100
 255
-������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ [...]
\ No newline at end of file
+������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ [...]
\ No newline at end of file
diff --git a/command/logos/PULS_4_Austria-A16_9-P0.pgm b/command/logos/Fox_Serie-A4_3-P0.pgm
similarity index 69%
copy from command/logos/PULS_4_Austria-A16_9-P0.pgm
copy to command/logos/Fox_Serie-A4_3-P0.pgm
index 573b282..6c498dc 100644
--- a/command/logos/PULS_4_Austria-A16_9-P0.pgm
+++ b/command/logos/Fox_Serie-A4_3-P0.pgm
@@ -2,4 +2,4 @@ P5
 #C1
 192 100
 255
-������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ [...]
\ No newline at end of file
+������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ [...]
\ No newline at end of file
diff --git a/command/logos/PULS_4_Austria-A16_9-P1.pgm b/command/logos/MDR_Sachsen-A16_9-P0.pgm
similarity index 66%
copy from command/logos/PULS_4_Austria-A16_9-P1.pgm
copy to command/logos/MDR_Sachsen-A16_9-P0.pgm
index 4c921ab..b8ed473 100644
Binary files a/command/logos/PULS_4_Austria-A16_9-P1.pgm and b/command/logos/MDR_Sachsen-A16_9-P0.pgm differ
diff --git a/command/logos/PULS_4_Austria-A16_9-P0.pgm b/command/logos/N24_HD-A4_3-P0.pgm
similarity index 52%
copy from command/logos/PULS_4_Austria-A16_9-P0.pgm
copy to command/logos/N24_HD-A4_3-P0.pgm
index 573b282..380f4aa 100644
--- a/command/logos/PULS_4_Austria-A16_9-P0.pgm
+++ b/command/logos/N24_HD-A4_3-P0.pgm
@@ -1,5 +1,5 @@
 P5
 #C1
-192 100
+160 160
 255
-������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ [...]
\ No newline at end of file
+������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ [...]
\ No newline at end of file
diff --git a/command/logos/PULS_4_Austria-A16_9-P1.pgm b/command/logos/N24_HD-A4_3-P1.pgm
similarity index 50%
copy from command/logos/PULS_4_Austria-A16_9-P1.pgm
copy to command/logos/N24_HD-A4_3-P1.pgm
index 4c921ab..1dbcfca 100644
Binary files a/command/logos/PULS_4_Austria-A16_9-P1.pgm and b/command/logos/N24_HD-A4_3-P1.pgm differ
diff --git a/command/logos/PULS_4_Austria-A16_9-P1.pgm b/command/logos/N24_HD-A4_3-P2.pgm
similarity index 50%
copy from command/logos/PULS_4_Austria-A16_9-P1.pgm
copy to command/logos/N24_HD-A4_3-P2.pgm
index 4c921ab..8cf8504 100644
Binary files a/command/logos/PULS_4_Austria-A16_9-P1.pgm and b/command/logos/N24_HD-A4_3-P2.pgm differ
diff --git a/command/logos/PULS_4_Austria-A16_9-P0.pgm b/command/logos/NDR_FS_HH-A16_9-P0.pgm
similarity index 69%
copy from command/logos/PULS_4_Austria-A16_9-P0.pgm
copy to command/logos/NDR_FS_HH-A16_9-P0.pgm
index 573b282..bb04c7c 100644
Binary files a/command/logos/PULS_4_Austria-A16_9-P0.pgm and b/command/logos/NDR_FS_HH-A16_9-P0.pgm differ
diff --git a/command/logos/PULS_4_Austria-A16_9-P0.pgm b/command/logos/NDR_FS_MV-A16_9-P0.pgm
similarity index 69%
copy from command/logos/PULS_4_Austria-A16_9-P0.pgm
copy to command/logos/NDR_FS_MV-A16_9-P0.pgm
index 573b282..bb04c7c 100644
Binary files a/command/logos/PULS_4_Austria-A16_9-P0.pgm and b/command/logos/NDR_FS_MV-A16_9-P0.pgm differ
diff --git a/command/logos/PULS_4_Austria-A16_9-P0.pgm b/command/logos/NDR_FS_NDS-A16_9-P0.pgm
similarity index 69%
copy from command/logos/PULS_4_Austria-A16_9-P0.pgm
copy to command/logos/NDR_FS_NDS-A16_9-P0.pgm
index 573b282..bb04c7c 100644
Binary files a/command/logos/PULS_4_Austria-A16_9-P0.pgm and b/command/logos/NDR_FS_NDS-A16_9-P0.pgm differ
diff --git a/command/logos/PULS_4_Austria-A16_9-P0.pgm b/command/logos/NDR_FS_SH-A16_9-P0.pgm
similarity index 69%
copy from command/logos/PULS_4_Austria-A16_9-P0.pgm
copy to command/logos/NDR_FS_SH-A16_9-P0.pgm
index 573b282..bb04c7c 100644
Binary files a/command/logos/PULS_4_Austria-A16_9-P0.pgm and b/command/logos/NDR_FS_SH-A16_9-P0.pgm differ
diff --git a/command/logos/PULS_4_Austria-A16_9-P0.pgm b/command/logos/ORF1_HD-A16_9-P0.pgm
similarity index 58%
copy from command/logos/PULS_4_Austria-A16_9-P0.pgm
copy to command/logos/ORF1_HD-A16_9-P0.pgm
index 573b282..a5f9389 100644
--- a/command/logos/PULS_4_Austria-A16_9-P0.pgm
+++ b/command/logos/ORF1_HD-A16_9-P0.pgm
@@ -1,5 +1,5 @@
 P5
-#C1
-192 100
+#C0
+256 90
 255
-������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ [...]
\ No newline at end of file
+������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ [...]
\ No newline at end of file
diff --git a/command/logos/PULS_4_Austria-A16_9-P0.pgm b/command/logos/PHOENIX_HD-A16_9-P0.pgm
similarity index 51%
copy from command/logos/PULS_4_Austria-A16_9-P0.pgm
copy to command/logos/PHOENIX_HD-A16_9-P0.pgm
index 573b282..fe5cee3 100644
Binary files a/command/logos/PULS_4_Austria-A16_9-P0.pgm and b/command/logos/PHOENIX_HD-A16_9-P0.pgm differ
diff --git a/command/logos/PULS_4_Austria-A16_9-P1.pgm b/command/logos/PHOENIX_HD-A16_9-P1.pgm
similarity index 63%
copy from command/logos/PULS_4_Austria-A16_9-P1.pgm
copy to command/logos/PHOENIX_HD-A16_9-P1.pgm
index 4c921ab..96bbdbb 100644
Binary files a/command/logos/PULS_4_Austria-A16_9-P1.pgm and b/command/logos/PHOENIX_HD-A16_9-P1.pgm differ
diff --git a/command/logos/PULS_4_Austria-A16_9-P1.pgm b/command/logos/PHOENIX_HD-A16_9-P2.pgm
similarity index 63%
copy from command/logos/PULS_4_Austria-A16_9-P1.pgm
copy to command/logos/PHOENIX_HD-A16_9-P2.pgm
index 4c921ab..6862d8b 100644
Binary files a/command/logos/PULS_4_Austria-A16_9-P1.pgm and b/command/logos/PHOENIX_HD-A16_9-P2.pgm differ
diff --git a/command/logos/PULS_4_Austria-A16_9-P0.pgm b/command/logos/PULS_4_Austria-A16_9-P0.pgm
index 573b282..8eb6ff9 100644
Binary files a/command/logos/PULS_4_Austria-A16_9-P0.pgm and b/command/logos/PULS_4_Austria-A16_9-P0.pgm differ
diff --git a/command/logos/PULS_4_Austria-A16_9-P1.pgm b/command/logos/PULS_4_Austria-A16_9-P1.pgm
index 4c921ab..6d862e8 100644
Binary files a/command/logos/PULS_4_Austria-A16_9-P1.pgm and b/command/logos/PULS_4_Austria-A16_9-P1.pgm differ
diff --git a/command/logos/PULS_4_Austria-A16_9-P2.pgm b/command/logos/PULS_4_Austria-A16_9-P2.pgm
index 934f6aa..1979b42 100644
Binary files a/command/logos/PULS_4_Austria-A16_9-P2.pgm and b/command/logos/PULS_4_Austria-A16_9-P2.pgm differ
diff --git a/command/logos/PULS_4_Austria-A16_9-P0.pgm b/command/logos/ProSieben-A4_3-P0.pgm
similarity index 69%
copy from command/logos/PULS_4_Austria-A16_9-P0.pgm
copy to command/logos/ProSieben-A4_3-P0.pgm
index 573b282..366590c 100644
Binary files a/command/logos/PULS_4_Austria-A16_9-P0.pgm and b/command/logos/ProSieben-A4_3-P0.pgm differ
diff --git a/command/logos/ProSieben_MAXX-A16_9-P0.pgm b/command/logos/ProSieben_MAXX-A16_9-P0.pgm
new file mode 100644
index 0000000..8f4a96a
Binary files /dev/null and b/command/logos/ProSieben_MAXX-A16_9-P0.pgm differ
diff --git a/command/logos/kabel_eins_HD-A16_9-P0.pgm b/command/logos/ProSieben_MAXX_HD-A16_9-P0.pgm
similarity index 72%
copy from command/logos/kabel_eins_HD-A16_9-P0.pgm
copy to command/logos/ProSieben_MAXX_HD-A16_9-P0.pgm
index c113e45..d593a9e 100644
--- a/command/logos/kabel_eins_HD-A16_9-P0.pgm
+++ b/command/logos/ProSieben_MAXX_HD-A16_9-P0.pgm
@@ -1,5 +1,5 @@
 P5
 #C1
-315 135
+299 156
 255
-������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ [...]
+������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ [...]
\ No newline at end of file
diff --git a/command/logos/SIXX-A16_9-P0.pgm b/command/logos/RSI_LA_1_HD-A16_9-P0.pgm
similarity index 50%
copy from command/logos/SIXX-A16_9-P0.pgm
copy to command/logos/RSI_LA_1_HD-A16_9-P0.pgm
index 9fe88b1..af080b5 100644
Binary files a/command/logos/SIXX-A16_9-P0.pgm and b/command/logos/RSI_LA_1_HD-A16_9-P0.pgm differ
diff --git a/command/logos/SIXX-A16_9-P0.pgm b/command/logos/RTL-A16_9-P0.pgm
similarity index 70%
copy from command/logos/SIXX-A16_9-P0.pgm
copy to command/logos/RTL-A16_9-P0.pgm
index 9fe88b1..a3f7ba6 100644
Binary files a/command/logos/SIXX-A16_9-P0.pgm and b/command/logos/RTL-A16_9-P0.pgm differ
diff --git a/command/logos/SIXX-A16_9-P0.pgm b/command/logos/RTS_Deux_HD-A16_9-P0.pgm
similarity index 64%
copy from command/logos/SIXX-A16_9-P0.pgm
copy to command/logos/RTS_Deux_HD-A16_9-P0.pgm
index 9fe88b1..52c710f 100644
Binary files a/command/logos/SIXX-A16_9-P0.pgm and b/command/logos/RTS_Deux_HD-A16_9-P0.pgm differ
diff --git a/command/logos/ATV-A16_9-P0.pgm b/command/logos/RTS_Un_HD-A16_9-P0.pgm
similarity index 67%
copy from command/logos/ATV-A16_9-P0.pgm
copy to command/logos/RTS_Un_HD-A16_9-P0.pgm
index daa2553..616b922 100644
Binary files a/command/logos/ATV-A16_9-P0.pgm and b/command/logos/RTS_Un_HD-A16_9-P0.pgm differ
diff --git a/command/logos/kabel_eins_HD-A16_9-P0.pgm b/command/logos/SAT_1_HD_Austria-A16_9-P0.pgm
similarity index 58%
copy from command/logos/kabel_eins_HD-A16_9-P0.pgm
copy to command/logos/SAT_1_HD_Austria-A16_9-P0.pgm
index c113e45..03d24ba 100644
--- a/command/logos/kabel_eins_HD-A16_9-P0.pgm
+++ b/command/logos/SAT_1_HD_Austria-A16_9-P0.pgm
@@ -1,5 +1,5 @@
 P5
 #C1
-315 135
+215 167
 255
-������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ [...]
+������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ [...]
\ No newline at end of file
diff --git a/command/logos/SF_1_HD-A16_9-P0.pgm b/command/logos/SF_1_HD-A16_9-P0.pgm
new file mode 100644
index 0000000..bc2b058
--- /dev/null
+++ b/command/logos/SF_1_HD-A16_9-P0.pgm
@@ -0,0 +1,5 @@
+P5
+#C1
+210 110
+255
+������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ [...]
\ No newline at end of file
diff --git a/command/logos/SF_zwei_HD-A16_9-P0.pgm b/command/logos/SF_zwei_HD-A16_9-P0.pgm
new file mode 100644
index 0000000..136611d
--- /dev/null
+++ b/command/logos/SF_zwei_HD-A16_9-P0.pgm
@@ -0,0 +1,5 @@
+P5
+#C1
+264 104
+255
+������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ [...]
\ No newline at end of file
diff --git a/command/logos/SF_zwei_HD-A16_9-P1.pgm b/command/logos/SF_zwei_HD-A16_9-P1.pgm
new file mode 100644
index 0000000..9bae231
Binary files /dev/null and b/command/logos/SF_zwei_HD-A16_9-P1.pgm differ
diff --git a/command/logos/SF_zwei_HD-A16_9-P2.pgm b/command/logos/SF_zwei_HD-A16_9-P2.pgm
new file mode 100644
index 0000000..fd061aa
Binary files /dev/null and b/command/logos/SF_zwei_HD-A16_9-P2.pgm differ
diff --git a/command/logos/SIXX-A16_9-P0.pgm b/command/logos/SIXX-A16_9-P0.pgm
index 9fe88b1..e9d0917 100644
Binary files a/command/logos/SIXX-A16_9-P0.pgm and b/command/logos/SIXX-A16_9-P0.pgm differ
diff --git a/command/logos/SIXX_HD-A16_9-P0.pgm b/command/logos/SIXX_HD-A16_9-P0.pgm
index aaa038b..9b9297e 100644
--- a/command/logos/SIXX_HD-A16_9-P0.pgm
+++ b/command/logos/SIXX_HD-A16_9-P0.pgm
@@ -1,5 +1,5 @@
 P5
 #C1
-365 171
+312 106
 255
-������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ [...]
\ No newline at end of file
+������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ [...]
\ No newline at end of file
diff --git a/command/logos/kabel_eins_HD-A16_9-P0.pgm b/command/logos/SPORT1_HD-A4_3-P0.pgm
similarity index 57%
copy from command/logos/kabel_eins_HD-A16_9-P0.pgm
copy to command/logos/SPORT1_HD-A4_3-P0.pgm
index c113e45..cd6d304 100644
--- a/command/logos/kabel_eins_HD-A16_9-P0.pgm
+++ b/command/logos/SPORT1_HD-A4_3-P0.pgm
@@ -1,5 +1,5 @@
 P5
 #C1
-315 135
+360 160
 255
-������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ [...]
+������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ [...]
\ No newline at end of file
diff --git a/command/logos/PULS_4_Austria-A16_9-P0.pgm b/command/logos/SUPER_RTL-A4_3-P0.pgm
similarity index 70%
copy from command/logos/PULS_4_Austria-A16_9-P0.pgm
copy to command/logos/SUPER_RTL-A4_3-P0.pgm
index 573b282..c927f91 100644
--- a/command/logos/PULS_4_Austria-A16_9-P0.pgm
+++ b/command/logos/SUPER_RTL-A4_3-P0.pgm
@@ -1,5 +1,5 @@
 P5
-#C1
+#C0
 192 100
 255
-������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ [...]
\ No newline at end of file
+������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ [...]
\ No newline at end of file
diff --git a/command/logos/SUPER_RTL_HD-A16_9-P0.pgm b/command/logos/SUPER_RTL_HD-A16_9-P0.pgm
index 82767f5..ee1880f 100644
--- a/command/logos/SUPER_RTL_HD-A16_9-P0.pgm
+++ b/command/logos/SUPER_RTL_HD-A16_9-P0.pgm
@@ -1,5 +1,5 @@
 P5
 #C0
-445 137
+389 110
 255
-������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ [...]
\ No newline at end of file
+������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ [...]
\ No newline at end of file
diff --git a/command/logos/PULS_4_Austria-A16_9-P0.pgm b/command/logos/ZDF-A16_9-P0.pgm
similarity index 69%
copy from command/logos/PULS_4_Austria-A16_9-P0.pgm
copy to command/logos/ZDF-A16_9-P0.pgm
index 573b282..8894c26 100644
Binary files a/command/logos/PULS_4_Austria-A16_9-P0.pgm and b/command/logos/ZDF-A16_9-P0.pgm differ
diff --git a/command/logos/PULS_4_Austria-A16_9-P0.pgm b/command/logos/ZDFinfo_HD-A16_9-P0.pgm
similarity index 51%
copy from command/logos/PULS_4_Austria-A16_9-P0.pgm
copy to command/logos/ZDFinfo_HD-A16_9-P0.pgm
index 573b282..0b756fe 100644
--- a/command/logos/PULS_4_Austria-A16_9-P0.pgm
+++ b/command/logos/ZDFinfo_HD-A16_9-P0.pgm
@@ -1,5 +1,5 @@
 P5
-#C1
-192 100
+#C0
+248 104
 255
-������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ [...]
\ No newline at end of file
+������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ [...]
\ No newline at end of file
diff --git a/command/logos/SUPER_RTL_HD-A16_9-P0.pgm b/command/logos/arte_HD-A16_9-P0.pgm
similarity index 77%
copy from command/logos/SUPER_RTL_HD-A16_9-P0.pgm
copy to command/logos/arte_HD-A16_9-P0.pgm
index 82767f5..5c2a08d 100644
--- a/command/logos/SUPER_RTL_HD-A16_9-P0.pgm
+++ b/command/logos/arte_HD-A16_9-P0.pgm
@@ -1,5 +1,5 @@
 P5
 #C0
-445 137
+288 180
 255
-������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ [...]
\ No newline at end of file
+������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ [...]
\ No newline at end of file
diff --git a/command/logos/kabel_eins_HD-A16_9-P0.pgm b/command/logos/kabel_eins_HD-A16_9-P0.pgm
index c113e45..0d16006 100644
--- a/command/logos/kabel_eins_HD-A16_9-P0.pgm
+++ b/command/logos/kabel_eins_HD-A16_9-P0.pgm
@@ -1,5 +1,5 @@
 P5
 #C1
-315 135
+288 180
 255
-������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ [...]
+������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ [...]
\ No newline at end of file
diff --git a/command/logos/kabel_eins_HD-A16_9-P1.pgm b/command/logos/kabel_eins_HD-A16_9-P1.pgm
index 3863ef1..72430b9 100644
Binary files a/command/logos/kabel_eins_HD-A16_9-P1.pgm and b/command/logos/kabel_eins_HD-A16_9-P1.pgm differ
diff --git a/command/logos/kabel_eins_HD-A16_9-P2.pgm b/command/logos/kabel_eins_HD-A16_9-P2.pgm
index 53adb1b..03a9ae3 100644
Binary files a/command/logos/kabel_eins_HD-A16_9-P2.pgm and b/command/logos/kabel_eins_HD-A16_9-P2.pgm differ
diff --git a/command/logos/PULS_4_Austria-A16_9-P0.pgm b/command/logos/zdf_kultur_HD-A16_9-P0.pgm
similarity index 55%
copy from command/logos/PULS_4_Austria-A16_9-P0.pgm
copy to command/logos/zdf_kultur_HD-A16_9-P0.pgm
index 573b282..a13caeb 100644
--- a/command/logos/PULS_4_Austria-A16_9-P0.pgm
+++ b/command/logos/zdf_kultur_HD-A16_9-P0.pgm
@@ -1,5 +1,5 @@
 P5
-#C1
-192 100
+#C0
+272 88
 255
-������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ [...]
\ No newline at end of file
+������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ [...]
\ No newline at end of file
diff --git a/command/markad-standalone.cpp b/command/markad-standalone.cpp
index cb84f2b..4ca71cd 100644
--- a/command/markad-standalone.cpp
+++ b/command/markad-standalone.cpp
@@ -94,6 +94,7 @@ cOSDMessage::cOSDMessage(const char *Host, int Port)
     msg=NULL;
     host=strdup(Host);
     port=Port;
+    send(this);
 }
 
 cOSDMessage::~cOSDMessage()
@@ -103,10 +104,14 @@ cOSDMessage::~cOSDMessage()
     if (host) free((void*) host);
 }
 
-bool cOSDMessage::readreply(int fd)
+bool cOSDMessage::readreply(int fd, char **reply)
 {
     usleep(400000);
     char c=' ';
+    int repsize=0;
+    int msgsize=0;
+    bool skip=false;
+    if (reply) *reply=NULL;
     do
     {
         struct pollfd fds;
@@ -118,6 +123,22 @@ bool cOSDMessage::readreply(int fd)
         if (ret<=0) return false;
         if (fds.revents!=POLLIN) return false;
         if (read(fd,&c,1)<0) return false;
+        if ((reply) && (!skip) && (c!=10) && (c!=13)) {
+            msgsize++;
+            while ((msgsize+5)>repsize) {
+                repsize+=80;
+                char *tmp=(char *) realloc(*reply,repsize);
+                if (!tmp) {
+                    free(*reply);
+                    *reply=NULL;
+                    skip=true;
+                } else {
+                    *reply=tmp;
+                }
+            }
+            (*reply)[msgsize-1]=c;
+            (*reply)[msgsize]=0;
+        }
     }
     while (c!='\n');
     return true;
@@ -150,21 +171,39 @@ void *cOSDMessage::send(void *posd)
         return NULL;
     }
 
-    if (!osd->readreply(sock))
+    char *reply=NULL;
+    if (!osd->readreply(sock,&reply))
     {
+        if (reply) free(reply);
         close(sock);
         return NULL;
     }
 
     ssize_t ret;
-    ret=write(sock,"MESG ",5);
-    if (ret!=(ssize_t)-1) ret=write(sock,osd->msg,strlen(osd->msg));
-    if (ret!=(ssize_t)-1) ret=write(sock,"\r\n",2);
+    if (osd->msg) {
+        if (reply) free(reply);
+        ret=write(sock,"MESG ",5);
+        if (ret!=(ssize_t)-1) ret=write(sock,osd->msg,strlen(osd->msg));
+        if (ret!=(ssize_t)-1) ret=write(sock,"\r\n",2);
 
-    if (!osd->readreply(sock) || (ret==(ssize_t)-1))
-    {
-        close(sock);
-        return NULL;
+        if (!osd->readreply(sock) || (ret==(ssize_t)-1))
+        {
+            close(sock);
+            return NULL;
+        }
+    } else {
+        if (reply) {
+            char *cs=strrchr(reply,';');
+            if (cs) {
+                cs+=2;
+                trcs(cs);
+            } else {
+                trcs("UTF-8"); // just a guess
+            }
+            free(reply);
+        } else {
+            trcs("UTF-8"); // just a guess
+        }
     }
 
     ret=write(sock,"QUIT\r\n",6);
@@ -195,9 +234,11 @@ void cMarkAdStandalone::CalculateCheckPositions(int startframe)
 
     int delta=macontext.Video.Info.FramesPerSecond*MAXRANGE;
     int len_in_frames=macontext.Video.Info.FramesPerSecond*length;
+    int len_in_framesA=macontext.Video.Info.FramesPerSecond*(length+macontext.Config->astopoffs);
 
     iStart=-startframe;
     iStop=-(startframe+len_in_frames);
+    iStopA=-(startframe+len_in_framesA);
     chkSTART=-iStart+delta;
     chkSTOP=-iStop+(3*delta);
 }
@@ -220,17 +261,18 @@ void cMarkAdStandalone::CheckStop()
         {
             MarkAdMark mark;
             memset(&mark,0,sizeof(mark));
-            mark.Position=iStop;
+            mark.Position=iStopA;
             mark.Type=MT_ASSUMEDSTOP;
             AddMark(&mark);
+            marks.DelTill(iStopA,false);
         }
         else
         {
             isyslog("removing marks from position %i, if any",iStop);
+            marks.DelTill(iStop,false);
         }
-        marks.DelTill(iStop,false);
     }
-    iStop=0;
+    iStop=iStopA=0;
     gotendmark=true;
 }
 
@@ -278,28 +320,29 @@ void cMarkAdStandalone::CheckStart()
     }
 
     macontext.Info.Channels=macontext.Audio.Info.Channels;
-    if (macontext.Info.Channels==6)
-    {
-        isyslog("DolbyDigital5.1 audio detected. logo/border/aspect detection disabled");
-        bDecodeVideo=false;
-        macontext.Video.Options.IgnoreAspectRatio=true;
-        macontext.Video.Options.IgnoreLogoDetection=true;
-        marks.Del(MT_ASPECTSTART);
-        marks.Del(MT_ASPECTSTOP);
-        // start mark must be around istart
-        begin=marks.GetAround(INT_MAX,iStart,MT_CHANNELSTART);
-    }
-    else
-    {
-        if (macontext.Info.DPid.Num)
+    if (macontext.Config->DecodeAudio) {
+        if (macontext.Info.Channels==6)
         {
-            if (macontext.Info.Channels)
-                isyslog("broadcast with %i audio channels, disabling AC3 decoding",macontext.Info.Channels);
-            macontext.Info.DPid.Num=0;
-            demux->DisableDPid();
+            isyslog("DolbyDigital5.1 audio detected. logo/border/aspect detection disabled");
+            bDecodeVideo=false;
+            macontext.Video.Options.IgnoreAspectRatio=true;
+            macontext.Video.Options.IgnoreLogoDetection=true;
+            marks.Del(MT_ASPECTSTART);
+            marks.Del(MT_ASPECTSTOP);
+            // start mark must be around istart
+            begin=marks.GetAround(INT_MAX,iStart,MT_CHANNELSTART);
+        }
+        else
+        {
+            if (macontext.Info.DPid.Num)
+            {
+                if (macontext.Info.Channels)
+                    isyslog("broadcast with %i audio channels, disabling AC3 decoding",macontext.Info.Channels);
+                macontext.Info.DPid.Num=0;
+                demux->DisableDPid();
+            }
         }
     }
-
     if ((macontext.Info.AspectRatio.Num) && ((macontext.Info.AspectRatio.Num!=
             macontext.Video.Info.AspectRatio.Num) || (macontext.Info.AspectRatio.Den!=
                     macontext.Video.Info.AspectRatio.Den)))
@@ -312,22 +355,28 @@ void cMarkAdStandalone::CheckStart()
     macontext.Info.AspectRatio.Num=macontext.Video.Info.AspectRatio.Num;
     macontext.Info.AspectRatio.Den=macontext.Video.Info.AspectRatio.Den;
 
-    isyslog("aspectratio of %i:%i detected. %s",
-            macontext.Video.Info.AspectRatio.Num,
-            macontext.Video.Info.AspectRatio.Den,
-            ((macontext.Video.Info.AspectRatio.Num==4) &&
-             (macontext.Video.Info.AspectRatio.Den==3)) ?
-            "logo/border detection disabled" : "");
+    if (macontext.Info.VPid.Type==MARKAD_PIDTYPE_VIDEO_H264) {
+        isyslog("aspectratio of %i:%i detected",
+                macontext.Video.Info.AspectRatio.Num,
+                macontext.Video.Info.AspectRatio.Den);
+    } else {
+        isyslog("aspectratio of %i:%i detected%s",
+                macontext.Video.Info.AspectRatio.Num,
+                macontext.Video.Info.AspectRatio.Den,
+                ((macontext.Video.Info.AspectRatio.Num==4) &&
+                 (macontext.Video.Info.AspectRatio.Den==3)) ?
+                ". logo/border detection disabled" : "");
 
-    if ((macontext.Video.Info.AspectRatio.Num==4) &&
-            (macontext.Video.Info.AspectRatio.Den==3))
-    {
-        bDecodeVideo=false;
-        macontext.Video.Options.IgnoreLogoDetection=true;
-        marks.Del(MT_CHANNELSTART);
-        marks.Del(MT_CHANNELSTOP);
-        // start mark must be around iStart
-        begin=marks.GetAround(macontext.Video.Info.FramesPerSecond*(MAXRANGE*4),iStart,MT_ASPECTSTART);
+        if ((macontext.Video.Info.AspectRatio.Num==4) &&
+                (macontext.Video.Info.AspectRatio.Den==3))
+        {
+            bDecodeVideo=false;
+            macontext.Video.Options.IgnoreLogoDetection=true;
+            marks.Del(MT_CHANNELSTART);
+            marks.Del(MT_CHANNELSTOP);
+            // start mark must be around iStart
+            begin=marks.GetAround(macontext.Video.Info.FramesPerSecond*(MAXRANGE*4),iStart,MT_ASPECTSTART);
+        }
     }
 
     if (!bDecodeVideo)
@@ -572,13 +621,21 @@ void cMarkAdStandalone::CheckIndexGrowing()
 
     if (!indexFile) return;
     if (macontext.Config->logoExtraction!=-1) return;
-    if (sleepcnt>=2) return; // we already slept too much
+    if (sleepcnt>=2) {
+        dsyslog("slept too much");
+        return; // we already slept too much
+    }
 
     bool notenough=true;
     do
     {
         struct stat statbuf;
-        if (stat(indexFile,&statbuf)==-1) return;
+        if (stat(indexFile,&statbuf)==-1) {
+            if (!macontext.Config->GenIndex) {
+                esyslog("failed to stat %s",indexFile);
+            }
+            return;
+        }
 
         int maxframes=statbuf.st_size/8;
         if (maxframes<(framecnt+200))
@@ -590,6 +647,7 @@ void cMarkAdStandalone::CheckIndexGrowing()
                     if (time(NULL)>(startTime+(time_t) length))
                     {
                         // "old" recording
+                        dsyslog("assuming old recording, now>startTime+length");
                         return;
                     }
                     else
@@ -602,13 +660,30 @@ void cMarkAdStandalone::CheckIndexGrowing()
                 else
                 {
                     // "old" recording
+                    dsyslog("assuming old recording - no length and startTime");
                     return;
                 }
             }
             marks.Save(directory,macontext.Video.Info.FramesPerSecond,isTS);
-            sleep(WAITTIME); // now we sleep and hopefully the index will grow
-            waittime+=WAITTIME;
-            if (errno==EINTR) return;
+            unsigned int sleeptime=WAITTIME;
+            time_t sleepstart=time(NULL);
+            double slepttime=0;
+            while ((unsigned int)slepttime<sleeptime) {
+                while (sleeptime>0) {
+                    errno=0;
+                    unsigned int ret=sleep(sleeptime); // now we sleep and hopefully the index will grow
+                    if ((errno) && (ret)) {
+                        esyslog("got errno %i while waiting for new data",errno);
+                        if (errno!=EINTR) return;
+                    }
+                    sleeptime=ret;
+                }
+                slepttime=difftime(time(NULL),sleepstart);
+                if (slepttime<WAITTIME) {
+                    esyslog("what's wrong with your system? we just slept %.0fs",slepttime);
+                }
+            }
+            waittime+=(int) slepttime;
             sleepcnt++;
             if (sleepcnt>=2)
             {
@@ -696,6 +771,7 @@ bool cMarkAdStandalone::ProcessFile2ndPass(clMark **Mark1, clMark **Mark2,int Nu
     iframe=Frame;
     int actframe=Frame;
     int framecounter=0;
+    int pframe=-1;
 
     MarkAdPos *pos=NULL;
 
@@ -774,23 +850,17 @@ bool cMarkAdStandalone::ProcessFile2ndPass(clMark **Mark1, clMark **Mark2,int Nu
                                 if (macontext.Video.Info.Pict_Type==MA_I_TYPE)
                                 {
                                     lastiframe=iframe;
-                                    if (macontext.Info.VPid.Type==MARKAD_PIDTYPE_VIDEO_H264)
-                                    {
-                                        iframe=actframe;
-                                    }
-                                    else
-                                    {
-                                        iframe=actframe-1;
-                                    }
+                                    iframe=actframe-1;
                                     dRes=true;
                                 }
                             }
                             if (pn>mSTART) dRes=decoder->DecodeVideo(&macontext,pkt.Data,pkt.Length);
                             if (dRes)
                             {
-                                if ((actframe-iframe)<=3)
+                                if (pframe!=lastiframe)
                                 {
-                                    if (pn>mSTART) pos=video->ProcessOverlap(lastiframe,Frames,(pn==mBEFORE));
+                                    if (pn>mSTART) pos=video->ProcessOverlap(lastiframe,Frames,(pn==mBEFORE),
+                                                           (macontext.Info.VPid.Type==MARKAD_PIDTYPE_VIDEO_H264));
                                     framecounter++;
                                 }
                                 if ((pos) && (pn==mAFTER))
@@ -800,6 +870,7 @@ bool cMarkAdStandalone::ProcessFile2ndPass(clMark **Mark1, clMark **Mark2,int Nu
                                     close(f);
                                     return true;
                                 }
+                                pframe=lastiframe;
                             }
                         }
                         tspkt+=len;
@@ -912,21 +983,37 @@ bool cMarkAdStandalone::ProcessFile(int Number)
     char *fbuf;
     if (isTS)
     {
-        if (asprintf(&fbuf,"%s/%05i.ts",directory,Number)==-1) return false;
+        if (asprintf(&fbuf,"%s/%05i.ts",directory,Number)==-1) {
+            esyslog("failed to allocate string, out of memory?");
+            return false;
+        }
     }
     else
     {
-        if (asprintf(&fbuf,"%s/%03i.vdr",directory,Number)==-1) return false;
+        if (asprintf(&fbuf,"%s/%03i.vdr",directory,Number)==-1) {
+            esyslog("failed to allocate string, out of memory?");
+            return false;
+        }
     }
 
     int f=open(fbuf,O_RDONLY);
     free(fbuf);
-    if (f==-1) return false;
+    if (f==-1) {
+        if (isTS) {
+            dsyslog("failed to open %05i.ts",Number);
+        } else {
+            dsyslog("failed to open %03i.vdr",Number);
+        }
+        return false;
+    }
 
     int dataread;
     dsyslog("processing file %05i",Number);
 
+    int pframe=-1;
+
     demux->NewFile();
+again:
     while ((dataread=read(f,data,datalen))>0)
     {
         if (abort) break;
@@ -974,7 +1061,6 @@ bool cMarkAdStandalone::ProcessFile(int Number)
                                 {
                                     CalculateCheckPositions(tStart*macontext.Video.Info.FramesPerSecond);
                                 }
-
                                 if (macontext.Config->GenIndex)
                                 {
                                     marks.WriteIndex(directory,isTS,demux->Offset(),macontext.Video.Info.Pict_Type,Number);
@@ -997,16 +1083,19 @@ bool cMarkAdStandalone::ProcessFile(int Number)
                                         iStop=lastiframe;
                                         iStopinBroadCast=inBroadCast;
                                     }
+                                    if ((iStopA<0) && (lastiframe>-iStopA))
+                                    {
+                                        iStopA=lastiframe;
+                                    }
                                     iframe=framecnt-1;
                                     dRes=true;
                                 }
                             }
-
                             if ((decoder) && (bDecodeVideo))
                                 dRes=decoder->DecodeVideo(&macontext,pkt.Data,pkt.Length);
                             if (dRes)
                             {
-                                if ((framecnt-iframe)<=3)
+                                if (pframe!=lastiframe)
                                 {
                                     MarkAdMarks *vmarks=video->Process(lastiframe,iframe);
                                     if (vmarks)
@@ -1017,15 +1106,15 @@ bool cMarkAdStandalone::ProcessFile(int Number)
                                         }
                                     }
                                     //SaveFrame(lastiframe);  // TODO: JUST FOR DEBUGGING!
-
                                     if (iStart>0)
                                     {
                                         if ((inBroadCast) && (lastiframe>chkSTART)) CheckStart();
                                     }
-                                    if (iStop>0)
+                                    if ((iStop>0) && (iStopA>0))
                                     {
                                         if (lastiframe>chkSTOP) CheckStop();
                                     }
+                                    pframe=lastiframe;
                                 }
                             }
                         }
@@ -1069,6 +1158,8 @@ bool cMarkAdStandalone::ProcessFile(int Number)
             return false;
         }
     }
+    if ((dataread==-1) && (errno==EINTR)) goto again; // i know this is ugly ;)
+
     close(f);
     return true;
 }
@@ -1120,7 +1211,7 @@ void cMarkAdStandalone::ProcessFile()
     if (!abort)
     {
         CheckLogoMarks();
-        if (iStop>0) CheckStop(); // no stopmark till now?
+        if ((iStop>0) && (iStopA>0)) CheckStop(); // no stopmark till now?
         if ((inBroadCast) && (!gotendmark) && (lastiframe))
         {
             MarkAdMark tempmark;
@@ -1147,7 +1238,7 @@ void cMarkAdStandalone::Process()
         {
             if (length && startTime)
             {
-                if (time(NULL)>(startTime+(time_t) length))
+                if ((time(NULL)>(startTime+(time_t) length)) || (gotendmark))
                 {
                     int iIndexError=false;
                     int tframecnt=macontext.Config->GenIndex ? framecnt : 0;
@@ -1457,22 +1548,25 @@ time_t cMarkAdStandalone::GetBroadcastStart(time_t start, int fd)
 
     if ((useatime) && (stat(directory,&statbuf)!=-1))
     {
-        isyslog("getting broadcast start from directory atime");
-        return statbuf.st_atime;
+        if (fabs(difftime(start,statbuf.st_atime))<7200)
+        {
+            isyslog("getting broadcast start from directory atime");
+            return statbuf.st_atime;
+        }
     }
 
     // try to get from mtime
     // (and hope info.vdr has not changed after the start of the recording)
     if (fstat(fd,&statbuf)!=-1)
     {
-        if (fabs(difftime(start,statbuf.st_mtime))<1800)
+        if (fabs(difftime(start,statbuf.st_mtime))<7200)
         {
             isyslog("getting broadcast start from info mtime");
             return (time_t) statbuf.st_mtime;
         }
     }
 
-    // fallback to the directory -> worst starttime we can use!
+    // fallback to the directory
     const char *timestr=strrchr(directory,'/');
     if (timestr)
     {
@@ -1489,7 +1583,7 @@ time_t cMarkAdStandalone::GetBroadcastStart(time_t start, int fd)
                 t.tm_mon--;
                 t.tm_sec=0;
                 t.tm_isdst=-1;
-                isyslog("getting broadcast start from directory (can be wrong)");
+                isyslog("getting broadcast start from directory (can be wrong!)");
                 return mktime(&t);
             }
         }
@@ -1647,7 +1741,7 @@ bool cMarkAdStandalone::LoadInfo()
 
     if ((length) && (!bIgnoreTimerInfo) && (startTime))
     {
-        time_t rStart=GetBroadcastStart(startTime,fileno(f));
+        time_t rStart=GetBroadcastStart(startTime, fileno(f));
         if (rStart)
         {
             tStart=(int) (startTime-rStart);
@@ -2050,7 +2144,7 @@ cMarkAdStandalone::cMarkAdStandalone(const char *Directory, const MarkAdConfig *
     bDecodeVideo=config->DecodeVideo;
     bDecodeAudio=config->DecodeAudio;
 
-    tStart=iStart=iStop=0;
+    tStart=iStart=iStop=iStopA=0;
 
     if ((config->ignoreInfo & IGNORE_TIMERINFO)==IGNORE_TIMERINFO)
     {
@@ -2175,7 +2269,7 @@ cMarkAdStandalone::cMarkAdStandalone(const char *Directory, const MarkAdConfig *
             esyslog("failed loading info - logo %s%sdisabled",
                     (config->logoExtraction!=-1) ? "extraction" : "detection",
                     bIgnoreTimerInfo ? " " : " and pre-/post-timer ");
-            tStart=iStart=iStop=0;
+            tStart=iStart=iStop=iStopA=0;
             macontext.Video.Options.IgnoreLogoDetection=true;
             macontext.Video.Options.WeakMarksOk=true;
         }
@@ -2196,7 +2290,10 @@ cMarkAdStandalone::cMarkAdStandalone(const char *Directory, const MarkAdConfig *
         inBroadCast=true;
     }
 
-    if (tStart>1) isyslog("pre-timer %im",tStart/60);
+    if (tStart>1) {
+        if (tStart<60) tStart=60;
+        isyslog("pre-timer %im",tStart/60);
+    }
     if (length) isyslog("broadcast length %im",length/60);
 
     if (title[0])
@@ -2211,7 +2308,7 @@ cMarkAdStandalone::cMarkAdStandalone(const char *Directory, const MarkAdConfig *
     if (config->OSD)
     {
         osd= new cOSDMessage(config->svdrphost,config->svdrpport);
-        if (osd) osd->Send("%s %s",tr("starting markad for"),ptitle);
+        if (osd) osd->Send("%s '%s'",tr("starting markad for"),ptitle);
     }
     else
     {
@@ -2256,6 +2353,8 @@ cMarkAdStandalone::cMarkAdStandalone(const char *Directory, const MarkAdConfig *
         streaminfo = new cMarkAdStreamInfo;
         if (macontext.Info.ChannelName)
             isyslog("channel %s",macontext.Info.ChannelName);
+        if (macontext.Info.VPid.Type==MARKAD_PIDTYPE_VIDEO_H264)
+            macontext.Video.Options.IgnoreAspectRatio=true;
     }
 
     framecnt=0;
@@ -2298,11 +2397,11 @@ cMarkAdStandalone::~cMarkAdStandalone()
     {
         if (abort)
         {
-            osd->Send("%s %s",tr("markad aborted for"),ptitle);
+            osd->Send("%s '%s'",tr("markad aborted for"),ptitle);
         }
         else
         {
-            osd->Send("%s %s",tr("markad finished for"),ptitle);
+            osd->Send("%s '%s'",tr("markad finished for"),ptitle);
         }
     }
 
@@ -2401,6 +2500,8 @@ int usage(int svdrpport)
            "                  ip/hostname of a remote VDR for OSD messages\n"
            "                --svdrpport=<port> (default is %i)\n"
            "                  port of a remote VDR for OSD messages\n"
+           "                --astopoffs=<value> (default is 100)\n"
+           "                  assumed stop offset in seconds range from 0 to 240\n"
            "\ncmd: one of\n"
            "-                            dummy-parameter if called directly\n"
            "after                        markad starts to analyze the recording\n"
@@ -2488,6 +2589,7 @@ int main(int argc, char *argv[])
     config.logoWidth=-1;
     config.logoHeight=-1;
     config.threads=-1;
+    config.astopoffs=100;
     strcpy(config.svdrphost,"127.0.0.1");
     strcpy(config.logoDirectory,"/var/lib/markad");
 
@@ -2524,6 +2626,7 @@ int main(int argc, char *argv[])
             {"verbose", 0, 0, 'v'},
 
             {"asd",0,0,6},
+            {"astopoffs",1,0,12},
             {"loglevel",1,0,2},
             {"markfile",1,0,1},
             {"nopid",0,0,5},
@@ -2835,6 +2938,17 @@ int main(int argc, char *argv[])
             }
             break;
 
+        case 12: // --astopoffs
+            if (isnumber(optarg) && atoi(optarg) >= 0 && atoi(optarg) <= 240)
+            {
+                config.astopoffs=atoi(optarg);
+            }
+            else
+            {
+                fprintf(stderr, "markad: invalid astopoffs value: %s\n", optarg);
+                return 2;
+            }
+            break;
 
         default:
             printf ("? getopt returned character code 0%o ? (option_index %d)\n", c,option_index);
diff --git a/command/markad-standalone.h b/command/markad-standalone.h
index 0a339e7..2d1becc 100644
--- a/command/markad-standalone.h
+++ b/command/markad-standalone.h
@@ -16,6 +16,7 @@
 #include "streaminfo.h"
 #include "marks.h"
 
+#define trcs(c) bind_textdomain_codeset("markad",c)
 #define tr(s) dgettext("markad",s)
 
 #define IGNORE_VIDEOINFO 1
@@ -34,7 +35,7 @@ private:
     char *msg;
     pthread_t tid;
     static void *send(void *osd);
-    bool readreply(int fd);
+    bool readreply(int fd, char **reply=NULL);
 public:
     int Send(const char *format, ...);
     cOSDMessage(const char *Host, int Port);
@@ -209,6 +210,7 @@ unsigned Descriptor_Length:
     int tStart;        // pretimer in seconds
     int iStart;        // pretimer in frames (negative if unset)
     int iStop;         // endposition in frames (negative if unset)
+    int iStopA;        // assumed endposition in frames (negative if unset)
     bool iStopinBroadCast; // in broadcast @ iStop position?
 
     void CheckStop();
diff --git a/command/markad.1 b/command/markad.1
index 1c4fbd8..5d9b33a 100644
--- a/command/markad.1
+++ b/command/markad.1
@@ -97,7 +97,7 @@ if online is 1, markad starts online for live\-recordings
 only, online=2 starts markad online for every recording
 live\-recordings are identified by having a '@' in the
 filename so the entry 'Mark instant recording' in the menu
-'Setup \- Recording' of the vdr should be set to 'yes'
+\fISetup \- Recording\fR of the vdr should be set to 'yes'
 .TP 
 .BI \-\-pass1only
 process only first pass, setting of marks
diff --git a/command/marks.cpp b/command/marks.cpp
index f8a9b85..b212ef0 100644
--- a/command/marks.cpp
+++ b/command/marks.cpp
@@ -735,5 +735,6 @@ bool clMarks::Save(const char *Directory, double FrameRate, bool isTS, bool Forc
         }
     }
     free(fpath);
+    savedcount=count;
     return true;
 }
diff --git a/command/streaminfo.cpp b/command/streaminfo.cpp
index 62beb6f..6defb45 100644
--- a/command/streaminfo.cpp
+++ b/command/streaminfo.cpp
@@ -134,15 +134,31 @@ bool cMarkAdStreamInfo::FindH264VideoInfos(MarkAdContext *maContext, uchar *pkt,
         if (pkt[5]==0x10)
         {
             maContext->Video.Info.Pict_Type=MA_I_TYPE;
+            H264.use_field=false;
             return true;
         }
         else
         {
+            /*
+                  if (maContext->Video.Info.Interlaced)
+                  {
+                      if (H264.use_field) {
+                          H264.use_field=false;
+                          return true;
+                      } else {
+                          H264.use_field=true;
+                      }
+                  } else {
+                      return true;
+                  }
+            */
+
             if (maContext->Video.Info.Interlaced) {
                 if (H264.use_field) return true;
             } else {
                 return true;
             }
+
         }
     }
 
diff --git a/command/video.cpp b/command/video.cpp
index eb6198e..1cfbd37 100644
--- a/command/video.cpp
+++ b/command/video.cpp
@@ -84,7 +84,7 @@ int cMarkAdLogo::Load(const char *directory, char *file, int plane)
     }
 
     int width,height;
-    if (fscanf(pFile, "P5\n#C%1i %3i\n%3d %3d\n255\n#", &area.corner,&area.mpixel[plane],&width,&height)!=4)
+    if (fscanf(pFile, "P5\n#C%1i %4i\n%3d %3d\n255\n#", &area.corner,&area.mpixel[plane],&width,&height)!=4)
     {
         fclose(pFile);
         return -2;
@@ -336,10 +336,13 @@ int cMarkAdLogo::Detect(int framenumber, int *logoframenumber)
     if (extract) return LOGO_NOCHANGE;
     if (!processed) return LOGO_ERROR;
 
+    tsyslog("rp=%5i mp=%5i mpV=%5.f mpI=%5.f i=%3i s=%i",rpixel,mpixel,(mpixel*LOGO_VMARK),(mpixel*LOGO_IMARK),area.intensity,area.status);
+
     if (processed==1)
     {
-        if ((area.intensity>100) || (area.status!=LOGO_VISIBLE) &&
-                (area.intensity>180))  return LOGO_NOCHANGE;
+        // if we only have one plane we are "vulnerable"
+        // to very bright pictures, so ignore them...
+        if (area.intensity>180) return LOGO_NOCHANGE;
     }
 
     int ret=LOGO_NOCHANGE;
@@ -475,7 +478,6 @@ int cMarkAdLogo::Process(int FrameNumber, int *LogoFrameNumber)
 cMarkAdBlackBordersHoriz::cMarkAdBlackBordersHoriz(MarkAdContext *maContext)
 {
     macontext=maContext;
-
     Clear();
 }
 
@@ -489,15 +491,15 @@ int cMarkAdBlackBordersHoriz::Process(int FrameNumber, int *BorderIFrame)
 {
 #define CHECKHEIGHT 20
 #define BRIGHTNESS 20
-#define OFFSET 5
+#define VOFFSET 5
     if (!macontext) return 0;
     if (!macontext->Video.Data.Valid) return 0;
     if (macontext->Video.Info.FramesPerSecond==0) return 0;
     // Assumption: If we have 4:3, we should have aspectratio-changes!
-    //if (macontext->Video.Info.AspectRatio.Num==4) return 0;
+    //if (macontext->Video.Info.AspectRatio.Num==4) return 0; // seems not to be true in all countries?
     *BorderIFrame=0;
 
-    int height=macontext->Video.Info.Height-OFFSET;
+    int height=macontext->Video.Info.Height-VOFFSET;
 
     int start=(height-CHECKHEIGHT)*macontext->Video.Data.PlaneLinesize[0];
     int end=height*macontext->Video.Data.PlaneLinesize[0];
@@ -519,8 +521,8 @@ int cMarkAdBlackBordersHoriz::Process(int FrameNumber, int *BorderIFrame)
 
     if (fbottom)
     {
-        start=OFFSET*macontext->Video.Data.PlaneLinesize[0];
-        end=macontext->Video.Data.PlaneLinesize[0]*(CHECKHEIGHT+OFFSET);
+        start=VOFFSET*macontext->Video.Data.PlaneLinesize[0];
+        end=macontext->Video.Data.PlaneLinesize[0]*(CHECKHEIGHT+VOFFSET);
         val=0;
         cnt=0;
         xz=0;
@@ -538,59 +540,111 @@ int cMarkAdBlackBordersHoriz::Process(int FrameNumber, int *BorderIFrame)
         if (val>BRIGHTNESS) ftop=false;
     }
 
-    if ((fbottom) && (ftop))
-    {
-        if (borderframenumber==-1)
-        {
+    if ((fbottom) && (ftop)) {
+        if (borderframenumber==-1) {
             borderframenumber=FrameNumber;
-        }
-        else
-        {
-#define MINSECS 240
-            switch (borderstatus)
-            {
-            case HBORDER_UNINITIALIZED:
-                if (FrameNumber>(borderframenumber+macontext->Video.Info.FramesPerSecond*MINSECS))
-                {
-                    borderstatus=HBORDER_VISIBLE;
-                }
-                break;
-
-            case HBORDER_INVISIBLE:
+        } else {
+            if (borderstatus!=HBORDER_VISIBLE) {
                 if (FrameNumber>(borderframenumber+macontext->Video.Info.FramesPerSecond*MINSECS))
                 {
                     *BorderIFrame=borderframenumber;
                     borderstatus=HBORDER_VISIBLE;
                     return 1; // detected start of black border
                 }
-                break;
-
-            case HBORDER_VISIBLE:
-                borderframenumber=FrameNumber;
-                break;
             }
         }
+    } else {
+        if (borderstatus==HBORDER_VISIBLE)
+        {
+            *BorderIFrame=FrameNumber;
+            borderstatus=HBORDER_INVISIBLE;
+            borderframenumber=-1;
+            return -1; // detected stop of black border
+        } else {
+            borderframenumber=-1; // restart from scratch
+        }
     }
-    else
-    {
-        if (borderframenumber!=-1)
+    return 0;
+}
+
+cMarkAdBlackBordersVert::cMarkAdBlackBordersVert(MarkAdContext *maContext)
+{
+    macontext=maContext;
+    Clear();
+}
+
+void cMarkAdBlackBordersVert::Clear()
+{
+    borderstatus=VBORDER_UNINITIALIZED;
+    borderframenumber=-1;
+}
+
+int cMarkAdBlackBordersVert::Process(int FrameNumber, int *BorderIFrame)
+{
+#define CHECKWIDTH 32
+#define BRIGHTNESS 20
+#define HOFFSET 50
+    if (!macontext) return 0;
+    if (!macontext->Video.Data.Valid) return 0;
+    if (macontext->Video.Info.FramesPerSecond==0) return 0;
+    // Assumption: If we have 4:3, we should have aspectratio-changes!
+    //if (macontext->Video.Info.AspectRatio.Num==4) return 0; // seems not to be true in all countries?
+    *BorderIFrame=0;
+
+    bool fleft=true,fright=true;
+    int val=0,cnt=0;
+
+    int end=macontext->Video.Data.PlaneLinesize[0]*macontext->Video.Info.Height;
+    int i=0;
+    while (i<end) {
+        for (int x=0; x<CHECKWIDTH; x++)
         {
-            if (borderstatus==HBORDER_VISIBLE)
+            val+=macontext->Video.Data.Plane[0][HOFFSET+x+i];
+            cnt++;
+        }
+        i+=macontext->Video.Data.PlaneLinesize[0];
+    }
+    val/=cnt;
+    if (val>BRIGHTNESS) fleft=false;
+
+    if (fleft)
+    {
+        val=cnt=i=0;
+        int w=macontext->Video.Info.Width-HOFFSET;
+        while (i<end) {
+            for (int x=0; x<CHECKWIDTH; x++)
             {
-                *BorderIFrame=borderframenumber;
-                borderstatus=HBORDER_INVISIBLE;
-                borderframenumber=-1;
-                return -1; // detected stop of black border
+                val+=macontext->Video.Data.Plane[0][w+x+i];
+                cnt++;
             }
-            else
-            {
-                borderframenumber=-1;
+            i+=macontext->Video.Data.PlaneLinesize[0];
+        }
+        val/=cnt;
+        if (val>BRIGHTNESS) fright=false;
+    }
+
+    if ((fleft) && (fright)) {
+        if (borderframenumber==-1) {
+            borderframenumber=FrameNumber;
+        } else {
+            if (borderstatus!=VBORDER_VISIBLE) {
+                if (FrameNumber>(borderframenumber+macontext->Video.Info.FramesPerSecond*MINSECS))
+                {
+                    *BorderIFrame=borderframenumber;
+                    borderstatus=VBORDER_VISIBLE;
+                    return 1; // detected start of black border
+                }
             }
         }
-        else
+    } else {
+        if (borderstatus==VBORDER_VISIBLE)
         {
+            *BorderIFrame=FrameNumber;
+            borderstatus=VBORDER_INVISIBLE;
             borderframenumber=-1;
-            borderstatus=HBORDER_INVISIBLE;
+            return -1; // detected stop of black border
+        } else {
+            borderframenumber=-1; // restart from scratch
         }
     }
     return 0;
@@ -717,11 +771,12 @@ MarkAdPos *cMarkAdOverlap::Detect()
     return &result;
 }
 
-MarkAdPos *cMarkAdOverlap::Process(int FrameNumber, int Frames, bool BeforeAd)
+MarkAdPos *cMarkAdOverlap::Process(int FrameNumber, int Frames, bool BeforeAd, bool H264)
 {
     if ((lastframenumber>0) && (!similarMaxCnt))
     {
         similarCutOff=50000; // lower is harder!
+        if (H264) similarCutOff*=6;
         similarMaxCnt=4;
     }
 
@@ -775,6 +830,7 @@ cMarkAdVideo::cMarkAdVideo(MarkAdContext *maContext)
     memset(&marks,0,sizeof(marks));
 
     hborder=new cMarkAdBlackBordersHoriz(maContext);
+    vborder=new cMarkAdBlackBordersVert(maContext);
     logo = new cMarkAdLogo(maContext);
     overlap = NULL;
     Clear();
@@ -784,6 +840,7 @@ cMarkAdVideo::~cMarkAdVideo()
 {
     resetmarks();
     if (hborder) delete hborder;
+    if (vborder) delete vborder;
     if (logo) delete logo;
     if (overlap) delete overlap;
 }
@@ -795,6 +852,7 @@ void cMarkAdVideo::Clear()
     framelast=0;
     framebeforelast=0;
     if (hborder) hborder->Clear();
+    if (vborder) vborder->Clear();
     if (logo) logo->Clear();
 }
 
@@ -842,13 +900,13 @@ bool cMarkAdVideo::aspectratiochange(MarkAdAspectRatio &a, MarkAdAspectRatio &b,
 
 }
 
-MarkAdPos *cMarkAdVideo::ProcessOverlap(int FrameNumber, int Frames, bool BeforeAd)
+MarkAdPos *cMarkAdVideo::ProcessOverlap(int FrameNumber, int Frames, bool BeforeAd, bool H264)
 {
     if (!FrameNumber) return NULL;
     if (!overlap) overlap=new cMarkAdOverlap(macontext);
     if (!overlap) return NULL;
 
-    return overlap->Process(FrameNumber, Frames, BeforeAd);
+    return overlap->Process(FrameNumber, Frames, BeforeAd, H264);
 }
 
 MarkAdMarks *cMarkAdVideo::Process(int FrameNumber, int FrameNumberNext)
@@ -860,16 +918,29 @@ MarkAdMarks *cMarkAdVideo::Process(int FrameNumber, int FrameNumberNext)
     int hborderframenumber;
     int hret=hborder->Process(FrameNumber,&hborderframenumber);
 
-    if ((hret>0) && (hborderframenumber))
+    if ((hret>0) && (hborderframenumber!=-1))
     {
         addmark(MT_HBORDERSTART,hborderframenumber);
     }
 
-    if ((hret<0) && (hborderframenumber))
+    if ((hret<0) && (hborderframenumber!=-1))
     {
         addmark(MT_HBORDERSTOP,hborderframenumber);
     }
 
+    int vborderframenumber;
+    int vret=vborder->Process(FrameNumber,&vborderframenumber);
+
+    if ((vret>0) && (vborderframenumber!=-1))
+    {
+        addmark(MT_VBORDERSTART,vborderframenumber);
+    }
+
+    if ((vret<0) && (vborderframenumber!=-1))
+    {
+        addmark(MT_VBORDERSTOP,vborderframenumber);
+    }
+
     if (!macontext->Video.Options.IgnoreAspectRatio)
     {
         bool start;
@@ -881,6 +952,18 @@ MarkAdMarks *cMarkAdVideo::Process(int FrameNumber, int FrameNumberNext)
                 logo->SetStatusLogoInvisible();
             }
 
+            if ((vborder->Status()==VBORDER_VISIBLE) && (!start))
+            {
+                addmark(MT_VBORDERSTOP,framebeforelast);
+                vborder->SetStatusBorderInvisible();
+            }
+
+            if ((hborder->Status()==HBORDER_VISIBLE) && (!start))
+            {
+                addmark(MT_HBORDERSTOP,framebeforelast);
+                hborder->SetStatusBorderInvisible();
+            }
+
             if ((macontext->Video.Info.AspectRatio.Num==4) &&
                     (macontext->Video.Info.AspectRatio.Den==3))
             {
diff --git a/command/video.h b/command/video.h
index 74f866e..05ad796 100644
--- a/command/video.h
+++ b/command/video.h
@@ -34,15 +34,22 @@ enum
 
 enum
 {
-    HBORDER_ERROR=-3,
     HBORDER_UNINITIALIZED=-2,
     HBORDER_INVISIBLE=-1,
-    HBORDER_NOCHANGE=0,
     HBORDER_VISIBLE=1
 };
 
 enum
 {
+    VBORDER_UNINITIALIZED=-2,
+    VBORDER_INVISIBLE=-1,
+    VBORDER_VISIBLE=1
+};
+
+#define MINSECS 240
+
+enum
+{
     OV_BEFORE=0,
     OV_AFTER=1
 };
@@ -75,7 +82,7 @@ private:
 public:
     cMarkAdOverlap(MarkAdContext *maContext);
     ~cMarkAdOverlap();
-    MarkAdPos *Process(int FrameNumber, int Frames, bool BeforeAd);
+    MarkAdPos *Process(int FrameNumber, int Frames, bool BeforeAd, bool H264);
 };
 
 class cMarkAdLogo
@@ -156,6 +163,30 @@ public:
     {
         return borderstatus;
     }
+    void SetStatusBorderInvisible() {
+        borderstatus=HBORDER_INVISIBLE;
+        borderframenumber=-1;
+    }
+    void Clear();
+};
+
+class cMarkAdBlackBordersVert
+{
+private:
+    int borderstatus;
+    int borderframenumber;
+    MarkAdContext *macontext;
+public:
+    cMarkAdBlackBordersVert(MarkAdContext *maContext);
+    int Process(int FrameNumber,int *BorderFrameNumber);
+    int Status()
+    {
+        return borderstatus;
+    }
+    void SetStatusBorderInvisible() {
+        borderstatus=VBORDER_INVISIBLE;
+        borderframenumber=-1;
+    }
     void Clear();
 };
 
@@ -167,6 +198,7 @@ private:
 
     MarkAdAspectRatio aspectratio;
     cMarkAdBlackBordersHoriz *hborder;
+    cMarkAdBlackBordersVert *vborder;
     cMarkAdLogo *logo;
     cMarkAdOverlap *overlap;
 
@@ -181,7 +213,7 @@ private:
 public:
     cMarkAdVideo(MarkAdContext *maContext);
     ~cMarkAdVideo();
-    MarkAdPos *ProcessOverlap(int FrameNumber, int Frames, bool BeforeAd);
+    MarkAdPos *ProcessOverlap(int FrameNumber, int Frames, bool BeforeAd, bool H264);
     MarkAdMarks *Process(int FrameNumber, int FrameNumberNext);
     void Clear();
 };
diff --git a/plugin/HISTORY b/plugin/HISTORY
new file mode 120000
index 0000000..ec72466
--- /dev/null
+++ b/plugin/HISTORY
@@ -0,0 +1 @@
+../HISTORY
\ No newline at end of file
diff --git a/plugin/Makefile b/plugin/Makefile
index c5a95c2..2f51502 100644
--- a/plugin/Makefile
+++ b/plugin/Makefile
@@ -12,6 +12,7 @@ PLUGIN = markad
 
 ### The version number of this plugin (taken from the main source file):
 
+$(shell GITVERSION=`git rev-parse --short HEAD 2> /dev/null`; if [ "$$GITVERSION" ]; then sed "s/\";/ ($$GITVERSION)\";/" ../version.dist > ../version.h; else cp ../version.dist ../version.h; fi)
 VERSION = $(shell grep 'static const char \*VERSION *=' ../version.h | awk '{ print $$6 }' | sed -e 's/[";]//g')
 
 ### The C++ compiler and options:
@@ -21,9 +22,9 @@ CXXFLAGS ?= -fPIC -g -O2 -Wall -Wextra -Woverloaded-virtual -Wno-parentheses
 
 ### The directory environment:
 
-VDRDIR = ../../../..
-LIBDIR = ../../../lib
-TMPDIR = /tmp
+VDRDIR ?= ../../../..
+LIBDIR ?= ../../../lib
+TMPDIR ?= /tmp
 
 ### Make sure that necessary options are included:
 
diff --git a/plugin/README b/plugin/README
new file mode 120000
index 0000000..59a23c4
--- /dev/null
+++ b/plugin/README
@@ -0,0 +1 @@
+../README
\ No newline at end of file
diff --git a/plugin/markad.cpp b/plugin/markad.cpp
index cf35156..e7ebfb0 100644
--- a/plugin/markad.cpp
+++ b/plugin/markad.cpp
@@ -200,6 +200,7 @@ bool cPluginMarkAd::SetupParse(const char *Name, const char *Value)
     else if (!strcasecmp(Name,"Log2Rec")) setup.Log2Rec=atoi(Value);
     else if (!strcasecmp(Name,"LogoOnly")) setup.LogoOnly=atoi(Value);
     else if (!strcasecmp(Name,"SaveInfo")) setup.SaveInfo=atoi(Value);
+    else if (!strcasecmp(Name,"DeferredShutdown")) setup.DeferredShutdown=atoi(Value);
     else return false;
     return true;
 }
diff --git a/plugin/po/de_DE.po b/plugin/po/de_DE.po
index 6c2a6e8..f5f9c84 100644
--- a/plugin/po/de_DE.po
+++ b/plugin/po/de_DE.po
@@ -4,7 +4,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: vdr\n"
 "Report-Msgid-Bugs-To: <see README>\n"
-"POT-Creation-Date: 2012-05-17 12:42+0200\n"
+"POT-Creation-Date: 2013-04-01 12:17+0200\n"
 "PO-Revision-Date: 2009-08-27 14:18+0200\n"
 "Last-Translator: Jochen Dolze <vdr at dolze.de>\n"
 "Language-Team: German <vdr at linuxtv.org>\n"
@@ -55,6 +55,9 @@ msgstr "danach"
 msgid "during"
 msgstr "während"
 
+msgid "never"
+msgstr "nie"
+
 msgid "execution"
 msgstr "Ausführung"
 
diff --git a/plugin/po/es_ES.po b/plugin/po/es_ES.po
index eee5681..d12277e 100644
--- a/plugin/po/es_ES.po
+++ b/plugin/po/es_ES.po
@@ -4,7 +4,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: vdr\n"
 "Report-Msgid-Bugs-To: <see README>\n"
-"POT-Creation-Date: 2012-05-17 12:42+0200\n"
+"POT-Creation-Date: 2013-04-01 12:17+0200\n"
 "PO-Revision-Date: 2011-02-12 11:30+0100\n"
 "Last-Translator: Javier Bradineras <jbradi at hotmail.com>\n"
 "Language-Team: Spanish <vdr at linuxtv.org>\n"
@@ -58,6 +58,9 @@ msgstr "Después"
 msgid "during"
 msgstr "Durante"
 
+msgid "never"
+msgstr ""
+
 msgid "execution"
 msgstr "Ejecución"
 
diff --git a/plugin/po/fi_FI.po b/plugin/po/fi_FI.po
index 57576b1..7ed6755 100644
--- a/plugin/po/fi_FI.po
+++ b/plugin/po/fi_FI.po
@@ -5,7 +5,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: vdr\n"
 "Report-Msgid-Bugs-To: <see README>\n"
-"POT-Creation-Date: 2012-05-17 12:42+0200\n"
+"POT-Creation-Date: 2013-04-01 12:17+0200\n"
 "PO-Revision-Date: 2011-02-27 02:27+0200\n"
 "Last-Translator: Rolf Ahrenberg\n"
 "Language-Team: Finnish <vdr at linuxtv.org>\n"
@@ -56,6 +56,9 @@ msgstr "jälkeen"
 msgid "during"
 msgstr "aikana"
 
+msgid "never"
+msgstr ""
+
 msgid "execution"
 msgstr "Suorita tehtävä tallennuksen"
 
diff --git a/plugin/po/it_IT.po b/plugin/po/it_IT.po
index 6d6403a..8e3465b 100644
--- a/plugin/po/it_IT.po
+++ b/plugin/po/it_IT.po
@@ -4,7 +4,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: vdr\n"
 "Report-Msgid-Bugs-To: <see README>\n"
-"POT-Creation-Date: 2012-05-17 12:42+0200\n"
+"POT-Creation-Date: 2013-04-01 12:17+0200\n"
 "PO-Revision-Date: 2011-07-10 00:56+0100\n"
 "Last-Translator: Diego Pierotto <vdr-italian at tiscali.it>\n"
 "Language-Team: Italian <vdr at linuxtv.org>\n"
@@ -58,6 +58,9 @@ msgstr "dopo"
 msgid "during"
 msgstr "durante"
 
+msgid "never"
+msgstr ""
+
 msgid "execution"
 msgstr "Esecuzione"
 
diff --git a/plugin/po/sk_SK.po b/plugin/po/sk_SK.po
index 5bb67a9..9397d51 100644
--- a/plugin/po/sk_SK.po
+++ b/plugin/po/sk_SK.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: markad\n"
 "Report-Msgid-Bugs-To: <see README>\n"
-"POT-Creation-Date: 2012-05-17 12:42+0200\n"
+"POT-Creation-Date: 2013-04-01 12:17+0200\n"
 "PO-Revision-Date: 2011-03-01 20:26+0100\n"
 "Last-Translator: milan hrala <hrala.milan at gmail.com>\n"
 "Language-Team: milan hrala <grala.milan at gmail.com>\n"
@@ -58,6 +58,9 @@ msgstr "po"
 msgid "during"
 msgstr "priebežne"
 
+msgid "never"
+msgstr ""
+
 msgid "execution"
 msgstr "vykonávať"
 
diff --git a/plugin/setup.cpp b/plugin/setup.cpp
index 8b54d54..8835735 100644
--- a/plugin/setup.cpp
+++ b/plugin/setup.cpp
@@ -27,6 +27,7 @@ cSetupMarkAd::cSetupMarkAd(struct setup *Setup)
 
     processTexts[0]=tr("after");
     processTexts[1]=tr("during");
+    processTexts[2]=tr("never");
 
     lpos=0;
 
@@ -37,33 +38,37 @@ void cSetupMarkAd::write(void)
 {
     int current=Current();
     Clear();
-    cMenuEditStraItem *first=new cMenuEditStraItem(tr("execution"),&processduring,2,processTexts);
+    cMenuEditStraItem *first=new cMenuEditStraItem(tr("execution"),&processduring,3,processTexts);
     if (!first) return;
     Add(first);
-    if (!processduring)
-    {
-        Add(new cMenuEditBoolItem(tr("  during another recording"),&whilerecording));
-        Add(new cMenuEditBoolItem(tr("  while replaying"),&whilereplaying));
-    }
-    Add(new cMenuEditBoolItem(tr("scan only channels with logo"),&logoonly),true);
-    lpos=Current();
-    Add(new cMenuEditBoolItem(tr("deferred shutdown"),&deferredshutdown));
-    Add(new cMenuEditBoolItem(tr("ignore timer margins"),&nomargins));
-    Add(new cMenuEditBoolItem(tr("detect overlaps"),&secondpass));
-    Add(new cMenuEditBoolItem(tr("recreate index"),&genindex));
-    Add(new cMenuEditBoolItem(tr("correct info file"),&saveinfo));
-    Add(new cMenuEditBoolItem(tr("OSD message"),&osdmsg));
-    Add(new cMenuEditBoolItem(tr("verbose logging"),&verbose));
-    Add(new cMenuEditBoolItem(tr("log to recording directory"),&log2rec));
-    Add(new cMenuEditBoolItem(tr("hide mainmenu entry"),&hidemainmenuentry));
-
-    if (current==-1)
-    {
-        SetCurrent(first);
-    }
-    else
-    {
-        SetCurrent(Get(current));
+    if (processduring!=2) {
+        if (!processduring)
+        {
+            Add(new cMenuEditBoolItem(tr("  during another recording"),&whilerecording));
+            Add(new cMenuEditBoolItem(tr("  while replaying"),&whilereplaying));
+        }
+        Add(new cMenuEditBoolItem(tr("scan only channels with logo"),&logoonly),true);
+        lpos=Current();
+        Add(new cMenuEditBoolItem(tr("deferred shutdown"),&deferredshutdown));
+        Add(new cMenuEditBoolItem(tr("ignore timer margins"),&nomargins));
+        Add(new cMenuEditBoolItem(tr("detect overlaps"),&secondpass));
+        Add(new cMenuEditBoolItem(tr("recreate index"),&genindex));
+        Add(new cMenuEditBoolItem(tr("correct info file"),&saveinfo));
+        Add(new cMenuEditBoolItem(tr("OSD message"),&osdmsg));
+        Add(new cMenuEditBoolItem(tr("verbose logging"),&verbose));
+        Add(new cMenuEditBoolItem(tr("log to recording directory"),&log2rec));
+        Add(new cMenuEditBoolItem(tr("hide mainmenu entry"),&hidemainmenuentry));
+
+        if (current==-1)
+        {
+            SetCurrent(first);
+        }
+        else
+        {
+            SetCurrent(Get(current));
+        }
+    } else {
+        lpos=-1;
     }
     Display();
 }
@@ -109,6 +114,10 @@ eOSState cSetupMarkAd::ProcessKey(eKeys Key)
 void cSetupMarkAd::Store(void)
 {
     SetupStore("Execution",processduring);
+    if (processduring!=0) {
+        whilerecording=1;
+        whilereplaying=1;
+    }
     SetupStore("whileRecording",whilerecording);
     SetupStore("whileReplaying",whilereplaying);
     SetupStore("IgnoreMargins",nomargins);
@@ -122,7 +131,7 @@ void cSetupMarkAd::Store(void)
     SetupStore("SaveInfo",saveinfo);
     SetupStore("DeferredShutdown",deferredshutdown);
 
-    setup->ProcessDuring=(bool) processduring;
+    setup->ProcessDuring=(int) processduring;
     setup->whileRecording=(bool) whilerecording;
     setup->whileReplaying=(bool) whilereplaying;
     setup->OSDMessage=(bool) osdmsg;
diff --git a/plugin/setup.h b/plugin/setup.h
index d22460a..6677d6f 100644
--- a/plugin/setup.h
+++ b/plugin/setup.h
@@ -11,7 +11,7 @@
 
 struct setup
 {
-    bool ProcessDuring;
+    int ProcessDuring;
     bool whileRecording;
     bool whileReplaying;
     bool OSDMessage;
@@ -31,7 +31,7 @@ struct setup
 class cSetupMarkAd : public cMenuSetupPage
 {
 private:
-    const char *processTexts[2];
+    const char *processTexts[3];
     struct setup *setup;
     int processduring;
     int whilerecording;
diff --git a/plugin/status.cpp b/plugin/status.cpp
index 7ec8fe5..a691477 100644
--- a/plugin/status.cpp
+++ b/plugin/status.cpp
@@ -56,6 +56,7 @@ bool cStatusMarkAd::Replaying()
 void cStatusMarkAd::Replaying(const cControl *UNUSED(Control), const char *UNUSED(Name),
                               const char *UNUSED(FileName), bool On)
 {
+    if (setup->ProcessDuring!=0) return;
     if (setup->whileReplaying) return;
     if (On)
     {
@@ -70,12 +71,17 @@ void cStatusMarkAd::Replaying(const cControl *UNUSED(Control), const char *UNUSE
 bool cStatusMarkAd::Start(const char *FileName, const char *Name, const bool Direct)
 {
     if ((Direct) && (Get(FileName)!=-1)) return false;
+
     cString cmd = cString::sprintf("\"%s\"/markad %s%s%s%s%s%s%s -l \"%s\" %s \"%s\"",
                                    bindir,
                                    setup->Verbose ? " -v " : "",
                                    setup->SaveInfo ? " -I " : "",
                                    setup->GenIndex ? " -G " : "",
-                                   setup->OSDMessage ? " -O " : "",
+#if VDRVERSNUM < 10715
+                                   setup->OSDMessage ? " -O --svdrpport=2001 " : "",
+#else
+                                   setup->OSDMessage ? " -O --svdrpport=6419 " : "",
+#endif
                                    setup->NoMargins ? " -i 4 " : "",
                                    setup->SecondPass ? "" : " --pass1only ",
                                    setup->Log2Rec ? " -R " : "",
@@ -88,7 +94,7 @@ bool cStatusMarkAd::Start(const char *FileName, const char *Name, const bool Dir
         int pos=Add(FileName,Name);
         if (getPid(pos) && getStatus(pos))
         {
-            if (!setup->ProcessDuring)
+            if (setup->ProcessDuring==0)
             {
                 if (!Direct)
                 {
@@ -125,24 +131,35 @@ void cStatusMarkAd::TimerChange(const cTimer *Timer, eTimerChange Change)
 {
     if (!Timer) return;
     if (Change!=tcDel) return;
+    if (setup->ProcessDuring==2) return;
     if (time(NULL)>=Timer->StopTime()) return; // don't react on normal VDR timer deletion after recording
     Remove(Timer->File(),true);
 }
 
-bool cStatusMarkAd::LogoExists(const char *Name)
+bool cStatusMarkAd::LogoExists(const cDevice *Device,const char *FileName)
 {
-    if (!Name) return false;
+    if (!FileName) return false;
     cTimer *timer=NULL;
     for (cTimer *Timer = Timers.First(); Timer; Timer=Timers.Next(Timer))
     {
-        if (Timer->Recording() && (!strcmp(Timer->ToDescr(),Name)))
+#if APIVERSNUM>=10722
+        if (Timer->Recording() && const_cast<cDevice *>(Device)->IsTunedToTransponder(Timer->Channel()) &&
+                (difftime(time(NULL),Timer->StartTime())<60))
+        {
+            timer=Timer;
+            break;
+        }
+#else
+        if (Timer->Recording() && Device->IsTunedToTransponder(Timer->Channel()) &&
+                (difftime(time(NULL),Timer->StartTime())<60))
         {
             timer=Timer;
             break;
         }
+#endif
     }
     if (!timer) {
-        esyslog("markad: cannot find timer for '%s'",Name);
+        esyslog("markad: cannot find timer for '%s'",FileName);
         return false;
     }
 
@@ -187,16 +204,21 @@ bool cStatusMarkAd::LogoExists(const char *Name)
     return true;
 }
 
-void cStatusMarkAd::Recording(const cDevice *UNUSED(Device), const char *Name,
+void cStatusMarkAd::Recording(const cDevice *Device, const char *Name,
                               const char *FileName, bool On)
 {
     if (!FileName) return; // we cannot operate without a filename
     if (!bindir) return; // we cannot operate without bindir
     if (!logodir) return; // we dont want to operate without logodir
 
+    if (setup->ProcessDuring==2) {
+        dsyslog("markad: deactivated by user");
+        return; // markad deactivated
+    }
+
     if (On)
     {
-        if (setup->LogoOnly && !LogoExists(Name)) {
+        if (setup->LogoOnly && !LogoExists(Device,FileName)) {
             dsyslog("markad: no logo found for %s",Name);
             return;
         }
@@ -298,8 +320,13 @@ bool cStatusMarkAd::GetNextActive(struct recs **RecEntry)
         {
             if (getStatus(actpos))
             {
-                *RecEntry=&recs[actpos++];
-                return true;
+                /* check if recording directory still exists */
+                if (access(recs[actpos].FileName,R_OK)==-1) {
+                    Remove(actpos,true);
+                } else {
+                    *RecEntry=&recs[actpos++];
+                    return true;
+                }
             }
         }
         actpos++;
@@ -355,10 +382,12 @@ void cStatusMarkAd::Remove(int Position, bool Kill)
         {
             if ((recs[Position].Status=='R') || (recs[Position].Status=='S'))
             {
+                dsyslog("markad: terminating pid %i",recs[Position].Pid);
                 kill(recs[Position].Pid,SIGTERM);
             }
             else
             {
+                dsyslog("markad: killing pid %i",recs[Position].Pid);
                 kill(recs[Position].Pid,SIGKILL);
             }
         }
@@ -401,6 +430,7 @@ void cStatusMarkAd::Pause(const char *FileName)
             if ((recs[i].FileName) && (!strcmp(recs[i].FileName,FileName)) &&
                     (recs[i].Pid) && (!recs[i].ChangedbyUser))
             {
+                dsyslog("markad: pausing pid %i",recs[i].Pid);
                 kill(recs[i].Pid,SIGTSTP);
             }
         }
@@ -408,6 +438,7 @@ void cStatusMarkAd::Pause(const char *FileName)
         {
             if ((recs[i].Pid) && (!recs[i].ChangedbyUser))
             {
+                dsyslog("markad: pausing pid %i",recs[i].Pid);
                 kill(recs[i].Pid,SIGTSTP);
             }
         }
@@ -423,6 +454,7 @@ void cStatusMarkAd::Continue(const char *FileName)
             if ((recs[i].FileName) && (!strcmp(recs[i].FileName,FileName)) &&
                     (recs[i].Pid) && (!recs[i].ChangedbyUser) )
             {
+                dsyslog("markad: resume pid %i",recs[i].Pid);
                 kill(recs[i].Pid,SIGCONT);
             }
         }
@@ -430,6 +462,7 @@ void cStatusMarkAd::Continue(const char *FileName)
         {
             if ((recs[i].Pid) && (!recs[i].ChangedbyUser))
             {
+                dsyslog("markad: resume pid %i",recs[i].Pid);
                 kill(recs[i].Pid,SIGCONT);
             }
         }
diff --git a/plugin/status.h b/plugin/status.h
index 1989a33..b7635b4 100644
--- a/plugin/status.h
+++ b/plugin/status.h
@@ -47,7 +47,7 @@ private:
     void Remove(const char *Name, bool Kill=false);
     void Pause(const char *FileName);
     void Continue(const char *FileName);
-    bool LogoExists(const char *Name);
+    bool LogoExists(const cDevice *Device, const char *FileName);
 protected:
     virtual void Recording(const cDevice *Device, const char *Name, const char *FileName, bool On);
     virtual void Replaying(const cControl *Control, const char *Name, const char *FileName, bool On);
diff --git a/version.h b/version.dist
similarity index 80%
rename from version.h
rename to version.dist
index b0a7f9d..8a6a088 100644
--- a/version.h
+++ b/version.dist
@@ -8,6 +8,6 @@
 #ifndef __version_h_
 #define __version_h_
 
-static const char *VERSION        = "0.1.4";
+static const char *VERSION        = "0.1.5pre";
 
 #endif

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-vdr-dvb/vdr-plugin-markad.git



More information about the pkg-vdr-dvb-changes mailing list