void VolumeFaderEffect::setParameterValue(const EffectParameter &p, const QVariant &newValue)
{
    K_XT(VolumeFaderEffect);

    const int parameterId = p.id();
    debug() << Q_FUNC_INFO << parameterId << newValue;
    switch (static_cast<ParameterIds>(parameterId)) {
    case VolumeParameter:
        setVolume(newValue.toDouble());
        break;
    case FadeCurveParameter:
        setFadeCurve(static_cast<Phonon::VolumeFaderEffect::FadeCurve>(newValue.toInt()));
        break;
    case FadeToParameter:
        xt->m_parameters.fadeTo = newValue.toDouble();
        break;
    case FadeTimeParameter:
        xt->m_parameters.fadeTime = newValue.toInt();
        break;
    case StartFadeParameter:
        if (newValue.toBool()) {
            fadeTo(xt->m_parameters.fadeTo, xt->m_parameters.fadeTime);
        }
        break;
    default:
        qWarning() << "request for unknown parameter " << parameterId;
        break;
    }
}
void VolumeFaderEffect::setFadeCurve(Phonon::VolumeFaderEffect::FadeCurve curve)
{
    K_XT(VolumeFaderEffect);

    //debug() << Q_FUNC_INFO << curve;
    xt->m_parameters.fadeCurve = curve;
}
void VolumeFaderEffect::setVolume(float volume)
{
    K_XT(VolumeFaderEffect);

    //debug() << Q_FUNC_INFO << volume;
    xt->m_parameters.currentVolume = volume;
}
void VolumeFaderEffect::fadeTo(float volume, int fadeTime)
{
    K_XT(VolumeFaderEffect);

    //debug() << Q_FUNC_INFO << volume << fadeTime;
    xt->m_parameters.fadeTo = volume;
    xt->m_parameters.fadeTime = fadeTime;
    if (xt->m_pluginApi) {
        xt->m_pluginApi->set_parameters(xt->m_plugin, &xt->m_parameters);
    }
}
Exemple #5
0
void AudioOutput::aboutToChangeXineEngine()
{
    K_XT(AudioOutput);
    if (xt->m_audioPort) {
        AudioOutputXT *xt2 = new AudioOutputXT;
        xt2->m_xine = xt->m_xine;
        xt2->m_audioPort = xt->m_audioPort;
        xt->m_audioPort = 0;
        KeepReference<> *keep = new KeepReference<>;
        keep->addObject(xt2);
        keep->ready();
    }
}
Exemple #6
0
void VideoDataOutput::setFrontendObject(Experimental::AbstractVideoDataOutput *x)
{
    K_XT(VideoDataOutput);
    if (xt->setFrontendObject(x)) {
        // we need to recreate and rewire the output
        SourceNode *src = source();
        if (src) {
            QList<WireCall> wireCall;
            wireCall << WireCall(src, this);
            QCoreApplication::postEvent(XineThread::instance(), new RewireEvent(wireCall, QList<WireCall>()));
        }
    }
}
Exemple #7
0
void VideoDataOutput::aboutToChangeXineEngine()
{
    K_XT(VideoDataOutput);
    if (xt->m_videoPort) {
        VideoDataOutputXT *xt2 = new VideoDataOutputXT();
        xt2->m_xine = xt->m_xine;
        xt2->m_videoPort = xt->m_videoPort;
        xt2->m_needNewPort = false;
        xt->m_needNewPort = true;
        xt->m_videoPort = 0;
        KeepReference<> *keep = new KeepReference<>;
        keep->addObject(xt2);
        keep->ready();
    }
}
Exemple #8
0
bool AudioOutput::setOutputDevice(const AudioOutputDevice &newDevice)
{
    K_XT(AudioOutput);
    if (!xt->m_xine) {
        // remember the choice until we have a xine_t
        m_device = newDevice;
        return true;
    }

    xine_audio_port_t *port = createPort(newDevice);
    if (!port) {
        debug() << Q_FUNC_INFO << "new audio port is invalid";
        return false;
    }

    KeepReference<> *keep = new KeepReference<>;
    keep->addObject(xt);
    keep->ready();

    AudioOutputXT *newXt = new AudioOutputXT;
    newXt->m_audioPort = port;
    newXt->m_xine = xt->m_xine;
    m_threadSafeObject = newXt;

    m_device = newDevice;
    SourceNode *src = source();
    if (src) {
        QList<WireCall> wireCall;
        QList<WireCall> unwireCall;
        wireCall << WireCall(src, this);
        unwireCall << WireCall(src, QExplicitlySharedDataPointer<SinkNodeXT>(xt));
        QCoreApplication::postEvent(XineThread::instance(), new RewireEvent(wireCall, unwireCall));
        graphChanged();
    }

    AudioDataOutputXT *dataOutput = dynamic_cast<AudioDataOutputXT*>(m_source->threadSafeObject().data());
    if (dataOutput)
        dataOutput->intercept(xt->m_audioPort);

    return true;
}
Exemple #9
0
void AudioOutput::xineEngineChanged()
{
    K_XT(AudioOutput);
    if (xt->m_xine) {
        xine_audio_port_t *port = createPort(m_device);
        if (!port) {
            debug() << Q_FUNC_INFO << "stored audio port is invalid";
            QMetaObject::invokeMethod(this, "audioDeviceFailed", Qt::QueuedConnection);
            return;
        }

        // our XT object is in a wirecall, better not delete it

        Q_ASSERT(xt->m_audioPort == 0);
        xt->m_audioPort = port;


        AudioDataOutputXT *dataOutput = dynamic_cast<AudioDataOutputXT*>(m_source->threadSafeObject().data());
        if (dataOutput)
            dataOutput->intercept(xt->m_audioPort);
    }
}
AudioDataOutput::~AudioDataOutput()
{
    K_XT(AudioDataOutput);
    delete xt;
}