asfdemux: Disable WMV video format
authorGilbok Lee <gilbok.lee@samsung.com>
Wed, 12 Dec 2018 05:40:16 +0000 (14:40 +0900)
committerGilbok Lee <gilbok.lee@samsung.com>
Wed, 26 Dec 2018 06:33:58 +0000 (15:33 +0900)
Change-Id: Ibb08490b7875af70a90a0d9b8239a8e845a7e2cf

gst/asfdemux/gstasfdemux.c
gst/asfdemux/gstasfdemux.h
packaging/gst-plugins-ugly.spec

index bd820fa..3de53c2 100644 (file)
@@ -319,6 +319,10 @@ gst_asf_demux_init (GstASFDemux * demux)
       GST_DEBUG_FUNCPTR (gst_asf_demux_activate_mode));
   gst_element_add_pad (GST_ELEMENT (demux), demux->sinkpad);
 
+#ifdef TIZEN_FEATURE_ASFDEMUX_DISABLE_UNSUPPORTED_FORMAT
+  demux->is_supported_format = TRUE;
+#endif
+
   /* set initial state */
   gst_asf_demux_reset (demux, FALSE);
 }
@@ -3134,7 +3138,15 @@ gst_asf_demux_parse_stream_object (GstASFDemux * demux, guint8 * data,
               &data, &size)) {
         goto not_enough_data;
       }
-
+#ifdef TIZEN_FEATURE_ASFDEMUX_DISABLE_UNSUPPORTED_FORMAT
+      /* Compare video format WMV*, WVC* */
+      if (((video_format_object.tag & 0x00ffffff) == (guint32)(('W')|('M')<<8|('V')<<16))
+          || ((video_format_object.tag & 0x00ffffff) == (guint32)(('W')|('V')<<8|('C')<<16))) {
+          GST_ERROR_OBJECT (demux, "WMV file format is not supported.");
+          demux->is_supported_format = FALSE;
+          return NULL;
+      }
+#endif
       stream = gst_asf_demux_add_video_stream (demux, &video_format_object,
           stream_id, &data, &size);
 
@@ -4220,6 +4232,13 @@ gst_asf_demux_process_ext_stream_props (GstASFDemux * demux, guint8 * data,
   stream = gst_asf_demux_parse_stream_object (demux, stream_obj_data, len);
   g_free (stream_obj_data);
 
+#ifdef TIZEN_FEATURE_ASFDEMUX_DISABLE_UNSUPPORTED_FORMAT
+  if ((stream == NULL) && (demux->is_supported_format == FALSE)) {
+    g_free (esp.payload_extensions);
+    return GST_FLOW_NOT_SUPPORTED;
+  }
+#endif
+
 done:
 
   if (stream) {
@@ -4440,6 +4459,12 @@ gst_asf_demux_process_object (GstASFDemux * demux, guint8 ** p_data,
   switch (obj.id) {
     case ASF_OBJ_STREAM:
       gst_asf_demux_parse_stream_object (demux, *p_data, obj_data_size);
+#ifdef TIZEN_FEATURE_ASFDEMUX_MODIFICATION
+      if (demux->is_supported_format == FALSE) {
+        ret = GST_FLOW_NOT_SUPPORTED;
+        break;
+      }
+#endif
       ret = GST_FLOW_OK;
       break;
     case ASF_OBJ_FILE:
index 953b496..e33b885 100644 (file)
@@ -28,7 +28,7 @@
 #include "asfheaders.h"
 
 G_BEGIN_DECLS
-  
+
 #define GST_TYPE_ASF_DEMUX \
   (gst_asf_demux_get_type())
 #define GST_ASF_DEMUX(obj) \
@@ -140,7 +140,7 @@ typedef struct
 
   /* extended stream properties (optional) */
   AsfStreamExtProps  ext_props;
-  
+
   gboolean     inspect_payload;
 } AsfStream;
 
@@ -231,7 +231,7 @@ struct _GstASFDemux {
   GstClockTime         sidx_interval;    /* interval between entries in ns */
   guint                sidx_num_entries; /* number of index entries        */
   AsfSimpleIndexEntry *sidx_entries;     /* packet number for each entry   */
-  
+
   GSList              *other_streams;    /* remember streams that are in header but have unknown type */
 
   /* For reverse playback */
@@ -242,6 +242,9 @@ struct _GstASFDemux {
   GstASF3DMode asf_3D_mode;
 
   gboolean saw_file_header;
+#ifdef TIZEN_FEATURE_ASFDEMUX_DISABLE_UNSUPPORTED_FORMAT
+  gboolean is_supported_format;
+#endif
 };
 
 struct _GstASFDemuxClass {
index ae57236..0447124 100644 (file)
@@ -41,6 +41,7 @@ export CFLAGS="\
        -DTIZEN_FEATURE_TRUSTZONE\
 %endif
        -DTIZEN_FEATURE_ASFDEMUX_CHECK_DATA_SIZE\
+       -DTIZEN_FEATURE_ASFDEMUX_DISABLE_UNSUPPORTED_FORMAT\
        -fstack-protector-strong\
        -Wl,-z,relro\
        -D_FORTIFY_SOURCE=2"
@@ -88,5 +89,3 @@ make %{?jobs:-j%jobs}
 %exclude %{_datadir}/gstreamer-1.0/presets/GstAmrnbEnc.prs
 %endif
 %{_libdir}/gstreamer-1.0/libgstamrwbdec.so
-
-