From: <wt...@ke...> - 2008-12-29 16:19:07
|
CVS Root: /cvs/gstreamer Module: gst-plugins-bad Changes by: wtay Date: Mon Dec 29 2008 16:19:03 UTC Log message: Patch by: Sebastian Pölsterl <sebp at k-d-w dot org> * gst/mpegdemux/mpegtspacketizer.c: (mpegts_packetizer_parse_sdt): Add a scrambled field to the service structures retrieved from SDT to determine if a channel is scrambled. Fixes #565613. Modified files: . : ChangeLog gst/mpegdemux : mpegtspacketizer.c Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-bad/ChangeLog.diff?r1=1.3837&r2=1.3838 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-bad/gst/mpegdemux/mpegtspacketizer.c.diff?r1=1.5&r2=1.6 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gst-plugins-bad/ChangeLog,v retrieving revision 1.3837 retrieving revision 1.3838 diff -u -d -r1.3837 -r1.3838 --- ChangeLog 29 Dec 2008 15:54:43 -0000 1.3837 +++ ChangeLog 29 Dec 2008 16:18:44 -0000 1.3838 @@ -1,5 +1,13 @@ 2008-12-29 Wim Taymans <wim...@co...> + Patch by: Sebastian Pölsterl <sebp at k-d-w dot org> + + * gst/mpegdemux/mpegtspacketizer.c: (mpegts_packetizer_parse_sdt): + Add a scrambled field to the service structures retrieved from SDT to + determine if a channel is scrambled. Fixes #565613. +2008-12-29 Wim Taymans <wim...@co...> Patch by: Damien Lespiau <damien dot lespiau at gmail dot com> * gst/pcapparse/Makefile.am: Index: mpegtspacketizer.c RCS file: /cvs/gstreamer/gst-plugins-bad/gst/mpegdemux/mpegtspacketizer.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -d -r1.5 -r1.6 --- mpegtspacketizer.c 5 Nov 2008 18:11:55 -0000 1.5 +++ mpegtspacketizer.c 29 Dec 2008 16:18:47 -0000 1.6 @@ -1303,10 +1303,11 @@ get_encoding_and_convert (serviceprovider_name, serviceprovider_name_length); - gst_structure_set (service, "name", G_TYPE_STRING, servicename_tmp, - NULL); - gst_structure_set (service, "provider-name", G_TYPE_STRING, - serviceprovider_name_tmp, NULL); + gst_structure_set (service, + "name", G_TYPE_STRING, servicename_tmp, + "provider-name", G_TYPE_STRING, serviceprovider_name_tmp, + "scrambled", G_TYPE_BOOLEAN, scrambled, NULL); g_free (servicename_tmp); g_free (serviceprovider_name_tmp); } |
From: <wt...@ke...> - 2008-12-29 16:29:26
|
CVS Root: /cvs/gstreamer Module: gst-plugins-bad Changes by: wtay Date: Mon Dec 29 2008 16:29:23 UTC Log message: Patch by: Sebastian Pölsterl <sebp at k-d-w dot org> * gst/mpegdemux/mpegtspacketizer.c: (mpegts_packetizer_parse_eit): Fix memleak. Fixes #565614. Modified files: . : ChangeLog gst/mpegdemux : mpegtspacketizer.c Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-bad/ChangeLog.diff?r1=1.3838&r2=1.3839 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-bad/gst/mpegdemux/mpegtspacketizer.c.diff?r1=1.6&r2=1.7 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gst-plugins-bad/ChangeLog,v retrieving revision 1.3838 retrieving revision 1.3839 diff -u -d -r1.3838 -r1.3839 --- ChangeLog 29 Dec 2008 16:18:44 -0000 1.3838 +++ ChangeLog 29 Dec 2008 16:29:07 -0000 1.3839 @@ -2,6 +2,13 @@ Patch by: Sebastian Pölsterl <sebp at k-d-w dot org> + * gst/mpegdemux/mpegtspacketizer.c: (mpegts_packetizer_parse_eit): + Fix memleak. Fixes #565614. + +2008-12-29 Wim Taymans <wim...@co...> + Patch by: Sebastian Pölsterl <sebp at k-d-w dot org> * gst/mpegdemux/mpegtspacketizer.c: (mpegts_packetizer_parse_sdt): Add a scrambled field to the service structures retrieved from SDT to determine if a channel is scrambled. Fixes #565613. Index: mpegtspacketizer.c RCS file: /cvs/gstreamer/gst-plugins-bad/gst/mpegdemux/mpegtspacketizer.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- mpegtspacketizer.c 29 Dec 2008 16:18:47 -0000 1.6 +++ mpegtspacketizer.c 29 Dec 2008 16:29:08 -0000 1.7 @@ -1771,6 +1771,7 @@ } } gst_structure_set_value (event, "components", &components); + g_value_unset (&components); g_array_free (component_descriptors, TRUE); } gst_mpeg_descriptor_free (mpegdescriptor); |
From: <wt...@ke...> - 2008-12-29 17:30:21
|
CVS Root: /cvs/gstreamer Module: gst-plugins-bad Changes by: wtay Date: Mon Dec 29 2008 17:30:17 UTC Log message: Patch by: Robin Stocker <robin at nibor dot org> * gst/mpegdemux/gstmpegdemux.c: (gst_flups_demux_src_query): Converting from time to bytes operates on the stream_time, not the SCR timeline. The position reporting should happen in stream_time, not the segment timestamp range. See #557161. Modified files: . : ChangeLog gst/mpegdemux : gstmpegdemux.c Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-bad/ChangeLog.diff?r1=1.3840&r2=1.3841 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-bad/gst/mpegdemux/gstmpegdemux.c.diff?r1=1.7&r2=1.8 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gst-plugins-bad/ChangeLog,v retrieving revision 1.3840 retrieving revision 1.3841 diff -u -d -r1.3840 -r1.3841 --- ChangeLog 29 Dec 2008 16:45:18 -0000 1.3840 +++ ChangeLog 29 Dec 2008 17:30:01 -0000 1.3841 @@ -1,5 +1,15 @@ 2008-12-29 Wim Taymans <wim...@co...> + Patch by: Robin Stocker <robin at nibor dot org> + + * gst/mpegdemux/gstmpegdemux.c: (gst_flups_demux_src_query): + Converting from time to bytes operates on the stream_time, not the SCR + timeline. + The position reporting should happen in stream_time, not the segment + timestamp range. See #557161. +2008-12-29 Wim Taymans <wim...@co...> * gst-libs/gst/app/gstappsrc.c: (gst_app_src_class_init), (gst_app_src_init), (gst_app_src_set_property), (gst_app_src_get_property), (gst_app_src_query), Index: gstmpegdemux.c RCS file: /cvs/gstreamer/gst-plugins-bad/gst/mpegdemux/gstmpegdemux.c,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- gstmpegdemux.c 20 Oct 2008 14:19:17 -0000 1.7 +++ gstmpegdemux.c 29 Dec 2008 17:30:03 -0000 1.8 @@ -55,7 +55,7 @@ /* We clamp scr delta with 0 so negative bytes won't be possible */ #define GSTTIME_TO_BYTES(time) \ - ((time != -1) ? gst_util_uint64_scale (MAX(0,(gint64) (GSTTIME_TO_MPEGTIME(time) - demux->first_scr)), demux->scr_rate_n, demux->scr_rate_d) : -1) + ((time != -1) ? gst_util_uint64_scale (MAX(0,(gint64) (GSTTIME_TO_MPEGTIME(time))), demux->scr_rate_n, demux->scr_rate_d) : -1) #define BYTES_TO_GSTTIME(bytes) ((bytes != -1) ? MPEGTIME_TO_GSTTIME(gst_util_uint64_scale (bytes, demux->scr_rate_d, demux->scr_rate_n)) : -1) #define ADAPTER_OFFSET_FLUSH(_bytes_) demux->adapter_offset += (_bytes_) @@ -895,8 +895,7 @@ goto not_supported; } - position = demux->base_time + - MPEGTIME_TO_GSTTIME (demux->current_scr - demux->first_scr); + position = MPEGTIME_TO_GSTTIME (demux->current_scr - demux->first_scr); GST_LOG_OBJECT (demux, "Position at GStreamer Time:%" GST_TIME_FORMAT, GST_TIME_ARGS (position)); |
From: <wt...@ke...> - 2008-12-29 17:55:35
|
CVS Root: /cvs/gstreamer Module: gst-plugins-bad Changes by: wtay Date: Mon Dec 29 2008 17:55:32 UTC Log message: * gst/mpegdemux/gstmpegdemux.c: (gst_flups_demux_send_data): * gst/mpegdemux/gstmpegdemux.h: The position member in the newsegment event corresponds to the stream_time of the segment start position. Modified files: . : ChangeLog gst/mpegdemux : gstmpegdemux.c gstmpegdemux.h Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-bad/ChangeLog.diff?r1=1.3841&r2=1.3842 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-bad/gst/mpegdemux/gstmpegdemux.c.diff?r1=1.8&r2=1.9 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-bad/gst/mpegdemux/gstmpegdemux.h.diff?r1=1.1&r2=1.2 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gst-plugins-bad/ChangeLog,v retrieving revision 1.3841 retrieving revision 1.3842 diff -u -d -r1.3841 -r1.3842 --- ChangeLog 29 Dec 2008 17:30:01 -0000 1.3841 +++ ChangeLog 29 Dec 2008 17:55:16 -0000 1.3842 @@ -1,5 +1,12 @@ 2008-12-29 Wim Taymans <wim...@co...> + * gst/mpegdemux/gstmpegdemux.c: (gst_flups_demux_send_data): + * gst/mpegdemux/gstmpegdemux.h: + The position member in the newsegment event corresponds to the + stream_time of the segment start position. + +2008-12-29 Wim Taymans <wim...@co...> Patch by: Robin Stocker <robin at nibor dot org> * gst/mpegdemux/gstmpegdemux.c: (gst_flups_demux_src_query): Index: gstmpegdemux.c RCS file: /cvs/gstreamer/gst-plugins-bad/gst/mpegdemux/gstmpegdemux.c,v retrieving revision 1.8 retrieving revision 1.9 diff -u -d -r1.8 -r1.9 --- gstmpegdemux.c 29 Dec 2008 17:30:03 -0000 1.8 +++ gstmpegdemux.c 29 Dec 2008 17:55:18 -0000 1.9 @@ -480,7 +480,10 @@ stop = timestamp; } } - time = start; + if (GST_CLOCK_TIME_IS_VALID (demux->base_time) && start > demux->base_time) + time = start - demux->base_time; + else + time = 0; #ifdef HAVE_NEWSEG_FULL GST_INFO_OBJECT (demux, "sending new segment: rate %g applied_rate %g " Index: gstmpegdemux.h RCS file: /cvs/gstreamer/gst-plugins-bad/gst/mpegdemux/gstmpegdemux.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- gstmpegdemux.h 2 Sep 2008 12:04:31 -0000 1.1 +++ gstmpegdemux.h 29 Dec 2008 17:55:18 -0000 1.2 @@ -102,9 +102,9 @@ GstPESFilter filter; gint64 mux_rate; - guint64 first_scr; - guint64 first_dts; - guint64 base_time; + guint64 first_scr; + guint64 first_dts; + guint64 base_time; guint64 current_scr; guint64 next_scr; guint64 bytes_since_scr; |
From: <wt...@ke...> - 2008-12-29 18:22:44
|
CVS Root: /cvs/gstreamer Module: gst-plugins-bad Changes by: wtay Date: Mon Dec 29 2008 18:22:40 UTC Log message: * gst/mpegdemux/gstmpegdemux.c: (gst_flups_demux_src_query), (gst_flups_demux_parse_pack_start): Use the adjusted SCR for calculating the mux rate. Don't update the rate estimation after a discont. Modified files: . : ChangeLog gst/mpegdemux : gstmpegdemux.c Links: http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-bad/ChangeLog.diff?r1=1.3842&r2=1.3843 http://freedesktop.org/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins-bad/gst/mpegdemux/gstmpegdemux.c.diff?r1=1.9&r2=1.10 ====Begin Diffs==== Index: ChangeLog =================================================================== RCS file: /cvs/gstreamer/gst-plugins-bad/ChangeLog,v retrieving revision 1.3842 retrieving revision 1.3843 diff -u -d -r1.3842 -r1.3843 --- ChangeLog 29 Dec 2008 17:55:16 -0000 1.3842 +++ ChangeLog 29 Dec 2008 18:22:25 -0000 1.3843 @@ -1,5 +1,12 @@ 2008-12-29 Wim Taymans <wim...@co...> + * gst/mpegdemux/gstmpegdemux.c: (gst_flups_demux_src_query), + (gst_flups_demux_parse_pack_start): + Use the adjusted SCR for calculating the mux rate. + Don't update the rate estimation after a discont. + +2008-12-29 Wim Taymans <wim...@co...> * gst/mpegdemux/gstmpegdemux.c: (gst_flups_demux_send_data): * gst/mpegdemux/gstmpegdemux.h: The position member in the newsegment event corresponds to the Index: gstmpegdemux.c RCS file: /cvs/gstreamer/gst-plugins-bad/gst/mpegdemux/gstmpegdemux.c,v retrieving revision 1.9 retrieving revision 1.10 diff -u -d -r1.9 -r1.10 --- gstmpegdemux.c 29 Dec 2008 17:55:18 -0000 1.9 +++ gstmpegdemux.c 29 Dec 2008 18:22:26 -0000 1.10 @@ -960,8 +960,14 @@ gst_query_parse_duration (query, &format, &duration); + GST_LOG_OBJECT (demux, + "query on peer pad reported bytes %" G_GUINT64_FORMAT, duration); duration = BYTES_TO_GSTTIME (duration); + GST_LOG_OBJECT (demux, "converted to time %" GST_TIME_FORMAT, + GST_TIME_ARGS (duration)); gst_query_set_duration (query, GST_FORMAT_TIME, duration); res = TRUE; break; @@ -1013,6 +1019,8 @@ guint length; guint32 scr1, scr2; guint64 scr, scr_adjusted, new_rate; + guint64 scr_rate_n; + guint64 scr_rate_d; GST_DEBUG ("parsing pack start"); @@ -1126,12 +1134,12 @@ demux->first_scr_offset = demux->last_scr_offset; demux->base_time = MPEGTIME_TO_GSTTIME (demux->first_scr); /* at begin consider the new_rate as the scr rate, bytes/clock ticks */ - demux->scr_rate_n = new_rate; - demux->scr_rate_d = CLOCK_FREQ; + scr_rate_n = new_rate; + scr_rate_d = CLOCK_FREQ; } else if (demux->first_scr_offset != demux->last_scr_offset) { /* estimate byte rate related to the SCR */ - demux->scr_rate_n = demux->last_scr_offset - demux->first_scr_offset; - demux->scr_rate_d = scr - demux->first_scr; + scr_rate_n = demux->last_scr_offset - demux->first_scr_offset; + scr_rate_d = scr_adjusted - demux->first_scr; } GST_DEBUG_OBJECT (demux, "%s mode scr: %" G_GUINT64_FORMAT " at %" @@ -1141,8 +1149,7 @@ ((demux->sink_segment.rate >= 0.0) ? "forward" : "backward"), scr, demux->last_scr_offset, demux->first_scr, demux->first_scr_offset, - demux->scr_rate_n, demux->scr_rate_d, - (float) demux->scr_rate_n / demux->scr_rate_d); + scr_rate_n, scr_rate_d, (float) scr_rate_n / scr_rate_d); /* adjustment of the SCR */ if (demux->current_scr != G_MAXUINT64) { @@ -1188,6 +1195,9 @@ GST_DEBUG_OBJECT (demux, "discont found, diff: %" G_GINT64_FORMAT ", adjust %" G_GINT64_FORMAT, diff, demux->scr_adjust); scr_adjusted = demux->next_scr; + /* don't update rate estimation on disconts */ + scr_rate_n = demux->scr_rate_n; + scr_rate_d = demux->scr_rate_d; } else { demux->next_scr = scr_adjusted; } @@ -1196,6 +1206,8 @@ /* update the current_scr and rate members */ demux->mux_rate = new_rate; demux->current_scr = scr_adjusted; + demux->scr_rate_n = scr_rate_n; + demux->scr_rate_d = scr_rate_d; /* Reset the bytes_since_scr value to count the data remaining in the * adapter */ |