X-Git-Url: http://code.vuplus.com/gitweb/?p=vuplus_dvbapp;a=blobdiff_plain;f=lib%2Fpython%2FPlugins%2FExtensions%2FDVDPlayer%2Fsrc%2Fservicedvd.cpp;h=2ba53927f6b62a89afd4cdf540aeb6bcea4db6b3;hp=074b31850ad723727c8af59e0d9bbcc0ab5a8b96;hb=0b29614d57e24f5217e052998808c05ac841e353;hpb=5a9972a248f0a75bb131af270b62673a497ec551 diff --git a/lib/python/Plugins/Extensions/DVDPlayer/src/servicedvd.cpp b/lib/python/Plugins/Extensions/DVDPlayer/src/servicedvd.cpp index 074b318..2ba5392 100644 --- a/lib/python/Plugins/Extensions/DVDPlayer/src/servicedvd.cpp +++ b/lib/python/Plugins/Extensions/DVDPlayer/src/servicedvd.cpp @@ -85,15 +85,13 @@ RESULT eServiceFactoryDVD::offlineOperations(const eServiceReference &, ePtr -1) + { + rd = read(fd, tmp, 255); + if (rd > 6 && !strncmp(tmp, "bestfit", 7)) + policy2 = DDVD_JUSTSCALE; + else if (rd > 8 && !strncmp(tmp, "letterbox", 9)) + policy2 = DDVD_LETTERBOX; + close(fd); + } + ddvd_set_video_ex(m_ddvdconfig, aspect, policy, policy2, DDVD_PAL /*unused*/); +#else ddvd_set_video(m_ddvdconfig, aspect, policy, DDVD_PAL /*unused*/); +#warning please update libdreamdvd for 16:10 scaling support! +#endif CONNECT(m_sn->activated, eServiceDVD::gotMessage); CONNECT(m_pump.recv_msg, eServiceDVD::gotThreadMessage); @@ -188,6 +201,7 @@ void eServiceDVD::gotMessage(int /*what*/) #ifdef DDVD_SUPPORTS_GET_BLIT_DESTINATION ddvd_get_blit_destination(m_ddvdconfig, &x_offset, &y_offset, &width, &height); eDebug("values got from ddvd: %d %d %d %d", x_offset, y_offset, width, height); + y_offset = -y_offset; width -= x_offset * 2; height -= y_offset * 2; #endif @@ -292,6 +306,32 @@ void eServiceDVD::gotMessage(int /*what*/) m_event(this, evSeekableStatusChanged); m_event(this, evUser+12); break; +#ifdef DDVD_SUPPORTS_PICTURE_INFO + case DDVD_SIZE_CHANGED: + { + int changed = m_width != -1 && m_height != -1 && m_aspect != -1; + ddvd_get_last_size(m_ddvdconfig, &m_width, &m_height, &m_aspect); + if (changed) + m_event((iPlayableService*)this, evVideoSizeChanged); + break; + } + case DDVD_PROGRESSIVE_CHANGED: + { + int changed = m_progressive != -1; + ddvd_get_last_progressive(m_ddvdconfig, &m_progressive); + if (changed) + m_event((iPlayableService*)this, evVideoProgressiveChanged); + break; + } + case DDVD_FRAMERATE_CHANGED: + { + int changed = m_framerate != -1; + ddvd_get_last_framerate(m_ddvdconfig, &m_framerate); + if (changed) + m_event((iPlayableService*)this, evVideoFramerateChanged); + break; + } +#endif default: break; } @@ -483,6 +523,18 @@ int eServiceDVD::getInfo(int w) case sUser+7: case sUser+8: return resIsPyObject; +#ifdef DDVD_SUPPORTS_PICTURE_INFO + case sVideoWidth: + return m_width; + case sVideoHeight: + return m_height; + case sAspect: + return m_aspect; + case sProgressive: + return m_progressive; + case sFrameRate: + return m_framerate; +#endif default: return resNA; } @@ -679,7 +731,7 @@ RESULT eServiceDVD::setTrickmode(int /*trick*/) RESULT eServiceDVD::isCurrentlySeekable() { - return m_state == stRunning; + return m_state == stRunning ? 3 : 0; } RESULT eServiceDVD::keyPressed(int key)