== MEDIA_PACKET_ERROR_NONE) {
GstCaps *appsrc_caps = NULL;
GstCaps *new_appsrc_caps = NULL;
- GstBuffer *codec_data_buffer = NULL;
- codec_data_buffer = gst_buffer_new();
- gchar *codec_data_caps_string = NULL;
- gst_buffer_append_memory(codec_data_buffer,
- gst_memory_new_wrapped(GST_MEMORY_FLAG_READONLY, pkt_codec_data, codec_data_size, 0,
- codec_data_size, pkt_codec_data, NULL));
-
- g_object_get(G_OBJECT(current->appsrc), "caps", &appsrc_caps, NULL);
- codec_data_caps_string = gst_caps_to_string(appsrc_caps);
- MX_I("Appsrc caps is %s", codec_data_caps_string);
- g_free(codec_data_caps_string);
- if (appsrc_caps)
- new_appsrc_caps = gst_caps_copy(appsrc_caps);
-
- if (new_appsrc_caps)
- gst_caps_set_simple(new_appsrc_caps, "codec_data", GST_TYPE_BUFFER, codec_data_buffer, NULL);
-
- codec_data_caps_string = gst_caps_to_string(new_appsrc_caps);
- MX_I("New appsrc caps is %s", codec_data_caps_string);
- g_free(codec_data_caps_string);
-
- g_object_set(G_OBJECT(current->appsrc), "caps", new_appsrc_caps, NULL);
- gst_caps_unref(appsrc_caps);
- gst_caps_unref(new_appsrc_caps);
- gst_buffer_unref(codec_data_buffer);
+ if (codec_data_size) {
+ gchar *codec_data_caps_string = NULL;
+
+ g_object_get(G_OBJECT(current->appsrc), "caps", &appsrc_caps, NULL);
+
+ codec_data_caps_string = gst_caps_to_string(appsrc_caps);
+ MX_I("Appsrc caps is %s", codec_data_caps_string);
+ g_free(codec_data_caps_string);
+
+ if (appsrc_caps) {
+ new_appsrc_caps = gst_caps_copy(appsrc_caps);
+ gst_caps_unref(appsrc_caps);
+ }
+
+ if (new_appsrc_caps) {
+ GstBuffer *codec_data_buffer = gst_buffer_new_allocate(NULL,
+ codec_data_size, NULL);
+ gst_buffer_fill(codec_data_buffer, 0, pkt_codec_data, codec_data_size);
+ gst_caps_set_simple(new_appsrc_caps, "codec_data", GST_TYPE_BUFFER, codec_data_buffer, NULL);
+ gst_buffer_unref(codec_data_buffer);
+
+ codec_data_caps_string = gst_caps_to_string(new_appsrc_caps);
+ MX_I("New appsrc caps is %s", codec_data_caps_string);
+ g_free(codec_data_caps_string);
+
+ g_object_set(G_OBJECT(current->appsrc), "caps", new_appsrc_caps, NULL);
+ gst_caps_unref(new_appsrc_caps);
+
+ }
+ } else {
+ MX_W("codec_data_size is zero");
+ }
}
/* copy data */
if (media_packet_get_buffer_data_ptr(out_pkt, &pkt_data)) {
MX_E("unable to get the buffer pointer \
from media_packet_get_buffer_data_ptr");
+ g_free(data_ptr);
ret = MX_ERROR_UNKNOWN;
goto ERROR;
}