webrtc_source: Check media format in every case when pushing media packet 69/261769/3
authorSangchul Lee <sc11.lee@samsung.com>
Mon, 26 Jul 2021 05:21:02 +0000 (14:21 +0900)
committerSangchul Lee <sc11.lee@samsung.com>
Tue, 27 Jul 2021 01:14:09 +0000 (10:14 +0900)
[Version] 0.2.57
[Issue Type] Improvement

Change-Id: I26f04321a66848d606586dc155c95920914035c4
Signed-off-by: Sangchul Lee <sc11.lee@samsung.com>
packaging/capi-media-webrtc.spec
src/webrtc_source.c

index af576d39ee8090be46d8c3a7f7b73f9daaed8a20..6108f961e7e416469b339774000e3a7ad081e37b 100644 (file)
@@ -1,6 +1,6 @@
 Name:       capi-media-webrtc
 Summary:    A WebRTC library in Tizen Native API
-Version:    0.2.56
+Version:    0.2.57
 Release:    0
 Group:      Multimedia/API
 License:    Apache-2.0
index 3fff12675c391bb2c99e9afe0669b2592f06050b..502217c5e58655be17d195ccbe87545eca778951 100644 (file)
@@ -2920,6 +2920,7 @@ int _push_media_packet(webrtc_s *webrtc, unsigned int source_id, media_packet_h
        int ret = WEBRTC_ERROR_NONE;
        webrtc_gst_slot_s *source;
        GstElement *appsrc;
+       media_format_h format;
        GstBuffer *buffer = NULL;
        guint64 pts = 0;
        guint64 dts = 0;
@@ -2945,6 +2946,14 @@ int _push_media_packet(webrtc_s *webrtc, unsigned int source_id, media_packet_h
                return WEBRTC_ERROR_NONE;
        }
 
+       ret = media_packet_get_format(packet, &format);
+       RET_VAL_IF(ret != MEDIA_PACKET_ERROR_NONE, WEBRTC_ERROR_INVALID_OPERATION, "failed to media_packet_get_format()");
+       if (!__is_valid_format(source->media_types, source->media_format, format)) {
+               media_format_unref(format);
+               return WEBRTC_ERROR_INVALID_OPERATION;
+       }
+       media_format_unref(format);
+
        /* the incoming media packet should have zerocopy format (e.g., SN12) */
        if (source->zerocopy_enabled) {
                if (!source->allocator)
@@ -2965,16 +2974,6 @@ int _push_media_packet(webrtc_s *webrtc, unsigned int source_id, media_packet_h
        ret = media_packet_get_extra(packet, (void **)&buffer);
        RET_VAL_IF(ret != MEDIA_PACKET_ERROR_NONE, WEBRTC_ERROR_INVALID_OPERATION, "failed to media_packet_get_extra()");
        if (GST_IS_BUFFER(buffer)) {
-               media_format_h format;
-
-               ret = media_packet_get_format(packet, &format);
-               RET_VAL_IF(ret != MEDIA_PACKET_ERROR_NONE, WEBRTC_ERROR_INVALID_OPERATION, "failed to media_packet_get_format()");
-               if (!__is_valid_format(source->media_types, source->media_format, format)) {
-                       media_format_unref(format);
-                       return WEBRTC_ERROR_INVALID_OPERATION;
-               }
-               media_format_unref(format);
-
                LOG_DEBUG("external gst buffer[%p]", buffer);
                g_signal_emit_by_name(G_OBJECT(appsrc), "push-buffer", buffer, &gst_ret, NULL);
                if (gst_ret != GST_FLOW_OK) {