VOID gst_kvs_plugin_finalize()

in gst/gst-kvs-plugin/src/GstPlugin.c [439:497]


VOID gst_kvs_plugin_finalize(GObject* object)
{
    PGstKvsPlugin pGstKvsPlugin = GST_KVS_PLUGIN(object);

    if (pGstKvsPlugin == NULL) {
        return;
    }

    if (pGstKvsPlugin->kvsContext.pDeviceInfo != NULL) {
        freeDeviceInfo(&pGstKvsPlugin->kvsContext.pDeviceInfo);
    }

    if (pGstKvsPlugin->kvsContext.pStreamInfo != NULL) {
        freeStreamInfoProvider(&pGstKvsPlugin->kvsContext.pStreamInfo);
    }

    if (IS_VALID_STREAM_HANDLE(pGstKvsPlugin->kvsContext.streamHandle)) {
        freeKinesisVideoStream(&pGstKvsPlugin->kvsContext.streamHandle);
    }

    if (IS_VALID_CLIENT_HANDLE(pGstKvsPlugin->kvsContext.clientHandle)) {
        freeKinesisVideoClient(&pGstKvsPlugin->kvsContext.clientHandle);
    }

    if (pGstKvsPlugin->kvsContext.pClientCallbacks != NULL) {
        freeCallbacksProvider(&pGstKvsPlugin->kvsContext.pClientCallbacks);
    }

    freeGstKvsWebRtcPlugin(pGstKvsPlugin);

    // Last object to be freed
    if (pGstKvsPlugin->kvsContext.pCredentialProvider != NULL) {
        pGstKvsPlugin->kvsContext.freeCredentialProviderFn(&pGstKvsPlugin->kvsContext.pCredentialProvider);
    }

    gst_object_unref(pGstKvsPlugin->collect);
    g_free(pGstKvsPlugin->gstParams.streamName);
    g_free(pGstKvsPlugin->gstParams.channelName);
    g_free(pGstKvsPlugin->gstParams.contentType);
    g_free(pGstKvsPlugin->gstParams.codecId);
    g_free(pGstKvsPlugin->gstParams.secretKey);
    g_free(pGstKvsPlugin->gstParams.accessKey);
    g_free(pGstKvsPlugin->audioCodecId);
    g_free(pGstKvsPlugin->gstParams.fileLogPath);

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

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

    SAFE_MEMFREE(pGstKvsPlugin->pAdaptedFrameBuf);

    G_OBJECT_CLASS(parent_class)->finalize(object);
}