1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
|
From c748e947ff35c4137178aef9bf229e0c67952982 Mon Sep 17 00:00:00 2001
From: Pooja Prajod <a0132412@ti.com>
Date: Fri, 20 Jan 2017 14:57:29 +0530
Subject: [PATCH 2/5] parsers: Pick previos bug fixes on different parsers
The following bug fixes which were previously identified are picked :
1. Increase rank for vc1parse and jpegparse
2. Modify h264 and mpeg4 parsers to interpolate pts
3. Fix create() width and height calculation on h264parse
Signed-off-by: Pooja Prajod <a0132412@ti.com>
---
gst/jpegformat/gstjpegformat.c | 2 +-
gst/jpegformat/gstjpegparse.c | 2 +-
gst/videoparsers/gsth264parse.c | 22 +++++++---------------
gst/videoparsers/gstmpeg4videoparse.c | 2 +-
gst/videoparsers/gstmpegvideoparse.c | 2 +-
gst/videoparsers/plugin.c | 2 +-
6 files changed, 12 insertions(+), 20 deletions(-)
diff --git a/gst/jpegformat/gstjpegformat.c b/gst/jpegformat/gstjpegformat.c
index b410466..ecb9311 100644
--- a/gst/jpegformat/gstjpegformat.c
+++ b/gst/jpegformat/gstjpegformat.c
@@ -30,7 +30,7 @@
static gboolean
plugin_init (GstPlugin * plugin)
{
- if (!gst_element_register (plugin, "jpegparse", GST_RANK_NONE,
+ if (!gst_element_register (plugin, "jpegparse", GST_RANK_PRIMARY + 2,
GST_TYPE_JPEG_PARSE))
return FALSE;
if (!gst_element_register (plugin, "jifmux", GST_RANK_SECONDARY,
diff --git a/gst/jpegformat/gstjpegparse.c b/gst/jpegformat/gstjpegparse.c
index 77e53a6..5bfba7b 100644
--- a/gst/jpegformat/gstjpegparse.c
+++ b/gst/jpegformat/gstjpegparse.c
@@ -151,7 +151,7 @@ gst_jpeg_parse_class_init (GstJpegParseClass * klass)
gst_element_class_set_static_metadata (gstelement_class,
"JPEG stream parser",
- "Video/Parser",
+ "Codec/Parser/Video",
"Parse JPEG images into single-frame buffers",
"Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>");
diff --git a/gst/videoparsers/gsth264parse.c b/gst/videoparsers/gsth264parse.c
index 05b6b75..6fe2914 100644
--- a/gst/videoparsers/gsth264parse.c
+++ b/gst/videoparsers/gsth264parse.c
@@ -162,7 +162,7 @@ static void
gst_h264_parse_init (GstH264Parse * h264parse)
{
h264parse->frame_out = gst_adapter_new ();
- gst_base_parse_set_pts_interpolation (GST_BASE_PARSE (h264parse), FALSE);
+ gst_base_parse_set_pts_interpolation (GST_BASE_PARSE (h264parse), TRUE);
GST_PAD_SET_ACCEPT_INTERSECT (GST_BASE_PARSE_SINK_PAD (h264parse));
GST_PAD_SET_ACCEPT_TEMPLATE (GST_BASE_PARSE_SINK_PAD (h264parse));
}
@@ -1722,13 +1722,8 @@ gst_h264_parse_update_src_caps (GstH264Parse * h264parse, GstCaps * caps)
gint fps_num, fps_den;
gint par_n, par_d;
- if (sps->frame_cropping_flag) {
- crop_width = sps->crop_rect_width;
- crop_height = sps->crop_rect_height;
- } else {
- crop_width = sps->width;
- crop_height = sps->height;
- }
+ crop_width = (sps->crop_rect_width > sps->width)? sps->crop_rect_width: sps->width;
+ crop_height = (sps->crop_rect_height > sps->height)? sps->crop_rect_height: sps->height;
if (G_UNLIKELY (h264parse->width != crop_width ||
h264parse->height != crop_height)) {
@@ -1762,7 +1757,7 @@ gst_h264_parse_update_src_caps (GstH264Parse * h264parse, GstCaps * caps)
}
if (G_UNLIKELY (modified || h264parse->update_caps)) {
- gint width, height;
+ gint width=0, height=0;
GstClockTime latency;
const gchar *caps_mview_mode = NULL;
@@ -1774,16 +1769,13 @@ gst_h264_parse_update_src_caps (GstH264Parse * h264parse, GstCaps * caps)
caps = gst_caps_copy (sink_caps);
- /* sps should give this but upstream overrides */
if (s && gst_structure_has_field (s, "width"))
gst_structure_get_int (s, "width", &width);
- else
- width = h264parse->width;
-
+ width = (width > h264parse->width)? width: h264parse->width;
+
if (s && gst_structure_has_field (s, "height"))
gst_structure_get_int (s, "height", &height);
- else
- height = h264parse->height;
+ height = (height > h264parse->height)? height: h264parse->height;
if (s == NULL ||
!gst_structure_get_fraction (s, "pixel-aspect-ratio", &par_n,
diff --git a/gst/videoparsers/gstmpeg4videoparse.c b/gst/videoparsers/gstmpeg4videoparse.c
index a1fd3b2..7912254 100644
--- a/gst/videoparsers/gstmpeg4videoparse.c
+++ b/gst/videoparsers/gstmpeg4videoparse.c
@@ -185,7 +185,7 @@ gst_mpeg4vparse_init (GstMpeg4VParse * parse)
parse->interval = DEFAULT_CONFIG_INTERVAL;
parse->last_report = GST_CLOCK_TIME_NONE;
- gst_base_parse_set_pts_interpolation (GST_BASE_PARSE (parse), FALSE);
+ gst_base_parse_set_pts_interpolation (GST_BASE_PARSE (parse), TRUE);
GST_PAD_SET_ACCEPT_INTERSECT (GST_BASE_PARSE_SINK_PAD (parse));
GST_PAD_SET_ACCEPT_TEMPLATE (GST_BASE_PARSE_SINK_PAD (parse));
}
diff --git a/gst/videoparsers/gstmpegvideoparse.c b/gst/videoparsers/gstmpegvideoparse.c
index bf71a3e..f203cca 100644
--- a/gst/videoparsers/gstmpegvideoparse.c
+++ b/gst/videoparsers/gstmpegvideoparse.c
@@ -175,7 +175,7 @@ gst_mpegv_parse_init (GstMpegvParse * parse)
{
parse->config_flags = FLAG_NONE;
- gst_base_parse_set_pts_interpolation (GST_BASE_PARSE (parse), FALSE);
+ gst_base_parse_set_pts_interpolation (GST_BASE_PARSE (parse), TRUE);
GST_PAD_SET_ACCEPT_INTERSECT (GST_BASE_PARSE_SINK_PAD (parse));
GST_PAD_SET_ACCEPT_TEMPLATE (GST_BASE_PARSE_SINK_PAD (parse));
}
diff --git a/gst/videoparsers/plugin.c b/gst/videoparsers/plugin.c
index 79d1df6..fb866b5 100644
--- a/gst/videoparsers/plugin.c
+++ b/gst/videoparsers/plugin.c
@@ -51,7 +51,7 @@ plugin_init (GstPlugin * plugin)
ret |= gst_element_register (plugin, "h265parse",
GST_RANK_SECONDARY, GST_TYPE_H265_PARSE);
ret |= gst_element_register (plugin, "vc1parse",
- GST_RANK_NONE, GST_TYPE_VC1_PARSE);
+ GST_RANK_PRIMARY + 2, GST_TYPE_VC1_PARSE);
return ret;
}
--
1.9.1
|