コード例 #1
0
ファイル: CamClient.cpp プロジェクト: robotage/SyntroPiApps
void CamClient::newStream()
{
	// remove the old streams
	
    if (m_avmuxPort != -1)
        clientRemoveService(m_avmuxPort);
    m_avmuxPort = -1;

    if (m_encoder != NULL)
        m_encoder->exitThread();
    m_encoder = NULL;

    // and start the new streams

    QSettings *settings = SyntroUtils::getSettings();

    settings->beginGroup(CAMCLIENT_STREAM_GROUP);

    m_compressedVideoRate = settings->value(CAMCLIENT_GS_VIDEO_RATE).toInt();
    m_compressedAudioRate = settings->value(CAMCLIENT_GS_AUDIO_RATE).toInt();
    m_avmuxPort = clientAddService(SYNTRO_STREAMNAME_AVMUX, SERVICETYPE_MULTICAST, true);

    settings->endGroup();

    m_gotAudioFormat = false;
    m_gotVideoFormat = false;

    delete settings;

    m_avParams.avmuxSubtype = SYNTRO_RECORD_TYPE_AVMUX_RTP;
    m_avParams.videoSubtype = SYNTRO_RECORD_TYPE_VIDEO_RTPH264;
    m_avParams.audioSubtype = SYNTRO_RECORD_TYPE_AUDIO_RTPAAC;
    m_encoder = new AVMuxEncode(0);
    m_encoder->resumeThread();
}
コード例 #2
0
ファイル: ViewClient.cpp プロジェクト: robotage/SyntroApps
void ViewClient::newSource(const QString source)
{
    if (m_servicePort != -1)
        clientRemoveService(m_servicePort);

    m_servicePort = clientAddService(SyntroUtils::insertStreamNameInPath(source, SYNTRO_STREAMNAME_GLOVE),
                                        SERVICETYPE_MULTICAST, false);
}
コード例 #3
0
ファイル: StoreClient.cpp プロジェクト: Syntro/SyntroCore
void StoreClient::deleteStreamSource(int index)
{
	if ((index < 0) || (index >= SYNTROSTORE_MAX_STREAMS)) {
		logWarn(QString("Got deleteStreamSource with out of range index %1").arg(index));
		return;
	}

	if (m_diskManagers[index] == NULL)
		return;												// not currently active

	clientRemoveService(m_sources[index]->port);
	m_diskManagers[index]->exitThread();
	m_diskManagers[index]->wait(5);
	delete m_sources[index];
	m_sources[index] = NULL;
}
コード例 #4
0
ファイル: ViewClient.cpp プロジェクト: robotage/SyntroApps
void ViewClient::appClientExit()
{
    if (m_servicePort != -1)
        clientRemoveService(m_servicePort);
    m_servicePort = -1;
}
コード例 #5
0
ファイル: CamClient.cpp プロジェクト: Syntro/SyntroLCam
void CamClient::newStream()
{
	// remove the old streams
	
    if (m_avmuxPortHighRate != -1)
        clientRemoveService(m_avmuxPortHighRate);
    m_avmuxPortHighRate = -1;

    if (m_avmuxPortLowRate != -1)
        clientRemoveService(m_avmuxPortLowRate);
    m_avmuxPortLowRate = -1;

    // and start the new streams

    QSettings *settings = SyntroUtils::getSettings();

    settings->beginGroup(CAMCLIENT_STREAM_GROUP);

    m_highRateMinInterval = settings->value(CAMCLIENT_HIGHRATEVIDEO_MININTERVAL).toInt();
    m_highRateMaxInterval = settings->value(CAMCLIENT_HIGHRATEVIDEO_MAXINTERVAL).toInt();
    m_highRateNullInterval = settings->value(CAMCLIENT_HIGHRATEVIDEO_NULLINTERVAL).toInt();

    m_lowRateMinInterval = settings->value(CAMCLIENT_LOWRATEVIDEO_MININTERVAL).toInt();
    m_lowRateMaxInterval = settings->value(CAMCLIENT_LOWRATEVIDEO_MAXINTERVAL).toInt();
    m_lowRateNullInterval = settings->value(CAMCLIENT_LOWRATEVIDEO_NULLINTERVAL).toInt();

    m_generateLowRate = settings->value(CAMCLIENT_GENERATE_LOWRATE).toBool();
    m_lowRateHalfRes = settings->value(CAMCLIENT_LOWRATE_HALFRES).toBool();
 
    m_avmuxPortHighRate = clientAddService(SYNTRO_STREAMNAME_AVMUX, SERVICETYPE_MULTICAST, true);
    if (m_generateLowRate)
        m_avmuxPortLowRate = clientAddService(SYNTRO_STREAMNAME_AVMUXLR, SERVICETYPE_MULTICAST, true);

    settings->endGroup();

    m_gotAudioFormat = false;
    m_gotVideoFormat = false;

    settings->beginGroup(CAMCLIENT_MOTION_GROUP);

    m_tilesToSkip = settings->value(CAMCLIENT_MOTION_TILESTOSKIP).toInt();
    m_intervalsToSkip = settings->value(CAMCLIENT_MOTION_INTERVALSTOSKIP).toInt();
    m_minDelta = settings->value(CAMCLIENT_MOTION_MIN_DELTA).toInt();
    m_minNoise = settings->value(CAMCLIENT_MOTION_MIN_NOISE).toInt();
    m_deltaInterval = settings->value(CAMCLIENT_MOTION_DELTA_INTERVAL).toInt();
    m_preroll = settings->value(CAMCLIENT_MOTION_PREROLL).toInt();
    m_postroll = settings->value(CAMCLIENT_MOTION_POSTROLL).toInt();

    settings->endGroup();

    delete settings;

    m_cd.setDeltaThreshold(m_minDelta);
    m_cd.setNoiseThreshold(m_minNoise);
    m_cd.setTilesToSkip(m_tilesToSkip);
    m_cd.setIntervalsToSkip(m_intervalsToSkip);

    qint64 now = QDateTime::currentMSecsSinceEpoch();

    m_lastFrameTime = now;
    m_lastLowRateFrameTime = now;
    m_lastFullFrameTime = now;
    m_lastLowRateFullFrameTime = now;
    m_lastPrerollFrameTime = now;
    m_lastLowRatePrerollFrameTime = now;
    m_lastChangeTime = now;
    m_imageChanged = false;

    m_cd.setUninitialized();

    clearQueues();

    m_avParams.avmuxSubtype = SYNTRO_RECORD_TYPE_AVMUX_MJPPCM;
    m_avParams.videoSubtype = SYNTRO_RECORD_TYPE_VIDEO_MJPEG;
    m_avParams.audioSubtype = SYNTRO_RECORD_TYPE_AUDIO_PCM;
}