Ticket #5734: 5734_transcode_profiles_v1.patch

File 5734_transcode_profiles_v1.patch, 6.6 KB (added by Roo, 12 years ago)

Trunk patch, lightly tested againt r18188 but updated to 18466.

  • libs/libmythtv/programinfo.h

     
    228228    void ApplyRecordRecTitleChange(const QString &newTitle,
    229229                                   const QString &newSubtitle);
    230230    void ApplyTranscoderProfileChange(QString);
     231    void ApplyTranscoderProfileChangeById(int);
    231232
    232233    // Quick gets
    233234    bool SetRecordBasename(QString basename);
  • libs/libmythtv/programinfo.cpp

     
    12631263    subtitle = newSubtitle;
    12641264}
    12651265
     1266/* \fn ProgramInfo::ApplyTranscoderProfileChangeById(int id)
     1267 * \brief Sets the transcoder profile for a recording
     1268 * \param profileid is the 'id' field from recordingprofiles table.
     1269 */
     1270void ProgramInfo::ApplyTranscoderProfileChangeById(int id)
     1271{
     1272    MSqlQuery query(MSqlQuery::InitCon());
     1273
     1274    query.prepare("UPDATE recorded "
     1275            "SET transcoder = :PROFILEID "
     1276            "WHERE chanid = :CHANID "
     1277            "AND starttime = :START");
     1278    query.bindValue(":PROFILEID",  id);
     1279    query.bindValue(":CHANID",  chanid);
     1280    query.bindValue(":START",  recstartts);
     1281
     1282    if (!query.exec())
     1283        MythDB::DBError(LOC + "unable to update transcoder "
     1284                "in recorded table", query);
     1285}
     1286
    12661287/* \fn ProgramInfo::ApplyTranscoderProfileChange(QString profile)
    12671288 * \brief Sets the transcoder profile for a recording
    12681289 * \param profile Descriptive name of the profile. ie: Autodetect
  • programs/mythfrontend/playbackbox.cpp

     
    5252#include "util.h"
    5353#include "x11colors.h"
    5454#include "mythuihelper.h"
     55#include "libmythdb/mythdb.h"
    5556
    5657#define LOC QString("PlaybackBox: ")
    5758#define LOC_ERR QString("PlaybackBox Error: ")
     
    33623363    if (!curitem)
    33633364        return;
    33643365
     3366    int buttonCount = kDialogCodeListStart;
     3367    m_transcodeProfileMap.clear();
     3368
    33653369    popup = new MythPopupBox(gContext->GetMainWindow(), drawPopupSolid,
    33663370                             drawPopupFgColor, drawPopupBgColor,
    33673371                             drawPopupSelColor, "transcode popup");
     
    33703374
    33713375    QAbstractButton *defaultButton;
    33723376
    3373     defaultButton = popup->addButton(tr("Default"), this,
    3374                                  SLOT(doBeginTranscoding()));
    3375     popup->addButton(tr("Autodetect"), this,
    3376                      SLOT(changeProfileAndTranscodeAuto()));
    3377     popup->addButton(tr("High Quality"), this,
    3378                      SLOT(changeProfileAndTranscodeHigh()));
    3379     popup->addButton(tr("Medium Quality"), this,
    3380                      SLOT(changeProfileAndTranscodeMedium()));
    3381     popup->addButton(tr("Low Quality"), this,
    3382                      SLOT(changeProfileAndTranscodeLow()));
     3377    m_transcodeProfileMap.insert(buttonCount++, -1);
     3378    defaultButton = popup->addButton( tr("Default") );
    33833379
    3384     popup->ShowPopup(this, SLOT(PopupDone(int)));
     3380    m_transcodeProfileMap.insert(buttonCount++, 0);
     3381    popup->addButton( tr("Autodetect") );
     3382
     3383    MSqlQuery query(MSqlQuery::InitCon());
     3384    query.prepare("SELECT r.name, r.id "
     3385            "FROM recordingprofiles r, profilegroups p "
     3386            "WHERE p.name = 'Transcoders' "
     3387            "AND r.profilegroup = p.id "
     3388            "AND r.name != 'RTjpeg/MPEG4' "
     3389            "AND r.name != 'MPEG2' ");
     3390
     3391    if (!query.exec())
     3392    {
     3393        MythDB::DBError(LOC + "unable to query transcoders", query);
     3394        return;
     3395    }
     3396
     3397    while (query.next())
     3398    {
     3399        QString transcoder_name = query.value(0).toString();
     3400        int transcoder_id = query.value(1).toInt();
     3401
     3402        // Translatable strings for known profiles
     3403        m_transcodeProfileMap.insert(buttonCount++, transcoder_id);
     3404        if (transcoder_name == "High Quality")
     3405            popup->addButton( tr("High Quality") );
     3406        else if (transcoder_name == "Medium Quality")
     3407            popup->addButton( tr("Medium Quality") );
     3408        else if (transcoder_name == "Low Quality")
     3409            popup->addButton( tr("Low Quality") );
     3410        else
     3411            popup->addButton( transcoder_name );
     3412    }
     3413
     3414    popup->ShowPopup(this, SLOT(transcodePopupDone(int)));
    33853415    defaultButton->setFocus();
    33863416
    33873417    expectingPopup = true;
    33883418}
    33893419
    3390 void PlaybackBox::changeProfileAndTranscode(QString profile)
     3420void PlaybackBox::transcodePopupDone(int id)
    33913421{
    3392     curitem->ApplyTranscoderProfileChange(profile);
    3393     doBeginTranscoding();
     3422    if ((MythDialog::Rejected == id) && expectingPopup)
     3423    {
     3424        cancelPopup();
     3425        return;
     3426    }
     3427
     3428    if (m_transcodeProfileMap.contains(id))
     3429    {
     3430        if (m_transcodeProfileMap.value(id) >= 0)
     3431        {
     3432            curitem->ApplyTranscoderProfileChangeById(m_transcodeProfileMap.value(id));
     3433        }
     3434        doBeginTranscoding();
     3435    }
    33943436}
    33953437
    33963438void PlaybackBox::showActionPopup(ProgramInfo *program)
  • programs/mythfrontend/playbackbox.h

     
    167167    void showRecordingPopup();
    168168    void showJobPopup();
    169169    void showTranscodingProfiles();
    170     void changeProfileAndTranscode(QString profile);
    171     void changeProfileAndTranscodeAuto()
    172              { changeProfileAndTranscode("Autodetect"); }
    173     void changeProfileAndTranscodeHigh()
    174              { changeProfileAndTranscode("High Quality"); }
    175     void changeProfileAndTranscodeMedium()
    176              { changeProfileAndTranscode("Medium Quality"); }
    177     void changeProfileAndTranscodeLow()
    178              { changeProfileAndTranscode("Low Quality"); }
    179170    void showStoragePopup();
    180171    void showPlaylistPopup();
    181172    void showPlaylistJobPopup();
     
    207198    void togglePreserveEpisode(bool turnOn);
    208199
    209200    void PopupDone(int r);
     201    void transcodePopupDone(int id);
    210202    void toggleView(ViewMask itemMask, bool setOn);
    211203    void toggleTitleView(bool setOn)     { toggleView(VIEW_TITLES, setOn); }
    212204    void toggleCategoryView(bool setOn)  { toggleView(VIEW_CATEGORIES, setOn); }
     
    510502    Q3ValueList<QString> networkControlCommands;
    511503    bool                underNetworkControl;
    512504   
     505    // Transcoding Profiles Variables//////////////////////////////////////////
     506    QMap<int,int>       m_transcodeProfileMap;
     507
    513508    TV                  *m_player;
    514509};
    515510