BOOL CVisWarpedVideoComposite<TPixel>::Open( const char* strmname,
                                             int seqidx = -1 )
{
    CVisStreamHandler* pStream = OpenStreamHandler( strmname, OF_READWRITE );

    if( pStream->FrameCount() > m_uFrameCount )
    {
        m_uFrameCount = pStream->FrameCount();
    }
    
    if( seqidx == -1 || seqidx >= Length() )
    {
        T_FRAME frm;
        
        frm.SetStreamHandler( pStream, m_uCur );
        PushBack( frm );
    }
    else
    {
        T_FRAME& frm = At(seqidx);
        
        // deallocate image currently in this slot then
        // set the new stream handler
        frm.Deallocate();
        frm.SetStreamHandler( pStream, m_uCur );
    }
}
Example #2
0
void IPTVChannel::SetStreamData(MPEGStreamData *sd)
{
    LOG(VB_CHANNEL, LOG_INFO, LOC +
        QString("SetStreamData(0x%1) StreamHandler(0x%2)")
        .arg((intptr_t)sd,0,16).arg((intptr_t)m_stream_handler,0,16));

    QMutexLocker locker(&m_lock);

    if (m_stream_data == sd)
        return;

    if (m_stream_handler)
    {
        if (sd)
            m_stream_handler->AddListener(sd);

        if (m_stream_data)
            m_stream_handler->RemoveListener(m_stream_data);
    }
    else if (sd)
    {
        OpenStreamHandler();
        m_stream_handler->AddListener(sd);
    }

    m_stream_data = sd;
}
Example #3
0
bool IPTVChannel::Tune(const IPTVTuningData &tuning, bool scanning)
{
    QMutexLocker locker(&m_tune_lock);

    LOG(VB_CHANNEL, LOG_INFO, LOC + QString("Tune(%1)")
        .arg(tuning.GetDeviceName()));

    if (tuning.GetDataURL().scheme().toUpper() == "RTSP")
    {
        // TODO get RTP info using RTSP
    }

    if (!tuning.IsValid())
    {
        LOG(VB_CHANNEL, LOG_ERR, LOC + QString("Invalid tuning info %1")
            .arg(tuning.GetDeviceName()));
        return false;
    }

    if (m_last_tuning == tuning)
    {
        LOG(VB_CHANNEL, LOG_DEBUG, LOC + QString("Already tuned to %1")
            .arg(tuning.GetDeviceName()));
        return true;
    }

    m_last_tuning = tuning;

    if (!m_firsttune || scanning)
        // for historical reason, an initial tune is requested at
        // startup so don't open the stream handler just yet it will
        // be opened after the next Tune or SetStreamData)
    {
        MPEGStreamData *tmp = m_stream_data;

        CloseStreamHandler();
        if (tmp)
            SetStreamData(tmp);
        else
            OpenStreamHandler();
    }

    m_firsttune = false;

    LOG(VB_CHANNEL, LOG_INFO, LOC + QString("Tuned to (%1)")
        .arg(tuning.GetDeviceName()));

    return true;
}