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);
}