Control: tags -1 patch Hello Colin, Hello Debian vdr team,
please find attached a patch to build the xine plugin with newer versions of vdr. The patch is based on the git repository. Here is the head of the changelog: vdr-plugin-xine (0.9.4-12) UNRELEASED; urgency=low * debian/patches/vdr-1.7.33.patch: Use APIVERSUM to determine vdr version to fix FTBFS: 'class cPatPmtParser' has no member named 'PmtPid' (Closes: #709031) (LP: #1198020) * debian/patches/vdr-1.7.40.patch: Apply patch from Lucian Muresan lucianm.AT.users.sourceforge.net to build with newer vdr versions to fix: error: 'vidWin' was not declared in this scope -- Andreas Moog <am...@ubuntu.com> Thu, 28 Nov 2013 23:12:16 +0100 Thanks for considering the patch. -- Andreas Moog, Berliner Str. 29, 36205 Sontra/Germany Ubuntu Developer PGP-encrypted mails preferred (Key-ID: 74DE6624) PGP Fingerprint: 74CD D9FE 5BCB FE0D 13EE 8EEA 61F3 4426 74DE 6624
From ff7538c92e63f44a0c94d45e244f9ef014b0d2f1 Mon Sep 17 00:00:00 2001 From: Andreas Moog <Andreas Moog> Date: Thu, 28 Nov 2013 23:16:42 +0100 Subject: [PATCH 1/2] debian/patches/vdr-1.7.33.patch: Use APIVERSUM to determine vdr version to fix FTBFS: 'class cPatPmtParser' has no member named 'PmtPid' (Closes: #709031) (LP: #1198020) * debian/patches/vdr-1.7.33.patch: Use APIVERSUM to determine vdr version to fix FTBFS: 'class cPatPmtParser' has no member named 'PmtPid' (Closes: #709031) (LP: #1198020) * debian/patches/vdr-1.7.40.patch: Apply patch from Lucian Muresan lucianm.AT.users.sourceforge.net to build with newer vdr versions to fix: error: 'vidWin' was not declared in this scope --- debian/changelog | 11 +++ debian/patches/series | 1 + debian/patches/vdr-1.7.40.patch | 165 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 177 insertions(+) create mode 100644 debian/patches/vdr-1.7.40.patch diff --git a/debian/changelog b/debian/changelog index f6f59e3..9c2318d 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,14 @@ +vdr-plugin-xine (0.9.4-12) UNRELEASED; urgency=low + + * debian/patches/vdr-1.7.33.patch: Use APIVERSUM to determine vdr + version to fix FTBFS: 'class cPatPmtParser' has no member named 'PmtPid' + (Closes: #709031) (LP: #1198020) + * debian/patches/vdr-1.7.40.patch: Apply patch from + Lucian Muresan lucianm.AT.users.sourceforge.net to build with newer + vdr versions to fix: error: 'vidWin' was not declared in this scope + + -- Andreas Moog <am...@ubuntu.com> Thu, 28 Nov 2013 23:12:16 +0100 + vdr-plugin-xine (0.9.4-11) unstable; urgency=low * Build-depend on vdr-dev (>= 2.0.0) diff --git a/debian/patches/series b/debian/patches/series index 98e63ed..306b74e 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -2,3 +2,4 @@ enable-yaepg-support.patch format-strings.patch vdr-1.7.27.patch vdr-1.7.33.patch +vdr-1.7.40.patch diff --git a/debian/patches/vdr-1.7.40.patch b/debian/patches/vdr-1.7.40.patch new file mode 100644 index 0000000..e5d6795 --- /dev/null +++ b/debian/patches/vdr-1.7.40.patch @@ -0,0 +1,165 @@ +Author: Lucian Muresan <luci...@users.sourceforge.net> +Origin: https://patchwork.linuxtv.org/patch/16100/ + +Index: vdr-plugin-xine-0.9.4/xineDevice.c +=================================================================== +--- vdr-plugin-xine-0.9.4.orig/xineDevice.c 2013-11-28 23:06:14.746527860 +0100 ++++ vdr-plugin-xine-0.9.4/xineDevice.c 2013-11-28 23:06:14.742527860 +0100 +@@ -4409,5 +4409,83 @@ + { + return theXineDevice; + } ++#if APIVERSNUM >= 10733 ++ ///< Asks the output device whether it can scale the currently shown video in ++ ///< such a way that it fits into the given Rect, while retaining its proper ++ ///< aspect ratio. If the scaled video doesn't exactly fit into Rect, Alignment ++ ///< is used to determine how to align the actual rectangle with the requested ++ ///< one. The actual rectangle can be smaller, larger or the same size as the ++ ///< given Rect, and its location may differ, depending on the capabilities of ++ ///< the output device, which may not be able to display a scaled video at ++ ///< arbitrary sizes and locations. The device shall, however, do its best to ++ ///< match the requested Rect as closely as possible, preferring a size and ++ ///< location that fits completely into the requested Rect if possible. ++ ///< Returns the rectangle that can actually be used when scaling the video. ++ ///< A skin plugin using this function should rearrange its content according ++ ///< to the rectangle returned from calling this function, and should especially ++ ///< be prepared for cases where the returned rectangle is way off the requested ++ ///< Rect, or even Null. In such cases, the skin may want to fall back to ++ ///< working with full screen video. ++ ///< If this device can't scale the video, a Null rectangle is returned (this ++ ///< is also the default implementation). ++ cRect cXineDevice::CanScaleVideo(const cRect &Rect, int Alignment/* = taCenter*/) ++ { ++ // first implementation: we can always scale, we're a soft device ;-), ignore alignment for now ++ ++ // we need to store the value for the case we have to call ScaleVideo ourselves in vdr-xine ++ vidWinRect = Rect; ++ return vidWinRect; ++ } ++ ++ ///< Scales the currently shown video in such a way that it fits into the given ++ ///< Rect. Rect should be one retrieved through a previous call to ++ ///< CanScaleVideo() (otherwise results may be undefined). ++ ///< Even if video output is scaled, the functions GetVideoSize() and ++ ///< GetOsdSize() must still return the same values as if in full screen mode! ++ ///< If this device can't scale the video, nothing happens. ++ ///< To restore full screen video, call this function with a Null rectangle. ++ void cXineDevice::ScaleVideo(const cRect &Rect/* = cRect::Null*/) ++ { ++ // refresh stored value ++ vidWinRect = Rect; ++ // let our specialized code do the actual resizing / repositioning, get accurate parameters first ++ int videoLeft, videoTop, videoWidth, videoHeight, videoZoomX, videoZoomY, osdWidth, osdHeight; ++ double videoAspect, pixelAspect; ++ m_xineLib.execFuncVideoSize(videoLeft, videoTop, videoWidth, videoHeight, videoZoomX, videoZoomY, &videoAspect); ++ GetOsdSize(osdWidth, osdHeight, pixelAspect); ++ tArea vidWinArea; ++ vidWinArea.x1 = vidWinRect.X(); ++ vidWinArea.y1 = vidWinRect.Y(); ++ vidWinArea.x2 = vidWinRect.X() + vidWinRect.Width(); ++ vidWinArea.y2 = vidWinRect.Y() + vidWinRect.Height(); ++ if (vidWinRect == cRect::Null) { ++ // will just resize to full size ++ vidWinArea.bpp = 0; ++ } else { ++ vidWinArea.bpp = 12; ++ // make corrections ++ double aspectFactor = (double(osdWidth) / double(osdHeight)) / videoAspect; ++ int output_width = vidWinRect.Height() * (videoAspect * aspectFactor); ++ int output_height = vidWinRect.Width() / (videoAspect * aspectFactor); ++ if (double(vidWinRect.Width())/double(vidWinRect.Height()) > videoAspect * aspectFactor) { ++ output_height = vidWinRect.Height(); ++ vidWinArea.x1 += (vidWinRect.Width() - output_width) / 2; ++ } ++ else if (double(vidWinRect.Width())/double(vidWinRect.Height()) < videoAspect * aspectFactor) { ++ output_width = vidWinRect.Width(); ++ vidWinArea.y1 += (vidWinRect.Height() - output_height) / 2; ++ } ++ vidWinArea.x2 = vidWinArea.x1 + output_width; ++ vidWinArea.y2 = vidWinArea.y1 + output_height; ++ } ++ m_xineLib.SetVideoWindow(videoWidth, videoHeight, vidWinArea); ++ } ++ ++ const cRect & cXineDevice::GetScaleRect() ++ { ++ // just return the stored value ++ return vidWinRect; ++ } + ++#endif // APIVERSNUM >= 10733 + }; +Index: vdr-plugin-xine-0.9.4/xineDevice.h +=================================================================== +--- vdr-plugin-xine-0.9.4.orig/xineDevice.h 2013-11-28 23:06:14.746527860 +0100 ++++ vdr-plugin-xine-0.9.4/xineDevice.h 2013-11-28 23:06:14.742527860 +0100 +@@ -162,7 +162,14 @@ + #else + void OnFreeOsd(cOsd *const osd); + #endif +- ++#if APIVERSNUM >= 10733 ++ virtual cRect CanScaleVideo(const cRect &Rect, int Alignment = taCenter); ++ virtual void ScaleVideo(const cRect &Rect = cRect::Null); ++ const cRect & GetScaleRect(); ++ private: ++ cRect vidWinRect; ++ public: ++#endif // APIVERSNUM >= 10733 + cXineLib m_xineLib; + cMutex m_osdMutex; + +Index: vdr-plugin-xine-0.9.4/xineOsd.c +=================================================================== +--- vdr-plugin-xine-0.9.4.orig/xineOsd.c 2013-11-28 23:06:14.746527860 +0100 ++++ vdr-plugin-xine-0.9.4/xineOsd.c 2013-11-28 23:08:24.570528259 +0100 +@@ -105,11 +105,20 @@ + + #else + ++#if APIVERSNUM >= 10733 ++ ++ // scale to the size and position stored by the last call to cDevice::CanScaleVideo ++ m_xineDevice.ScaleVideo(m_xineDevice.GetScaleRect()); ++ ++#else ++ + #ifdef SET_VIDEO_WINDOW + + m_xineLib.SetVideoWindow(maxOsdWidth, maxOsdHeight, vidWin, dontOptimize); + + #endif ++ ++#endif // APIVERSNUM >= 10733 + + int videoLeft = frameLeft; + int videoTop = frameTop; +@@ -175,6 +184,7 @@ + + cXineOsd::~cXineOsd() + { ++ + #if APIVERSNUM < 10509 + HideOsd(); + #else +@@ -410,12 +420,20 @@ + int maxOsdWidth, maxOsdHeight; + GetMaxOsdSize(maxOsdWidth, maxOsdHeight); + ++#if APIVERSNUM >= 10733 ++ ++ // scale to the size and position stored by the last call to cDevice::CanScaleVideo ++ m_xineDevice.ScaleVideo(m_xineDevice.GetScaleRect()); ++ ++#else + #ifdef SET_VIDEO_WINDOW + + m_xineLib.SetVideoWindow(maxOsdWidth, maxOsdHeight, vidWin); + + #endif + ++#endif // APIVERSUM >= 10733 ++ + int videoLeft = -1; + int videoTop = -1; + int videoWidth = -1; -- 1.8.4.4
signature.asc
Description: OpenPGP digital signature