summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--HISTORY1
-rw-r--r--dxr3spudecoder.c8
-rw-r--r--dxr3spudecoder.h1
3 files changed, 9 insertions, 1 deletions
diff --git a/HISTORY b/HISTORY
index 0bf87f0..0507317 100644
--- a/HISTORY
+++ b/HISTORY
@@ -290,3 +290,4 @@ NOTE: I havent found time to include all of the languages, will be done in pre2
- sync SPU decoder with VDR 1.3.23 (Ville Skyttä)
- register only needed ffmpeg codec(s) (Marco Schlüßler)
- fix crash at exit (Marco Schlüßler)
+- add support for mandatory subtitles (Marco Schlüßler)
diff --git a/dxr3spudecoder.c b/dxr3spudecoder.c
index 8b09524..4824e6c 100644
--- a/dxr3spudecoder.c
+++ b/dxr3spudecoder.c
@@ -181,6 +181,8 @@ bool cDxr3SpuBitmap::getMinSize(const aDxr3SpuPalDescr paldescr,
<< size.x2 << ", " << size.y2 << ")\n";
}
*/
+ if (size.x1 > size.x2 || size.y1 > size.y2)
+ return false;
return ret;
}
@@ -266,6 +268,7 @@ cDxr3SpuDecoder::cDxr3SpuDecoder()
spu = NULL;
osd = NULL;
spubmp = NULL;
+ allowedShow = true;
}
// ==================================
@@ -302,6 +305,9 @@ void cDxr3SpuDecoder::processSPU(uint32_t pts, uint8_t * buf)
prev_DCSQ_offset = 0;
clean = true;
+#if VDRVERSNUM >= 10318
+ allowedShow = AllowedShow;
+#endif
}
// ==================================
@@ -647,7 +653,7 @@ int cDxr3SpuDecoder::setTime(uint32_t pts)
state = spSHOW;
}
- if (state == spSHOW || state == spMENU)
+ if ((state == spSHOW && allowedShow) || state == spMENU)
{
Draw();
}
diff --git a/dxr3spudecoder.h b/dxr3spudecoder.h
index d44040a..e7ea9ab 100644
--- a/dxr3spudecoder.h
+++ b/dxr3spudecoder.h
@@ -131,6 +131,7 @@ private:
uint32_t spupts;
bool clean;
bool ready;
+ bool allowedShow;
enum spFlag
{