[0.6.273] modify to use GError for streaming error 38/283638/3 accepted/tizen/unified/20221115.022401
authorjiyong.min <jiyong.min@samsung.com>
Mon, 31 Oct 2022 22:39:23 +0000 (07:39 +0900)
committerjiyong.min <jiyong.min@samsung.com>
Thu, 3 Nov 2022 01:48:47 +0000 (10:48 +0900)
 - The streaming error message on gstreamer did not use GError,
  so it could cause problems on the other side.
  We modify to use standard GError.

Change-Id: I3b19b05b9264479cf7646865c0c857bc15f62c43

packaging/libmm-player.spec
src/mm_player_gst.c

index 1ec98a9..fe4aa9a 100644 (file)
@@ -1,6 +1,6 @@
 Name:       libmm-player
 Summary:    Multimedia Framework Player Library
-Version:    0.6.272
+Version:    0.6.273
 Release:    0
 Group:      Multimedia/Libraries
 License:    Apache-2.0
index 6abf729..a29df4f 100644 (file)
@@ -484,27 +484,19 @@ __mmplayer_handle_gst_error(mmplayer_t *player, GstMessage *message, GError *err
 }
 
 static gboolean
-__mmplayer_handle_streaming_error(mmplayer_t *player, GstMessage *message)
+__mmplayer_handle_streaming_error(mmplayer_t *player, GstMessage *message, GError *error)
 {
        LOGD("\n");
        MMMessageParamType msg_param = {0, };
        gchar *msg_src_element = NULL;
-       GstStructure *s = NULL;
-       guint error_id = 0;
-       gchar *error_string = NULL;
 
        MMPLAYER_FENTER();
 
        MMPLAYER_RETURN_VAL_IF_FAIL(player, FALSE);
        MMPLAYER_RETURN_VAL_IF_FAIL(message, FALSE);
+       MMPLAYER_RETURN_VAL_IF_FAIL(error, FALSE);
 
-       s = gst_structure_copy(gst_message_get_structure(message));
-
-
-       if (!gst_structure_get_uint(s, "error_id", &error_id))
-               error_id = MMPLAYER_STREAMING_ERROR_NONE;
-
-       switch (error_id) {
+       switch (error->code) {
        case MMPLAYER_STREAMING_ERROR_UNSUPPORTED_AUDIO:
                msg_param.code = MM_ERROR_PLAYER_STREAMING_UNSUPPORTED_AUDIO;
                break;
@@ -642,14 +634,12 @@ __mmplayer_handle_streaming_error(mmplayer_t *player, GstMessage *message)
                break;
        default:
                {
-                       gst_structure_free(s);
                        return MM_ERROR_PLAYER_STREAMING_FAIL;
                }
        }
 
-       error_string = g_strdup(gst_structure_get_string(s, "error_string"));
-       if (error_string)
-               msg_param.data = (void *)error_string;
+       if (error->message)
+               msg_param.data = (void *)(error->message);
 
        if (message->src) {
                msg_src_element = GST_ELEMENT_NAME(GST_ELEMENT_CAST(message->src));
@@ -668,9 +658,6 @@ __mmplayer_handle_streaming_error(mmplayer_t *player, GstMessage *message)
                LOGD("skip error post because it's sent already.");
        }
 
-       gst_structure_free(s);
-       MMPLAYER_FREEIF(error_string);
-
        MMPLAYER_FLEAVE();
        return TRUE;
 
@@ -1441,7 +1428,7 @@ __mmplayer_gst_handle_error_message(mmplayer_t *player, GstMessage *msg)
                /* Note : the streaming error from the streaming source is handled
                 *       using __mmplayer_handle_streaming_error.
                 */
-               __mmplayer_handle_streaming_error(player, msg);
+               __mmplayer_handle_streaming_error(player, msg, error);
 
                /* dump state of all element */
                _mmplayer_dump_pipeline_state(player);
@@ -3768,7 +3755,7 @@ _mmplayer_gst_pause(mmplayer_t *player, gboolean async)
                                                /* Note : the streaming error from the streaming source is handled
                                                        *   using __mmplayer_handle_streaming_error.
                                                        */
-                                               __mmplayer_handle_streaming_error(player, msg);
+                                               __mmplayer_handle_streaming_error(player, msg, error);
 
                                        } else if (error) {
                                                LOGE("paring error posted from bus, domain : %s, code : %d", g_quark_to_string(error->domain), error->code);