Merge branch 'bug_262_no_more_ask_50hz' into experimental
[enigma2.git] / lib / python / Plugins / Extensions / DVDPlayer / src / servicedvd.cpp
index 074b31850ad723727c8af59e0d9bbcc0ab5a8b96..0372c49719edaf6d223af83fc119e32525535095 100644 (file)
@@ -92,8 +92,9 @@ eServiceDVD::eServiceDVD(eServiceReference ref):
        m_current_trick(0),
        m_pump(eApp, 1)
 {
-       int aspect = DDVD_16_9; 
+       int aspect = DDVD_16_9;
        int policy = DDVD_PAN_SCAN;
+       int policy2 = DDVD_PAN_SCAN;
 
        char tmp[255];
        ssize_t rd;
@@ -130,7 +131,22 @@ eServiceDVD::eServiceDVD(eServiceReference ref):
                close(fd);
        }
 
+#ifdef DDVD_SUPPORTS_16_10_SCALING
+       fd = open("/proc/stb/video/policy2", O_RDONLY);
+       if (fd > -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 +204,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
@@ -679,7 +696,7 @@ RESULT eServiceDVD::setTrickmode(int /*trick*/)
 
 RESULT eServiceDVD::isCurrentlySeekable()
 {
-       return m_state == stRunning;
+       return m_state == stRunning ? 3 : 0;
 }
 
 RESULT eServiceDVD::keyPressed(int key)