Example #1
0
bool VideoOutputVDPAU::Init(int width, int height, float aspect,
                            WId winid, const QRect &win_rect,
                            MythCodecID codec_id)
{
    // Attempt to free up as much video memory as possible
    // only works when using the VDPAU painter for the UI
    MythPainter *painter = GetMythPainter();
    if (painter)
        painter->FreeResources();

    m_win = winid;
    QMutexLocker locker(&m_lock);
    window.SetNeedRepaint(true);
    bool ok = VideoOutput::Init(width, height, aspect, winid, win_rect,codec_id);
    if (db_vdisp_profile)
        db_vdisp_profile->SetVideoRenderer("vdpau");

    InitDisplayMeasurements(width, height, true);
    ParseOptions();
    if (ok) ok = InitRender();
    if (ok) ok = InitBuffers();
    if (!ok)
    {
        TearDown();
        return ok;
    }

    InitPictureAttributes();
    MoveResize();
    LOG(VB_PLAYBACK, LOG_INFO, LOC +
        QString("Created VDPAU context (%1 decode)")
            .arg(codec_is_std(video_codec_id) ? "software" : "GPU"));

    return ok;
}
Example #2
0
SlideSettings::SlideSettings() : VerticalConfigurationGroup()
{
    setLabel(tr("Slideshow"));
    
    HostComboBox *tranBox = new HostComboBox("GalleryTransitionType");
    tranBox->setLabel(tr("Transition"));
    tranBox->setHelpText(tr("Effect to use between slides"));
    
    // Initialise selected transition
    TransitionRegistry availableTransitions(GetMythPainter()->SupportsAnimation());
    TransitionMap transitions = availableTransitions.GetAll();
    QMapIterator<int, Transition*> i(transitions);
    while (i.hasNext())
    {
        i.next();
        tranBox->addSelection(i.value()->objectName(), QString::number(i.key()));
    }
    addChild(tranBox);
    
    HostSpinBox *slide = new HostSpinBox("GallerySlideShowTime", 100, 60000, 100);
    slide->setLabel(tr("Slide Duration (ms)"));
    slide->setHelpText(tr("The time that a slide is displayed (between transitions), "
                          "in milliseconds."));
    addChild(slide);
    
    HostSpinBox *transition = new HostSpinBox("GalleryTransitionTime", 100, 60000, 100);
    transition->setLabel(tr("Transition Duration (ms)"));
    transition->setHelpText(tr("The time that each transition lasts, in milliseconds."));
    addChild(transition);
}
Example #3
0
void ZMEvents::eventVisible(MythUIButtonListItem *item)
{
    if (!item)
        return;

    if (item->HasImage())
        return;

    Event *event = qVariantValue<Event*> (item->GetData());

    if (event)
    {
        QImage image;
        if (ZMClient *zm = ZMClient::get())
        {
            zm->getAnalyseFrame(event, 0, image);
            if (!image.isNull())
            {
                MythImage *mimage = GetMythPainter()->GetFormatImage();
                mimage->Assign(image);
                item->SetImage(mimage);
                mimage->SetChanged();
                mimage->DecrRef();
            }
        }
    }
}
Example #4
0
MythPainter* MythScreenType::GetPainter(void)
{
    if (m_Painter)
        return m_Painter;
    if (m_ScreenStack)
        return m_ScreenStack->GetPainter();
    return GetMythPainter();
}
Example #5
0
MythPainter* MythUIType::GetPainter(void)
{
    if (m_Painter)
        return m_Painter;
    if (m_Parent)
        return m_Parent->GetPainter();
    return GetMythPainter();
}
Example #6
0
void ZMEvents::eventChanged(MythUIButtonListItem *item)
{
    (void) item;

    if (m_eventNoText)
    {
        if (m_eventGrid->GetCount() > 0)
            m_eventNoText->SetText(QString("%1/%2")
                                   .arg(m_eventGrid->GetCurrentPos() + 1).arg(m_eventGrid->GetCount()));
        else
            m_eventNoText->SetText("0/0");
    }

    // update the images for all the visible items
    for (int x = m_eventGrid->GetCurrentPos() - m_eventGrid->GetVisibleCount();
            x < m_eventGrid->GetCurrentPos() + (int)m_eventGrid->GetVisibleCount(); x++)
    {
        if (x < 0 || x > (int)m_eventGrid->GetCount() - 1)
            continue;

        MythUIButtonListItem *gridItem = m_eventGrid->GetItemAt(x);
        if (gridItem && !gridItem->getImage())
        {
            if (x < 0 || x > (int)m_eventList->size() - 1)
                continue;

            Event *event = m_eventList->at(x);
            if (event)
            {
                QImage image;
                if (class ZMClient *zm = ZMClient::get())
                {
                    zm->getAnalyseFrame(event->monitorID,
                                        event->eventID,
                                        0, image);
                    if (!image.isNull())
                    {
                        MythImage *mimage = GetMythPainter()->GetFormatImage();
                        mimage->Assign(image);
                        gridItem->setImage(mimage);
                        mimage->SetChanged();
                    }
                }
            }
        }
    }
}
Example #7
0
/**
 *  \brief  Constructor
 *  \param  parent The screen parent
 *  \param  name The name of the screen
 */
GallerySlideView::GallerySlideView(MythScreenStack *parent, const char *name,
                                   bool editsAllowed)
    : MythScreenType(parent, name),
      m_uiImage(NULL),
      m_uiStatus(NULL),
      m_uiSlideCount(NULL), m_uiCaptionText(NULL), m_uiHideCaptions(NULL),
      m_mgr(ImageManagerFe::getInstance()),
      m_view(NULL),
      m_availableTransitions(GetMythPainter()->SupportsAnimation()),
      m_transition(m_availableTransitions.Select(
                       gCoreContext->GetNumSetting("GalleryTransitionType",
                                                   kBlendTransition))),
      m_updateTransition(),
      m_slides(),
      m_infoList(*this),
      m_slideShowTime(gCoreContext->GetNumSetting("GallerySlideShowTime", 3000)),
      m_playing(false),
      m_suspended(false),
      m_showCaptions(gCoreContext->GetNumSetting("GalleryShowSlideCaptions", true)),
      m_transitioning(false),
      m_editsAllowed(editsAllowed)
{
    // Detect when transitions finish. Queued signal to allow redraw/pulse to
    // complete before handling event.
    connect(&m_transition, SIGNAL(finished()),
            this, SLOT(TransitionComplete()), Qt::QueuedConnection);
    connect(&m_updateTransition, SIGNAL(finished()),
            this, SLOT(TransitionComplete()), Qt::QueuedConnection);

    // Seed random generator for random transitions
    qsrand(QTime::currentTime().msec());

    // Initialise slideshow timer
    m_timer.setSingleShot(true);
    m_timer.setInterval(m_slideShowTime);
    connect(&m_timer, SIGNAL(timeout()), this, SLOT(ShowNextSlide()));
}
Example #8
0
MythPainter* MythScreenStack::GetPainter(void)
{
    return GetMythPainter();
}