VOID gst_kvs_plugin_set_property()

in gst/gst-kvs-plugin/src/GstPlugin.c [499:656]


VOID gst_kvs_plugin_set_property(GObject* object, guint propId, const GValue* value, GParamSpec* pspec)
{
    PGstKvsPlugin pGstKvsPlugin = GST_KVS_PLUGIN(object);

    if (pGstKvsPlugin == NULL) {
        return;
    }

    switch (propId) {
        case PROP_STREAM_NAME:
            g_free(pGstKvsPlugin->gstParams.streamName);
            pGstKvsPlugin->gstParams.streamName = g_strdup(g_value_get_string(value));
            break;
        case PROP_CHANNEL_NAME:
            g_free(pGstKvsPlugin->gstParams.channelName);
            pGstKvsPlugin->gstParams.channelName = g_strdup(g_value_get_string(value));
            break;
        case PROP_RETENTION_PERIOD:
            pGstKvsPlugin->gstParams.retentionPeriodInHours = g_value_get_uint(value);
            break;
        case PROP_STREAMING_TYPE:
            pGstKvsPlugin->gstParams.streamingType = (STREAMING_TYPE) g_value_get_enum(value);
            break;
        case PROP_WEBRTC_CONNECTION_MODE:
            pGstKvsPlugin->gstParams.connectionMode = (WEBRTC_CONNECTION_MODE) g_value_get_enum(value);
            break;
        case PROP_CONTENT_TYPE:
            g_free(pGstKvsPlugin->gstParams.contentType);
            pGstKvsPlugin->gstParams.contentType = g_strdup(g_value_get_string(value));
            break;
        case PROP_MAX_LATENCY:
            pGstKvsPlugin->gstParams.maxLatencyInSeconds = g_value_get_uint(value);
            break;
        case PROP_FRAGMENT_DURATION:
            pGstKvsPlugin->gstParams.fragmentDurationInMillis = g_value_get_uint(value);
            break;
        case PROP_TIMECODE_SCALE:
            pGstKvsPlugin->gstParams.timeCodeScaleInMillis = g_value_get_uint(value);
            break;
        case PROP_KEY_FRAME_FRAGMENTATION:
            pGstKvsPlugin->gstParams.keyFrameFragmentation = g_value_get_boolean(value);
            break;
        case PROP_FRAME_TIMECODES:
            pGstKvsPlugin->gstParams.frameTimecodes = g_value_get_boolean(value);
            break;
        case PROP_ABSOLUTE_FRAGMENT_TIMES:
            pGstKvsPlugin->gstParams.absoluteFragmentTimecodes = g_value_get_boolean(value);
            break;
        case PROP_FRAGMENT_ACKS:
            pGstKvsPlugin->gstParams.fragmentAcks = g_value_get_boolean(value);
            break;
        case PROP_RESTART_ON_ERROR:
            pGstKvsPlugin->gstParams.restartOnErrors = g_value_get_boolean(value);
            break;
        case PROP_RECALCULATE_METRICS:
            pGstKvsPlugin->gstParams.recalculateMetrics = g_value_get_boolean(value);
            break;
        case PROP_ADAPT_CPD_NALS_TO_AVC:
            pGstKvsPlugin->gstParams.adaptCpdNals = g_value_get_boolean(value);
            break;
        case PROP_ADAPT_FRAME_NALS_TO_AVC:
            pGstKvsPlugin->gstParams.adaptFrameNals = g_value_get_boolean(value);
            break;
        case PROP_AVG_BANDWIDTH_BPS:
            pGstKvsPlugin->gstParams.avgBandwidthBps = g_value_get_uint(value);
            break;
        case PROP_BUFFER_DURATION:
            pGstKvsPlugin->gstParams.bufferDurationInSeconds = g_value_get_uint(value);
            break;
        case PROP_REPLAY_DURATION:
            pGstKvsPlugin->gstParams.replayDurationInSeconds = g_value_get_uint(value);
            break;
        case PROP_CONNECTION_STALENESS:
            pGstKvsPlugin->gstParams.connectionStalenessInSeconds = g_value_get_uint(value);
            break;
        case PROP_CODEC_ID:
            g_free(pGstKvsPlugin->gstParams.codecId);
            pGstKvsPlugin->gstParams.codecId = g_strdup(g_value_get_string(value));
            break;
        case PROP_ACCESS_KEY:
            g_free(pGstKvsPlugin->gstParams.accessKey);
            pGstKvsPlugin->gstParams.accessKey = g_strdup(g_value_get_string(value));
            break;
        case PROP_SECRET_KEY:
            g_free(pGstKvsPlugin->gstParams.secretKey);
            pGstKvsPlugin->gstParams.secretKey = g_strdup(g_value_get_string(value));
            break;
        case PROP_AWS_REGION:
            g_free(pGstKvsPlugin->gstParams.awsRegion);
            pGstKvsPlugin->gstParams.awsRegion = g_strdup(g_value_get_string(value));
            break;
        case PROP_ROTATION_PERIOD:
            pGstKvsPlugin->gstParams.rotationPeriodInSeconds = g_value_get_uint(value);
            break;
        case PROP_LOG_LEVEL:
            pGstKvsPlugin->gstParams.logLevel = g_value_get_uint(value);
            break;
        case PROP_FILE_LOG_PATH:
            g_free(pGstKvsPlugin->gstParams.fileLogPath);
            pGstKvsPlugin->gstParams.fileLogPath = g_strdup(g_value_get_string(value));
            break;
        case PROP_FRAMERATE:
            pGstKvsPlugin->gstParams.frameRate = g_value_get_uint(value);
            break;
        case PROP_STORAGE_SIZE:
            pGstKvsPlugin->gstParams.storageSizeInBytes = g_value_get_uint(value);
            break;
        case PROP_CREDENTIAL_FILE_PATH:
            pGstKvsPlugin->gstParams.credentialFilePath = g_strdup(g_value_get_string(value));
            break;
        case PROP_IOT_CERTIFICATE: {
            const GstStructure* iotStruct = gst_value_get_structure(value);

            if (pGstKvsPlugin->gstParams.iotCertificate != NULL) {
                gst_structure_free(pGstKvsPlugin->gstParams.iotCertificate);
            }

            pGstKvsPlugin->gstParams.iotCertificate = (iotStruct != NULL) ? gst_structure_copy(iotStruct) : NULL;
            break;
        }
        case PROP_STREAM_TAGS: {
            const GstStructure* tagsStruct = gst_value_get_structure(value);

            if (pGstKvsPlugin->gstParams.streamTags != NULL) {
                gst_structure_free(pGstKvsPlugin->gstParams.streamTags);
            }

            pGstKvsPlugin->gstParams.streamTags = (tagsStruct != NULL) ? gst_structure_copy(tagsStruct) : NULL;
            break;
        }
        case PROP_FILE_START_TIME:
            pGstKvsPlugin->gstParams.fileStartTime = g_value_get_uint64(value);
            break;
        case PROP_DISABLE_BUFFER_CLIPPING:
            pGstKvsPlugin->gstParams.disableBufferClipping = g_value_get_boolean(value);
            break;
        case PROP_STREAM_CREATE_TIMEOUT:
            pGstKvsPlugin->gstParams.streamCreateTimeoutInSeconds = g_value_get_uint(value);
            break;
        case PROP_STREAM_STOP_TIMEOUT:
            pGstKvsPlugin->gstParams.streamStopTimeoutInSeconds = g_value_get_uint(value);
            break;
        case PROP_TRICKLE_ICE:
            pGstKvsPlugin->gstParams.trickleIce = g_value_get_boolean(value);
            break;
        case PROP_ENABLE_STREAMING:
            pGstKvsPlugin->gstParams.enableStreaming = g_value_get_boolean(value);
            ATOMIC_STORE_BOOL(&pGstKvsPlugin->enableStreaming, pGstKvsPlugin->gstParams.enableStreaming);
            break;
        case PROP_WEBRTC_CONNECT:
            pGstKvsPlugin->gstParams.webRtcConnect = g_value_get_boolean(value);
            ATOMIC_STORE_BOOL(&pGstKvsPlugin->connectWebRtc, pGstKvsPlugin->gstParams.webRtcConnect);
            break;
        default:
            G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propId, pspec);
            break;
    }
}