Changeset 14907


Ignore:
Timestamp:
03/24/12 17:19:48 (10 years ago)
Author:
nit
Message:

[titan] update dvd player

Location:
titan
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • titan/plugins/dvdplayer/dvdplay.h

    r14891 r14907  
    88        char* file = NULL, *tmppolicy = NULL;
    99        struct skin* playinfobar = getscreen("playinfobar");
    10        
     10
    1111        int skip13 = getconfigint("skip13", NULL);
    1212        int skip46 = getconfigint("skip46", NULL);
     
    2525
    2626        tmpstr = ostrcat(file, "", 1, 0); file = NULL;
    27         file = screendir(startdir, NULL, basename(tmpstr), NULL, NULL, NULL, 0, _("SELECT"), 0, NULL, 0, NULL, 0, 90, 1, 90, 1, 0);
     27        file = screendir(startdir, NULL, basename(tmpstr), NULL, NULL, NULL, 0, _("SELECT"), 0, NULL, 0, NULL, 0, 90, 1, 90, 1, 1);
    2828        free(tmpstr); tmpstr = NULL;
    2929
     
    7171                        while(dvdisplaying())
    7272                        {
    73                                 rcret = waitrc(playinfobar, 1000, 0);
     73                                dvdgotmessage();
     74                                rcret = waitrc(playinfobar, 100, 0);
     75                                dvdkeypress(rcret);
    7476                                playinfobarcount++;
    7577                                if(playinfobarstatus > 0)
    7678                                        screenplayinfobar(file, 0, playertype, flag);
    77                                 if(playinfobarstatus == 1 && playinfobarcount >= getconfigint("infobartimeout", NULL))
     79                                if(playinfobarstatus == 1 && playinfobarcount >= getconfigint("infobartimeout", NULL) * 10)
    7880                                {
    7981                                        playinfobarstatus = 0;
    8082                                        screenplayinfobar(NULL, 1, playertype, flag);
    8183                                }
     84
     85                                if(rcret == RCTIMEOUT) continue;
    8286
    8387                                if(rcret == getrcconfigint("rcyellow", NULL))
     
    9397                                        playrcblue(file, playinfobarstatus, playertype, flag);
    9498                                       
    95                                 if(rcret == getrcconfigint("rcok", NULL))
    96                                         playrcok(file, playinfobarstatus, playertype, flag);
     99                                //if(rcret == getrcconfigint("rcok", NULL))
     100                                //      playrcok(file, playinfobarstatus, playertype, flag);
    97101                               
    98102                                if(rcret == getrcconfigint("rcred", NULL))
     
    121125                                        playrcplay(file, &playinfobarstatus, &playinfobarcount, playertype, flag);
    122126
    123                                 if(rcret == getrcconfigint("rcleft", NULL))
    124                                         playrcjumpr(file, 60, &playinfobarstatus, &playinfobarcount, playertype, flag);
    125                                
    126127                                if(rcret == getrcconfigint("rc1", NULL))
    127128                                        playrcjumpr(file, skip13, &playinfobarstatus, &playinfobarcount, playertype, flag);
     
    132133                                if(rcret == getrcconfigint("rc7", NULL))
    133134                                        playrcjumpr(file, skip79, &playinfobarstatus, &playinfobarcount, playertype, flag);
    134                                
    135                                 if(rcret == getrcconfigint("rcright", NULL))
    136                                         playrcjumpf(file, 60, &playinfobarstatus, &playinfobarcount, playertype, flag);
    137135                               
    138136                                if(rcret == getrcconfigint("rc3", NULL))
  • titan/titan/dvdplayer.h

    r14892 r14907  
    66struct ddvd_resume resumeinfo;
    77struct stimerthread* dvdtimerthread = NULL;
     8struct fb* dvdskinfb = NULL;
    89#endif
    910
     
    1314
    1415#ifdef DVDPLAYER
    15         ddvd_run(ddvdconfig);
     16        if(ddvdconfig != NULL)
     17        {
     18                ddvd_run(ddvdconfig);
     19                ddvd_close(ddvdconfig);
     20        }
     21       
     22        ddvdconfig = NULL;
    1623        dvdtimerthread = NULL;
     24        delfb("dvdskinfb");
     25        dvdskinfb = NULL;
     26        videocontinue(status.aktservice->videodev);
     27        audioplay(status.aktservice->audiodev);
    1728#endif
    1829
     
    2839        char* tmpstr = NULL;
    2940
     41        if(ddvdconfig != NULL)
     42        {
     43                debug(333, "dvdplayer allready running");
     44                dvdstop();
     45        }
     46
    3047        if(filename == NULL) return 1;
     48       
     49        status.playercan = 0x7FFF;
    3150
    3251        ddvdconfig = ddvd_create();
     52        if(ddvdconfig == NULL) return 1;
     53       
    3354        ddvd_set_dvd_path(ddvdconfig, filename);
    3455        ddvd_set_ac3thru(ddvdconfig, 0);
     
    3960                tmpstr += 3;
    4061                ddvd_set_language(ddvdconfig, tmpstr);
     62                tmpstr -= 3;
    4163        }
    4264        free(tmpstr); tmpstr = NULL;
     
    6991#warning please update libdreamdvd for 16:10 scaling support!
    7092#endif
     93        ddvd_set_spu(ddvdconfig, -1);
     94        if(dvdsetfb() != 0)
     95        {
     96                ddvd_close(ddvdconfig);
     97                ddvdconfig = NULL;
     98                err("can't set dvdskinfb");
     99                return 1;
     100        }
    71101
    72102        dvdtimerthread = addtimer(&dvdthread, START, 1000, 1, NULL, NULL, NULL);
    73         usleep(100000);
    74         dvdpause();
    75         return 0;
     103        sleep(1);
     104        if(dvdtimerthread != NULL)
     105                return 0;
     106        else
     107                return 1;
    76108#endif
    77109        return 1;
     
    81113{
    82114#ifdef DVDPLAYER
    83         switch(ddvd_get_next_message(ddvdconfig, 1))
     115        if(ddvdconfig == NULL) return;
     116        switch(ddvd_get_next_message(ddvdconfig, 0))
    84117        {
    85118                case DDVD_COLORTABLE_UPDATE:
     
    110143                {
    111144                        debug(333, "DVD_SCREEN_UPDATE");
    112 /*
    113                         if (m_subtitle_widget) {
     145
     146                        if(dvdskinfb != NULL)
     147                        {
    114148                                int x1 = 0, x2 = 0, y1 = 0, y2 = 0;
    115                                 int x_offset = 0, y_offset = 0, width = 720, height = 576;
     149                                int x_offset = 0, y_offset = 0, width = dvdskinfb->width, height = dvdskinfb->height;
    116150                                ddvd_get_last_blit_area(ddvdconfig, &x1, &x2, &y1, &y2);
    117151                               
    118152#ifdef DDVD_SUPPORTS_GET_BLIT_DESTINATION
    119                                 ddvd_get_blit_destination(ddvdconfig, &x_offset, &y_offset, &width, &height);
     153                                //ddvd_get_blit_destination(ddvdconfig, &x_offset, &y_offset, &width, &height);
    120154                                debug(333, "values got from ddvd: %d %d %d %d", x_offset, y_offset, width, height);
    121155
     
    124158                                height -= y_offset * 2;
    125159#endif
    126                                 eRect dest(x_offset, y_offset, width, height);
    127 
    128                                 if (dest.width() && dest.height())
    129                                         m_subtitle_widget->setPixmap(m_pixmap, eRect(x1, y1, (x2-x1)+1, (y2-y1)+1), dest);
     160                                blitfb2(dvdskinfb, 0);
     161                        //eRect dest(x_offset, y_offset, width, height);
     162
     163                        //if (dest.width() && dest.height())
     164                        //      m_subtitle_widget->setPixmap(m_pixmap, eRect(x1, y1, (x2-x1)+1, (y2-y1)+1), dest);
    130165                        }
    131 */
    132166                        break;
    133167                }
     
    304338        {
    305339                ddvd_send_key(ddvdconfig, DDVD_KEY_EXIT);
    306                 ddvd_close(ddvdconfig);
    307                 ddvdconfig = NULL;
     340                sleep(1);
    308341        }
    309342#endif
     
    552585}
    553586
    554 int dvbsetfb()
    555 {
     587int dvdsetfb()
     588{
     589        int width = 720, height = 576, colbytes = 4;
     590
     591        if(dvdskinfb == NULL)
     592                dvdskinfb = addfb("dvdskinfb", 1001, width, height, colbytes, -1, skinfb->fb, width * height * colbytes);
     593
     594        if(dvdskinfb == NULL) return 1;
    556595#ifdef DVDPLAYER
    557596        if(ddvdconfig == NULL) return 1;
    558597#ifdef DDVD_SUPPORTS_GET_BLIT_DESTINATION
    559         ddvd_set_lfb_ex(ddvdconfig, skinfb->fb, skinfb->width, skinfb->height, skinfb->colbytes, skinfb->pitch, 1);
     598        ddvd_set_lfb_ex(ddvdconfig, dvdskinfb->fb, dvdskinfb->width, dvdskinfb->height, dvdskinfb->colbytes, dvdskinfb->pitch, 1);
    560599#else
    561         ddvd_set_lfb(ddvdconfig, skinfb->fb, skinfb->width, skinfb->height, skinfb->colbytes, skinfb->pitch);
     600        ddvd_set_lfb(ddvdconfig, dvdskinfb->fb, dvdskinfb->width, dvdskinfb->height, dvdskinfb->colbytes, dvdskinfb->pitch);
    562601#warning please update libdreamdvd for fast scaling
    563602#endif
Note: See TracChangeset for help on using the changeset viewer.