Ticket #4386: mm_stretch.1.patch

File mm_stretch.1.patch, 8.4 KB (added by Mark Spieth, 13 years ago)
  • mythmusic/mythmusic/playbackbox.cpp

     
    9999    if (gContext->GetNumSetting("MythControlsVolume", 0))
    100100    {
    101101        volume_control = true;
    102         volume_display_timer->start(2000);
    103         connect(volume_display_timer, SIGNAL(timeout()),
    104                 this, SLOT(hideVolume()));
    105102    }
     103    volume_display_timer->start(2000);
     104    connect(volume_display_timer, SIGNAL(timeout()),
     105            this, SLOT(hideVolume()));
    106106
    107107    setShuffleMode(gPlayer->getShuffleMode());
    108108
     
    352352            changeVolume(false);
    353353        else if (action == "VOLUMEUP")
    354354            changeVolume(true);
     355        else if (action == "SPEEDDOWN")
     356            changeSpeed(false);
     357        else if (action == "SPEEDUP")
     358            changeSpeed(true);
    355359        else if (action == "MUTE")
    356360            toggleMute();
    357361        else if (action == "MENU" && visualizer_status != 2)
     
    11511155    }
    11521156}
    11531157
     1158void PlaybackBoxMusic::changeSpeed(bool up_or_down)
     1159{
     1160    if (gPlayer->getOutput())
     1161    {
     1162        if (up_or_down)
     1163            gPlayer->incSpeed();
     1164        else
     1165            gPlayer->decSpeed();
     1166        showSpeed(true);
     1167    }
     1168}
     1169
    11541170void PlaybackBoxMusic::toggleMute()
    11551171{
    11561172    if (volume_control && gPlayer->getOutput())
     
    11721188void PlaybackBoxMusic::showVolume(bool on_or_off)
    11731189{
    11741190    float volume_level;
     1191    if (speed_status && speed_status->getOrder() != -1)
     1192    {
     1193        speed_status->SetOrder(-1);
     1194        speed_status->refresh();
     1195    }
    11751196    if (volume_control && gPlayer->getOutput())
    11761197    {
    11771198        if (volume_status)
     
    12091230    }
    12101231}
    12111232
     1233void PlaybackBoxMusic::showSpeed(bool on_or_off)
     1234{
     1235    if (speed_status)
     1236    {
     1237        if (volume_status && (volume_status->getOrder() != -1))
     1238        {
     1239            volume_status->SetOrder(-1);
     1240            volume_status->refresh();
     1241        }
     1242        if (on_or_off)
     1243        {
     1244            QString speed_text;
     1245            float playSpeed = gPlayer->getSpeed();
     1246            speed_text.sprintf("x%4.2f",playSpeed);
     1247            speed_status->SetText(speed_text);
     1248            speed_status->SetOrder(0);
     1249            speed_status->refresh();
     1250            volume_display_timer->changeInterval(2000);
     1251        }
     1252    }
     1253}
     1254
    12121255void PlaybackBoxMusic::resetTimer()
    12131256{
    12141257    if (visual_mode_delay > 0)
     
    21532196        volume_status->SetTotal(100);
    21542197        volume_status->SetOrder(-1);
    21552198    }
     2199    speed_status = getUITextType("speed_status");
     2200    if (speed_status)
     2201    {
     2202        speed_status->SetText("");
     2203        speed_status->SetOrder(-1);
     2204    }
    21562205    visual_blackhole = getUIBlackHoleType("visual_blackhole");
    21572206
    21582207    //  Buttons
  • mythmusic/mythmusic/music-ui.xml

     
    329329                <orientation>BottomToTop</orientation>
    330330            </statusbar>
    331331        </container>
     332        <container name="speeddisplay">
     333            <area>690,385,105,25</area>
     334            <textarea name="speed_status" draworder="-1" align="left">
     335                <font>infotext</font>
     336                <area>0,0,105,25</area>
     337            </textarea>
     338        </container>
    332339
    333340        <!--
    334341            All the buttons
  • mythmusic/mythmusic/miniplayer.cpp

     
    252252                increaseRating();
    253253            else if (action == "THMBDOWN")
    254254                decreaseRating();
     255            else if (action == "SPEEDDOWN")
     256            {
     257                gPlayer->decSpeed();
     258                showSpeed();
     259            }
     260            else if (action == "SPEEDUP")
     261            {
     262                gPlayer->incSpeed();
     263                showSpeed();
     264            }
    255265            else if (action == "1")
    256266            {
    257267                gPlayer->toggleShuffleMode();
     
    681691        m_volText->SetText(QString(m_volFormat).arg((int) level));
    682692    }
    683693}
     694
     695void MiniPlayer::showSpeed(void)
     696{
     697    float level = (float)gPlayer->getSpeed();
     698
     699    if (m_infoText)
     700    {
     701        m_infoTimer->stop();
     702        QString msg = tr("Speed: ");
     703        QString param;
     704        param.sprintf("x%4.2f",level);
     705
     706        msg += param;
     707
     708        m_showingInfo = true;
     709        m_infoText->SetText(msg);
     710        m_infoTimer->start(5000, true);
     711    }
     712
     713    if (class LCD *lcd = LCD::Get())
     714    {
     715        // TBD
     716        //lcd->switchToVolume("Music");
     717        //lcd->setSpeedFactor(level);
     718    }
     719
     720}
  • mythmusic/mythmusic/musicplayer.h

     
    3232    void unMute(void) {};
    3333    void setVolume(void) {};
    3434
     35    void setSpeed(float speed);
     36    void incSpeed();
     37    void decSpeed();
     38    float getSpeed() { return m_playSpeed; }
     39
    3540    void play(void);
    3641    void stop(bool stopAll = false);
    3742    void pause(void);
     
    133138    ShuffleMode  m_shuffleMode;
    134139    RepeatMode   m_repeatMode;
    135140    ResumeMode   m_resumeMode;
     141
     142    float        m_playSpeed;
    136143};
    137144
    138145// This global variable contains the MusicPlayer instance for the application
  • mythmusic/mythmusic/main.cpp

     
    386386    REG_KEY("Music", "FILTER",     "Filter All My Music",        "F");
    387387    REG_KEY("Music", "INCSEARCH",     "Show incremental search dialog",     "Ctrl+S");
    388388    REG_KEY("Music", "INCSEARCHNEXT", "Incremental search find next match", "Ctrl+N");
     389    REG_KEY("Music", "SPEEDUP",    "Increase Play Speed",   "W");
     390    REG_KEY("Music", "SPEEDDOWN",  "Decrease Play Speed",   "X");
    389391
    390392    REG_MEDIA_HANDLER("MythMusic Media Handler 1/2", "", "", handleMedia,
    391393                      MEDIATYPE_AUDIO | MEDIATYPE_MIXED, QString::null);
  • mythmusic/mythmusic/musicplayer.cpp

     
    5353    m_wasPlaying = true;
    5454    m_updatedLastplay = false;
    5555
     56    m_playSpeed = 1.0;
     57
    5658    QString playmode = gContext->GetSetting("PlayMode", "none");
    5759    if (playmode.lower() == "random")
    5860        setShuffleMode(SHUFFLE_RANDOM);
     
    803805
    804806    m_updatedLastplay = true;
    805807}
     808
     809void MusicPlayer::setSpeed(float newspeed)
     810{
     811    if (m_output)
     812    {
     813        m_playSpeed = newspeed;
     814        m_output->SetStretchFactor(m_playSpeed);
     815    }
     816}
     817
     818void MusicPlayer::incSpeed()
     819{
     820    m_playSpeed += 0.05;
     821    setSpeed(m_playSpeed);
     822}
     823
     824void MusicPlayer::decSpeed()
     825{
     826    m_playSpeed -= 0.05;
     827    setSpeed(m_playSpeed);
     828}
  • mythmusic/mythmusic/playbackbox.h

     
    6767    void visEnable();
    6868    void bannerDisable();
    6969    void changeVolume(bool up_or_down);
     70    void changeSpeed(bool up_or_down);
    7071    void toggleMute();
    7172    void resetTimer();
    7273    void hideVolume(){showVolume(false);}
    7374    void showVolume(bool on_or_off);
     75    void showSpeed(bool on_or_off);
    7476    void showProgressBar();
    7577    void wipeTrackInfo();
    7678    void toggleFullBlankVisualizer();
     
    191193
    192194    UIStatusBarType       *volume_status;
    193195    UIStatusBarType       *progress_bar;
     196    UITextType            *speed_status;
    194197
    195198    UIPushButtonType      *prev_button;
    196199    UIPushButtonType      *rew_button;
  • mythmusic/mythmusic/miniplayer.h

     
    4343    void    showShuffleMode(void);
    4444    void    showRepeatMode(void);
    4545    void    showVolume(void);
     46    void    showSpeed(void);
    4647
    4748    int           m_currTime, m_maxTime;
    4849