Merge branch 'tizen' into tizen_gst_1.19.2
[platform/upstream/gstreamer.git] / gst / videoparsers / gsth264parse.c
index 6dbda1b..d1312d6 100644 (file)
@@ -1319,6 +1319,9 @@ gst_h264_parse_handle_frame (GstBaseParse * parse,
   GstH264NalUnit nalu;
   GstH264ParserResult pres;
   gint framesize;
+#ifdef TIZEN_FEATURE_H264PARSE_MODIFICATION
+  GstH264NalUnitType last_nal_type = GST_H264_NAL_UNKNOWN;
+#endif
 
   if (G_UNLIKELY (GST_BUFFER_FLAG_IS_SET (frame->buffer,
               GST_BUFFER_FLAG_DISCONT))) {
@@ -1413,6 +1416,9 @@ gst_h264_parse_handle_frame (GstBaseParse * parse,
       case GST_H264_PARSER_OK:
         GST_DEBUG_OBJECT (h264parse, "complete nal (offset, size): (%u, %u) ",
             nalu.offset, nalu.size);
+#ifdef TIZEN_FEATURE_H264PARSE_MODIFICATION
+        last_nal_type = nalu.type;
+#endif
         break;
       case GST_H264_PARSER_NO_NAL_END:
         /* In NAL alignment, assume the NAL is complete */
@@ -1448,6 +1454,15 @@ gst_h264_parse_handle_frame (GstBaseParse * parse,
             ("Error parsing H.264 stream"), ("Invalid H.264 stream"));
         goto invalid_stream;
       case GST_H264_PARSER_NO_NAL:
+#ifdef TIZEN_FEATURE_H264PARSE_MODIFICATION
+        if (last_nal_type == GST_H264_NAL_SEQ_END) {
+          GST_WARNING_OBJECT (h264parse, "No H.264 NAL unit found, but last "
+            "nal type is SEQ_END, So push remain buffer");
+          gst_buffer_unmap (buffer, &map);
+          gst_h264_parse_parse_frame (parse, frame);
+          return gst_base_parse_finish_frame (parse, frame, size);
+        }
+#endif
         GST_ELEMENT_ERROR (h264parse, STREAM, FORMAT,
             ("Error parsing H.264 stream"), ("No H.264 NAL unit found"));
         goto invalid_stream;