You can subscribe to this list here.
2000 |
Jan
(16) |
Feb
(60) |
Mar
(22) |
Apr
(14) |
May
(24) |
Jun
(20) |
Jul
(15) |
Aug
(55) |
Sep
(39) |
Oct
(27) |
Nov
(33) |
Dec
(53) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2001 |
Jan
(186) |
Feb
(87) |
Mar
(153) |
Apr
(186) |
May
(316) |
Jun
(376) |
Jul
(84) |
Aug
(135) |
Sep
(251) |
Oct
(327) |
Nov
(78) |
Dec
(1619) |
2002 |
Jan
(828) |
Feb
(500) |
Mar
(314) |
Apr
(310) |
May
(306) |
Jun
(361) |
Jul
(320) |
Aug
(136) |
Sep
(427) |
Oct
(285) |
Nov
(248) |
Dec
(344) |
2003 |
Jan
(469) |
Feb
(215) |
Mar
(148) |
Apr
(310) |
May
(303) |
Jun
(227) |
Jul
(315) |
Aug
(158) |
Sep
(191) |
Oct
(325) |
Nov
(479) |
Dec
(417) |
2004 |
Jan
(529) |
Feb
(445) |
Mar
(550) |
Apr
(380) |
May
(385) |
Jun
(263) |
Jul
(393) |
Aug
(186) |
Sep
(138) |
Oct
(272) |
Nov
(254) |
Dec
(259) |
2005 |
Jan
(310) |
Feb
(234) |
Mar
(171) |
Apr
(316) |
May
(364) |
Jun
(381) |
Jul
(420) |
Aug
(489) |
Sep
(663) |
Oct
(735) |
Nov
(839) |
Dec
(403) |
2006 |
Jan
(340) |
Feb
(445) |
Mar
(433) |
Apr
(451) |
May
(438) |
Jun
(312) |
Jul
(315) |
Aug
(283) |
Sep
(290) |
Oct
(243) |
Nov
(195) |
Dec
(182) |
2007 |
Jan
(278) |
Feb
(256) |
Mar
(318) |
Apr
(250) |
May
(286) |
Jun
(249) |
Jul
(226) |
Aug
(179) |
Sep
(265) |
Oct
(234) |
Nov
(244) |
Dec
(272) |
2008 |
Jan
(414) |
Feb
(379) |
Mar
(206) |
Apr
(308) |
May
(422) |
Jun
(350) |
Jul
(205) |
Aug
(349) |
Sep
(127) |
Oct
(306) |
Nov
(359) |
Dec
(236) |
2009 |
Jan
(326) |
Feb
(453) |
Mar
(684) |
Apr
(702) |
May
(1106) |
Jun
(774) |
Jul
(441) |
Aug
(561) |
Sep
(603) |
Oct
(824) |
Nov
(539) |
Dec
(347) |
2010 |
Jan
(470) |
Feb
(448) |
Mar
(845) |
Apr
(512) |
May
(428) |
Jun
(893) |
Jul
(347) |
Aug
(350) |
Sep
(689) |
Oct
(456) |
Nov
(254) |
Dec
(860) |
2011 |
Jan
(763) |
Feb
(106) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <tp...@ke...> - 2011-02-01 17:27:09
|
Module: gst-plugins-base Branch: master Commit: 9805bdfcc8874e3673f09b0913bdc62f5ea2d614 URL: http://cgit.freedesktop.org/gstreamer/gst-plugins-base/commit/?id=9805bdfcc8874e3673f09b0913bdc62f5ea2d614 Author: Tim-Philipp Müller <tim...@co...> Date: Tue Feb 1 15:57:14 2011 +0000 theoraenc: clean up property descriptions Remove "This property requires libtheora version >= 1.1" qualifiers from property descriptions. They aren't needed any longer now that we require libtheora >= 1.1. --- ext/theora/gsttheoraenc.c | 18 ++++++------------ 1 files changed, 6 insertions(+), 12 deletions(-) diff --git a/ext/theora/gsttheoraenc.c b/ext/theora/gsttheoraenc.c index 8ccfa93..d31485b 100644 --- a/ext/theora/gsttheoraenc.c +++ b/ext/theora/gsttheoraenc.c @@ -302,39 +302,33 @@ gst_theora_enc_class_init (GstTheoraEncClass * klass) g_object_class_install_property (gobject_class, PROP_SPEEDLEVEL, g_param_spec_int ("speed-level", "Speed level", "Controls the amount of motion vector searching done while " - "encoding. This property requires libtheora version >= 1.0", - 0, 3, THEORA_DEF_SPEEDLEVEL, + "encoding", 0, 3, THEORA_DEF_SPEEDLEVEL, (GParamFlags) G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_VP3_COMPATIBLE, g_param_spec_boolean ("vp3-compatible", "VP3 Compatible", - "Disables non-VP3 compatible features." - " This property requires libtheora version >= 1.1", + "Disables non-VP3 compatible features", THEORA_DEF_VP3_COMPATIBLE, (GParamFlags) G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_DROP_FRAMES, g_param_spec_boolean ("drop-frames", "VP3 Compatible", - "Allow or disallow frame dropping." - " This property requires libtheora version >= 1.1", + "Allow or disallow frame dropping", THEORA_DEF_DROP_FRAMES, (GParamFlags) G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_CAP_OVERFLOW, g_param_spec_boolean ("cap-overflow", "VP3 Compatible", - "Enable capping of bit reservoir overflows." - " This property requires libtheora version >= 1.1", + "Enable capping of bit reservoir overflows", THEORA_DEF_CAP_OVERFLOW, (GParamFlags) G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_CAP_UNDERFLOW, g_param_spec_boolean ("cap-underflow", "VP3 Compatible", - "Enable capping of bit reservoir underflows." - " This property requires libtheora version >= 1.1", + "Enable capping of bit reservoir underflows", THEORA_DEF_CAP_UNDERFLOW, (GParamFlags) G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_RATE_BUFFER, g_param_spec_int ("rate-buffer", "Rate Control Buffer", "Sets the size of the rate control buffer, in units of frames. " "The default value of 0 instructs the encoder to automatically " - "select an appropriate value." - " This property requires libtheora version >= 1.1", + "select an appropriate value", 0, 1000, THEORA_DEF_RATE_BUFFER, (GParamFlags) G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_MULTIPASS_CACHE_FILE, |
From: <tp...@ke...> - 2011-02-01 17:27:09
|
Module: gst-plugins-base Branch: master Commit: b7664eae716a7e0026c3d4d7ca10897a30f6a45e URL: http://cgit.freedesktop.org/gstreamer/gst-plugins-base/commit/?id=b7664eae716a7e0026c3d4d7ca10897a30f6a45e Author: Vincent Penquerc'h <vin...@co...> Date: Fri Jan 21 10:56:00 2011 +0000 oggmux: do not skip a pageno at start Discontinuities are automatically signalled by oggdemux at the start of a new stream. When oggmux is yet to output actual data pages, do not signal these discontinuities in the ogg stream. This patch may miss some actual discontinuities at the very start of a stream, but avoids the spurious missing pages when encoding happens normally. A better fix might involve finding a way to distinguish between actual data discontinuities and discontinuities merely marking the start of a new stream. Fixes an issue with ogg page numbering (would skip a number for no reason, which then looks like a packet was lost somewhere) when re-muxing an ogg stream, e.g. when re-tagging in rhythmbox. https://bugzilla.gnome.org/show_bug.cgi?id=629196 --- ext/ogg/gstoggmux.c | 17 ++++++++++++----- ext/ogg/gstoggmux.h | 1 + 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/ext/ogg/gstoggmux.c b/ext/ogg/gstoggmux.c index 11a6792..c36b4fb 100644 --- a/ext/ogg/gstoggmux.c +++ b/ext/ogg/gstoggmux.c @@ -394,6 +394,7 @@ gst_ogg_mux_request_new_pad (GstElement * element, oggpad->new_page = TRUE; oggpad->first_delta = FALSE; oggpad->prev_delta = FALSE; + oggpad->data_pushed = FALSE; oggpad->pagebuffers = g_queue_new (); oggpad->collect_event = (GstPadEventFunction) GST_PAD_EVENTFUNC (newpad); @@ -1306,11 +1307,15 @@ gst_ogg_mux_process_best_pad (GstOggMux * ogg_mux, GstOggPadData * best) } if (GST_BUFFER_IS_DISCONT (buf)) { - GST_LOG_OBJECT (pad->collect.pad, "got discont"); - packet.packetno++; - /* No public API for this; hack things in */ - pad->stream.pageno++; - force_flush = TRUE; + if (pad->data_pushed) { + GST_LOG_OBJECT (pad->collect.pad, "got discont"); + packet.packetno++; + /* No public API for this; hack things in */ + pad->stream.pageno++; + force_flush = TRUE; + } else { + GST_LOG_OBJECT (pad->collect.pad, "discont at stream start"); + } } /* flush the currently built page if necessary */ @@ -1364,6 +1369,7 @@ gst_ogg_mux_process_best_pad (GstOggMux * ogg_mux, GstOggPadData * best) GST_DEBUG_OBJECT (pad->collect.pad, "swapping in BOS packet"); ogg_stream_packetin (&pad->stream, &packet); + pad->data_pushed = TRUE; gp_time = GST_BUFFER_OFFSET (pad->buffer); granulepos = GST_BUFFER_OFFSET_END (pad->buffer); @@ -1607,6 +1613,7 @@ gst_ogg_mux_init_collectpads (GstCollectPads * collect) oggpad->new_page = TRUE; oggpad->first_delta = FALSE; oggpad->prev_delta = FALSE; + oggpad->data_pushed = FALSE; oggpad->pagebuffers = g_queue_new (); walk = g_slist_next (walk); diff --git a/ext/ogg/gstoggmux.h b/ext/ogg/gstoggmux.h index 6134d5e..37b1fae 100644 --- a/ext/ogg/gstoggmux.h +++ b/ext/ogg/gstoggmux.h @@ -78,6 +78,7 @@ typedef struct gboolean new_page; /* starting a new page */ gboolean first_delta; /* was the first packet in the page a delta */ gboolean prev_delta; /* was the previous buffer a delta frame */ + gboolean data_pushed; /* whether we pushed data already */ GstPadEventFunction collect_event; |
From: <wt...@ke...> - 2011-02-01 15:39:55
|
Module: gst-plugins-good Branch: master Commit: f95c30a4131a009c9b1e19ed94200fb2aa71f6bd URL: http://cgit.freedesktop.org/gstreamer/gst-plugins-good/commit/?id=f95c30a4131a009c9b1e19ed94200fb2aa71f6bd Author: Wim Taymans <wim...@co...> Date: Tue Feb 1 16:38:20 2011 +0100 j2kpay: skip EPH packets Include EPH markers into the previous chunk of packets. --- gst/rtp/gstrtpj2kpay.c | 5 +++++ 1 files changed, 5 insertions(+), 0 deletions(-) diff --git a/gst/rtp/gstrtpj2kpay.c b/gst/rtp/gstrtpj2kpay.c index 7385d3b..3734534 100644 --- a/gst/rtp/gstrtpj2kpay.c +++ b/gst/rtp/gstrtpj2kpay.c @@ -73,6 +73,7 @@ typedef enum J2K_MARKER_SOC = 0x4F, J2K_MARKER_SOT = 0x90, J2K_MARKER_SOP = 0x91, + J2K_MARKER_EPH = 0x92, J2K_MARKER_SOD = 0x93, J2K_MARKER_EOC = 0xD9 } RtpJ2KMarker; @@ -236,6 +237,10 @@ find_pu_end (GstRtpJ2KPay * pay, const guint8 * data, guint size, return offset - 2; cut_sop = TRUE; break; + case J2K_MARKER_EPH: + /* just skip over EPH */ + GST_LOG_OBJECT (pay, "found EPH at %u", offset); + break; default: if (offset >= state->next_sot) { GST_LOG_OBJECT (pay, "reached next SOT at %u", offset); |
From: <tp...@ke...> - 2011-02-01 14:42:28
|
Module: gst-plugins-bad Branch: master Commit: 149cca83d05a486bad3cb87553d3554940305b5f URL: http://cgit.freedesktop.org/gstreamer/gst-plugins-bad/commit/?id=149cca83d05a486bad3cb87553d3554940305b5f Author: Tim-Philipp Müller <tim...@co...> Date: Tue Feb 1 14:40:54 2011 +0000 id3mux: map new GST_TAG_ENCODED_BY to ID3v2 TENC frame https://bugzilla.gnome.org/show_bug.cgi?id=627268 --- configure.ac | 2 +- gst/id3tag/id3tag.c | 1 + 2 files changed, 2 insertions(+), 1 deletions(-) diff --git a/configure.ac b/configure.ac index 618aef9..3da8244 100644 --- a/configure.ac +++ b/configure.ac @@ -50,7 +50,7 @@ AC_LIBTOOL_WIN32_DLL AM_PROG_LIBTOOL dnl *** required versions of GStreamer stuff *** -GST_REQ=0.10.32 +GST_REQ=0.10.32.1 GSTPB_REQ=0.10.32 dnl *** autotools stuff **** diff --git a/gst/id3tag/id3tag.c b/gst/id3tag/id3tag.c index 272301b..2f3bebf 100644 --- a/gst/id3tag/id3tag.c +++ b/gst/id3tag/id3tag.c @@ -1047,6 +1047,7 @@ static const struct GST_TAG_COPYRIGHT, add_text_tag, "TCOP"}, { GST_TAG_COMPOSER, add_text_tag, "TCOM"}, { GST_TAG_GENRE, add_text_tag, "TCON"}, { + GST_TAG_ENCODED_BY, add_text_tag, "TENC"}, { /* Private frames */ GST_ID3_DEMUX_TAG_ID3V2_FRAME, add_id3v2frame_tag, NULL}, { |
From: <tp...@ke...> - 2011-02-01 14:30:05
|
Module: gst-plugins-base Branch: master Commit: c36a3e46f5151d6f8b0c723f9e12d1f19fcca4b5 URL: http://cgit.freedesktop.org/gstreamer/gst-plugins-base/commit/?id=c36a3e46f5151d6f8b0c723f9e12d1f19fcca4b5 Author: Sreerenj Balachandran <sre...@no...> Date: Thu Aug 19 22:31:07 2010 +0300 id3tag: map the ID3v2 TENC frame to GST_TAG_ENCODED_BY https://bugzilla.gnome.org/show_bug.cgi?id=627268 --- configure.ac | 2 +- gst-libs/gst/tag/gstid3tag.c | 1 + 2 files changed, 2 insertions(+), 1 deletions(-) diff --git a/configure.ac b/configure.ac index b84d0c5..5b08865 100644 --- a/configure.ac +++ b/configure.ac @@ -60,7 +60,7 @@ AC_LIBTOOL_WIN32_DLL AM_PROG_LIBTOOL dnl *** required versions of GStreamer stuff *** -GST_REQ=0.10.32 +GST_REQ=0.10.32.1 dnl *** autotools stuff **** diff --git a/gst-libs/gst/tag/gstid3tag.c b/gst-libs/gst/tag/gstid3tag.c index fc13fb2..8c9b352 100644 --- a/gst-libs/gst/tag/gstid3tag.c +++ b/gst-libs/gst/tag/gstid3tag.c @@ -201,6 +201,7 @@ static const GstTagEntryMatch tag_matches[] = { {GST_TAG_COMPOSER, "TCOM"}, {GST_TAG_COPYRIGHT, "TCOP"}, {GST_TAG_COPYRIGHT_URI, "WCOP"}, + {GST_TAG_ENCODED_BY, "TENC"}, {GST_TAG_GENRE, "TCON"}, {GST_TAG_DATE, "TDRC"}, {GST_TAG_COMMENT, "COMM"}, |
From: <tp...@ke...> - 2011-02-01 14:10:06
|
Module: gstreamer Branch: master Commit: de55965ebeb48fabc67ec95256a9e3521b396312 URL: http://cgit.freedesktop.org/gstreamer/gstreamer/commit/?id=de55965ebeb48fabc67ec95256a9e3521b396312 Author: Sreerenj Balachandran <sre...@no...> Date: Thu Aug 19 22:43:07 2010 +0300 taglist: add a new "encoded-by" tag Usecase: ID3v2 TENC ("Encoded by") frame. API: GST_TAG_ENCODED_BY https://bugzilla.gnome.org/show_bug.cgi?id=627268 --- docs/gst/gstreamer-sections.txt | 1 + gst/gsttaglist.c | 3 +++ gst/gsttaglist.h | 13 +++++++++++++ 3 files changed, 17 insertions(+), 0 deletions(-) diff --git a/docs/gst/gstreamer-sections.txt b/docs/gst/gstreamer-sections.txt index 0693472..5c731dc 100644 --- a/docs/gst/gstreamer-sections.txt +++ b/docs/gst/gstreamer-sections.txt @@ -2222,6 +2222,7 @@ GST_TAG_ISRC GST_TAG_ORGANIZATION GST_TAG_COPYRIGHT GST_TAG_COPYRIGHT_URI +GST_TAG_ENCODED_BY GST_TAG_COMPOSER GST_TAG_CONTACT GST_TAG_LICENSE diff --git a/gst/gsttaglist.c b/gst/gsttaglist.c index 06ae247..6bf596e 100644 --- a/gst/gsttaglist.c +++ b/gst/gsttaglist.c @@ -189,6 +189,9 @@ _gst_tag_initialize (void) gst_tag_register (GST_TAG_COPYRIGHT_URI, GST_TAG_FLAG_META, G_TYPE_STRING, _("copyright uri"), _("URI to the copyright notice of the data"), NULL); + gst_tag_register (GST_TAG_ENCODED_BY, GST_TAG_FLAG_META, G_TYPE_STRING, + _("encoded by"), _("name of the encoding person or organization"), + gst_tag_merge_strings_with_comma); gst_tag_register (GST_TAG_CONTACT, GST_TAG_FLAG_META, G_TYPE_STRING, _("contact"), _("contact information"), gst_tag_merge_strings_with_comma); diff --git a/gst/gsttaglist.h b/gst/gsttaglist.h index c05aeb1..f4bef9c 100644 --- a/gst/gsttaglist.h +++ b/gst/gsttaglist.h @@ -580,6 +580,19 @@ gboolean gst_tag_list_get_buffer_index (const GstTagList * list, */ #define GST_TAG_COPYRIGHT_URI "copyright-uri" /** + * GST_TAG_ENCODED_BY: + * + * name of the person or organisation that encoded the file. May contain a + * copyright message if the person or organisation also holds the copyright + * (string) + * + * Note: do not use this field to describe the encoding application. Use + * #GST_TAG_APPLICATION_NAME or #GST_TAG_COMMENT for that. + * + * Since: 0.10.33 + */ +#define GST_TAG_ENCODED_BY "encoded-by" +/** * GST_TAG_CONTACT: * * contact information (string) |
From: <tp...@ke...> - 2011-01-31 23:34:48
|
Module: gst-ffmpeg Branch: master Commit: 8d40c6357d024c0a54262429ff688756049b0135 URL: http://cgit.freedesktop.org/gstreamer/gst-ffmpeg/commit/?id=8d40c6357d024c0a54262429ff688756049b0135 Author: Tim-Philipp Müller <tim...@co...> Date: Mon Jan 31 23:28:33 2011 +0000 ffmpegdec: improve error message when set_caps is called but we have no mapping This may happen e.g. if gst-ffmpeg is compiled against an external libavcodec and the external lib is upgraded. See e.g. https://bugzilla.gnome.org/show_bug.cgi?id=640825 --- ext/ffmpeg/gstffmpegdec.c | 19 ++++++++++++++++--- 1 files changed, 16 insertions(+), 3 deletions(-) diff --git a/ext/ffmpeg/gstffmpegdec.c b/ext/ffmpeg/gstffmpegdec.c index d3e7c40..5704baa 100644 --- a/ext/ffmpeg/gstffmpegdec.c +++ b/ext/ffmpeg/gstffmpegdec.c @@ -1294,9 +1294,22 @@ gst_ffmpegdec_negotiate (GstFFMpegDec * ffmpegdec, gboolean force) /* ERRORS */ no_caps: { - GST_ELEMENT_ERROR (ffmpegdec, CORE, NEGOTIATION, (NULL), - ("could not find caps for codec (%s), unknown type", - oclass->in_plugin->name)); +#ifdef HAVE_FFMPEG_UNINSTALLED + /* using internal ffmpeg snapshot */ + GST_ELEMENT_ERROR (ffmpegdec, CORE, NEGOTIATION, + ("Could not find GStreamer caps mapping for FFmpeg codec '%s'.", + oclass->in_plugin->name), (NULL)); +#else + /* using external ffmpeg */ + GST_ELEMENT_ERROR (ffmpegdec, CORE, NEGOTIATION, + ("Could not find GStreamer caps mapping for FFmpeg codec '%s', and " + "you are using an external libavcodec. This is most likely due to " + "a packaging problem and/or libavcodec having been upgraded to a " + "version that is not compatible with this version of " + "gstreamer-ffmpeg. Make sure your gstreamer-ffmpeg and libavcodec " + "packages come from the same source/repository.", + oclass->in_plugin->name), (NULL)); +#endif return FALSE; } caps_failed: |
From: <te...@ke...> - 2011-01-31 22:57:13
|
Module: gst-plugins-good Branch: master Commit: 07ebec51f50a1f3269654791bcfb3f5b6854b7fd URL: http://cgit.freedesktop.org/gstreamer/gst-plugins-good/commit/?id=07ebec51f50a1f3269654791bcfb3f5b6854b7fd Author: Olivier Crête <oli...@co...> Date: Mon Jan 31 17:56:18 2011 -0500 rtppcmapay: Rename the class to have the right name It was name pmca instead of pcma and made debug logs hard to search. --- gst/rtp/gstrtppcmapay.c | 6 +++--- gst/rtp/gstrtppcmapay.h | 12 ++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/gst/rtp/gstrtppcmapay.c b/gst/rtp/gstrtppcmapay.c index 97b31a9..d897ce1 100644 --- a/gst/rtp/gstrtppcmapay.c +++ b/gst/rtp/gstrtppcmapay.c @@ -53,7 +53,7 @@ static GstStaticPadTemplate gst_rtp_pcma_pay_src_template = static gboolean gst_rtp_pcma_pay_setcaps (GstBaseRTPPayload * payload, GstCaps * caps); -GST_BOILERPLATE (GstRtpPmcaPay, gst_rtp_pcma_pay, GstBaseRTPAudioPayload, +GST_BOILERPLATE (GstRtpPcmaPay, gst_rtp_pcma_pay, GstBaseRTPAudioPayload, GST_TYPE_BASE_RTP_AUDIO_PAYLOAD); static void @@ -72,7 +72,7 @@ gst_rtp_pcma_pay_base_init (gpointer klass) } static void -gst_rtp_pcma_pay_class_init (GstRtpPmcaPayClass * klass) +gst_rtp_pcma_pay_class_init (GstRtpPcmaPayClass * klass) { GstBaseRTPPayloadClass *gstbasertppayload_class; @@ -82,7 +82,7 @@ gst_rtp_pcma_pay_class_init (GstRtpPmcaPayClass * klass) } static void -gst_rtp_pcma_pay_init (GstRtpPmcaPay * rtppcmapay, GstRtpPmcaPayClass * klass) +gst_rtp_pcma_pay_init (GstRtpPcmaPay * rtppcmapay, GstRtpPcmaPayClass * klass) { GstBaseRTPAudioPayload *basertpaudiopayload; diff --git a/gst/rtp/gstrtppcmapay.h b/gst/rtp/gstrtppcmapay.h index 7a39d7d..a51e975 100644 --- a/gst/rtp/gstrtppcmapay.h +++ b/gst/rtp/gstrtppcmapay.h @@ -21,26 +21,26 @@ G_BEGIN_DECLS -typedef struct _GstRtpPmcaPay GstRtpPmcaPay; -typedef struct _GstRtpPmcaPayClass GstRtpPmcaPayClass; +typedef struct _GstRtpPcmaPay GstRtpPcmaPay; +typedef struct _GstRtpPcmaPayClass GstRtpPcmaPayClass; #define GST_TYPE_RTP_PCMA_PAY \ (gst_rtp_pcma_pay_get_type()) #define GST_RTP_PCMA_PAY(obj) \ - (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_RTP_PCMA_PAY,GstRtpPmcaPay)) + (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_RTP_PCMA_PAY,GstRtpPcmaPay)) #define GST_RTP_PCMA_PAY_CLASS(klass) \ - (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_RTP_PCMA_PAY,GstRtpPmcaPayClass)) + (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_RTP_PCMA_PAY,GstRtpPcmaPayClass)) #define GST_IS_RTP_PCMA_PAY(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_RTP_PCMA_PAY)) #define GST_IS_RTP_PCMA_PAY_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_RTP_PCMA_PAY)) -struct _GstRtpPmcaPay +struct _GstRtpPcmaPay { GstBaseRTPAudioPayload audiopayload; }; -struct _GstRtpPmcaPayClass +struct _GstRtpPcmaPayClass { GstBaseRTPAudioPayloadClass parent_class; }; |
From: <tp...@ke...> - 2011-01-31 19:03:08
|
Module: gst-editing-services Branch: master Commit: 493059f01c68fc600d8cb72329c73a3eebdce9ef URL: http://cgit.freedesktop.org/gstreamer/gst-editing-services/commit/?id=493059f01c68fc600d8cb72329c73a3eebdce9ef Author: Tim-Philipp Müller <tim...@co...> Date: Mon Jan 31 19:01:46 2011 +0000 tools: ignore unversioned ges-launch as well --- tools/.gitignore | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) diff --git a/tools/.gitignore b/tools/.gitignore index dc656a3..eca4dbd 100644 --- a/tools/.gitignore +++ b/tools/.gitignore @@ -1 +1,2 @@ +ges-launch ges-launch-0.10 |
From: <tp...@ke...> - 2011-01-31 19:03:08
|
Module: gst-editing-services Branch: master Commit: 2a98347461bf67dc10d97847ef31e54d74fca1ff URL: http://cgit.freedesktop.org/gstreamer/gst-editing-services/commit/?id=2a98347461bf67dc10d97847ef31e54d74fca1ff Author: Tim-Philipp Müller <tim...@co...> Date: Mon Jan 31 19:00:49 2011 +0000 ges: fix a couple of printf format warnings --- ges/ges-keyfile-formatter.c | 2 +- ges/ges-simple-timeline-layer.c | 5 +++-- ges/ges-timeline-layer.c | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/ges/ges-keyfile-formatter.c b/ges/ges-keyfile-formatter.c index 9ea90d3..5b69c23 100644 --- a/ges/ges-keyfile-formatter.c +++ b/ges/ges-keyfile-formatter.c @@ -302,7 +302,7 @@ create_object (GKeyFile * kf, gchar * group, GESTimelineLayer * layer) goto fail_free_keys; } - GST_DEBUG ("processing parameter list", group); + GST_DEBUG ("processing parameter list '%s'", group); for (p = params, i = 1; i < n_keys; i++, p++) { gchar *value; diff --git a/ges/ges-simple-timeline-layer.c b/ges/ges-simple-timeline-layer.c index 23a1520..104580b 100644 --- a/ges/ges-simple-timeline-layer.c +++ b/ges/ges-simple-timeline-layer.c @@ -250,7 +250,8 @@ gstl_recalculate (GESSimpleTimelineLayer * self) start = pos; if (end > start) { - GST_ERROR ("%d, %d: overlapping transitions!", start, end); + GST_ERROR ("%" G_GUINT64_FORMAT ", %" G_GUINT64_FORMAT ": " + "overlapping transitions!", start, end); valid = FALSE; } } @@ -265,7 +266,7 @@ gstl_recalculate (GESSimpleTimelineLayer * self) valid = FALSE; } - GST_DEBUG ("Finished recalculating: final start pos is: " GST_TIME_FORMAT, + GST_DEBUG ("Finished recalculating: final start pos is: %" GST_TIME_FORMAT, GST_TIME_ARGS (pos)); GES_TIMELINE_LAYER (self)->max_gnl_priority = priority; diff --git a/ges/ges-timeline-layer.c b/ges/ges-timeline-layer.c index ca10a72..3cc057f 100644 --- a/ges/ges-timeline-layer.c +++ b/ges/ges-timeline-layer.c @@ -234,7 +234,7 @@ ges_timeline_layer_add_object (GESTimelineLayer * layer, tl_obj_layer = ges_timeline_object_get_layer (object); if (G_UNLIKELY (tl_obj_layer)) { - GST_WARNING ("TimelineObject %p already belongs to another layer"); + GST_WARNING ("TimelineObject %p already belongs to another layer", object); g_object_unref (tl_obj_layer); return FALSE; } |
From: <tp...@ke...> - 2011-01-31 19:03:08
|
Module: gst-editing-services Branch: master Commit: 2ab7c301619980fa8b298c4fb9df2e81a7fd3f2d URL: http://cgit.freedesktop.org/gstreamer/gst-editing-services/commit/?id=2ab7c301619980fa8b298c4fb9df2e81a7fd3f2d Author: Tim-Philipp Müller <tim...@co...> Date: Mon Jan 31 19:01:24 2011 +0000 ges-launch: fix printf format issue --- tools/ges-launch.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/tools/ges-launch.c b/tools/ges-launch.c index 9868cd3..dfaaa4f 100644 --- a/tools/ges-launch.c +++ b/tools/ges-launch.c @@ -223,7 +223,7 @@ create_timeline (int nbargs, gchar ** argv) g_error ("'%s': could not open path!", source); if (!(uri = ensure_uri (source))) { - GST_ERROR ("couldn't create uri for '%'s", source); + GST_ERROR ("couldn't create uri for '%s'", source); exit (-1); } inpoint = str_to_time (argv[i * 3 + 1]); |
From: <mn...@ke...> - 2011-01-31 18:25:34
|
Module: gst-plugins-base Branch: master Commit: 505fa27159156aaf59a32646b660ee56408ab306 URL: http://cgit.freedesktop.org/gstreamer/gst-plugins-base/commit/?id=505fa27159156aaf59a32646b660ee56408ab306 Author: Mark Nauwelaerts <mar...@co...> Date: Sat Jan 29 19:40:23 2011 +0100 xmptag: cast argument to isdigit to int ... as that is the specification and fixes compilation on Cygwin: gstxmptaag.c: In function 'read_one_tag': gstxmptag.c:1015: error: array subscript has type 'char' --- gst-libs/gst/tag/gstxmptag.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/gst-libs/gst/tag/gstxmptag.c b/gst-libs/gst/tag/gstxmptag.c index 2697f40..c3bc636 100644 --- a/gst-libs/gst/tag/gstxmptag.c +++ b/gst-libs/gst/tag/gstxmptag.c @@ -1012,7 +1012,7 @@ read_one_tag (GstTagList * list, const gchar * tag, XmpTag * xmptag, gint num_digits = 0; /* find the number of digits */ - while (isdigit (usec_str[num_digits++]) && num_digits < 6); + while (isdigit ((gint) usec_str[num_digits++]) && num_digits < 6); if (num_digits > 0) { /* fill up to 6 digits with 0 */ |
From: <mn...@ke...> - 2011-01-31 18:25:33
|
Module: gst-plugins-base Branch: master Commit: e5e09844ea6134f8a8fe851e6b572d968a2ecc44 URL: http://cgit.freedesktop.org/gstreamer/gst-plugins-base/commit/?id=e5e09844ea6134f8a8fe851e6b572d968a2ecc44 Author: Mark Nauwelaerts <mar...@co...> Date: Sat Jan 29 20:43:08 2011 +0100 tcp: use socklen_t where appropriate rather than specific type In particular, fixes Cygwin build where socklen_t is defined as int in line with native win32 api definition. --- gst/tcp/gsttcpserversink.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/gst/tcp/gsttcpserversink.c b/gst/tcp/gsttcpserversink.c index c0cb95f..fdca0ec 100644 --- a/gst/tcp/gsttcpserversink.c +++ b/gst/tcp/gsttcpserversink.c @@ -149,7 +149,7 @@ gst_tcp_server_sink_handle_server_read (GstTCPServerSink * sink) /* new client */ int client_sock_fd; struct sockaddr_in client_address; - unsigned int client_address_len; + socklen_t client_address_len; /* For some stupid reason, client_address and client_address_len has to be * zeroed */ |
From: <tp...@ke...> - 2011-01-31 18:09:59
|
Module: gst-plugins-base Branch: master Commit: 33a5e3e06f091afc31ef206a267c420ae4a5bb3a URL: http://cgit.freedesktop.org/gstreamer/gst-plugins-base/commit/?id=33a5e3e06f091afc31ef206a267c420ae4a5bb3a Author: Tim-Philipp Müller <tim...@co...> Date: Mon Jan 31 18:06:18 2011 +0000 appsink: add buffer fallback in case the application doesn't handle buffer lists We shouldn't assume the application handles buffer lists, for ease-of-use reasons and for backwards compatibility reasons. --- gst-libs/gst/app/gstappsink.c | 62 +++++++++++++++++++++++++++- tests/check/elements/appsink.c | 87 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 147 insertions(+), 2 deletions(-) diff --git a/gst-libs/gst/app/gstappsink.c b/gst-libs/gst/app/gstappsink.c index 8f64aba..07a3989 100644 --- a/gst-libs/gst/app/gstappsink.c +++ b/gst-libs/gst/app/gstappsink.c @@ -111,6 +111,8 @@ struct _GstAppSinkPrivate GstAppSinkCallbacks callbacks; gpointer user_data; GDestroyNotify notify; + + gboolean buffer_lists_supported; }; GST_DEBUG_CATEGORY_STATIC (app_sink_debug); @@ -623,6 +625,21 @@ gst_app_sink_flush_unlocked (GstAppSink * appsink) g_cond_signal (priv->cond); } +#define NEW_BUFFER_LIST_SIGID \ + gst_app_sink_signals[SIGNAL_NEW_BUFFER_LIST] + +static gboolean +gst_app_sink_check_buffer_lists_support (GstAppSink * appsink) +{ + gboolean ret; + + ret = (appsink->priv->callbacks.new_buffer_list != NULL) || + g_signal_has_handler_pending (appsink, NEW_BUFFER_LIST_SIGID, 0, FALSE); + + GST_INFO_OBJECT (appsink, "application supports buffer lists: %d", ret); + return ret; +} + static gboolean gst_app_sink_start (GstBaseSink * psink) { @@ -633,6 +650,8 @@ gst_app_sink_start (GstBaseSink * psink) GST_DEBUG_OBJECT (appsink, "starting"); priv->flushing = FALSE; priv->started = TRUE; + priv->buffer_lists_supported = + gst_app_sink_check_buffer_lists_support (appsink); g_mutex_unlock (priv->mutex); return TRUE; @@ -812,9 +831,46 @@ gst_app_sink_render (GstBaseSink * psink, GstBuffer * buffer) } static GstFlowReturn -gst_app_sink_render_list (GstBaseSink * psink, GstBufferList * list) +gst_app_sink_render_list (GstBaseSink * sink, GstBufferList * list) { - return gst_app_sink_render_common (psink, GST_MINI_OBJECT_CAST (list), TRUE); + GstBufferListIterator *it; + GstFlowReturn flow; + GstAppSink *appsink; + GstBuffer *group; + + appsink = GST_APP_SINK_CAST (sink); + + if (appsink->priv->buffer_lists_supported) + return gst_app_sink_render_common (sink, GST_MINI_OBJECT_CAST (list), TRUE); + + /* The application doesn't support buffer lists, extract individual buffers + * then and push them one-by-one */ + GST_INFO_OBJECT (sink, "chaining each group in list as a merged buffer"); + + it = gst_buffer_list_iterate (list); + + if (gst_buffer_list_iterator_next_group (it)) { + do { + group = gst_buffer_list_iterator_merge_group (it); + if (group == NULL) { + group = gst_buffer_new (); + GST_DEBUG_OBJECT (sink, "chaining empty group"); + } else { + GST_DEBUG_OBJECT (sink, "chaining group"); + } + flow = gst_app_sink_render (sink, group); + gst_buffer_unref (group); + } while (flow == GST_FLOW_OK && gst_buffer_list_iterator_next_group (it)); + } else { + GST_DEBUG_OBJECT (sink, "chaining empty group"); + group = gst_buffer_new (); + flow = gst_app_sink_render (sink, group); + gst_buffer_unref (group); + } + + gst_buffer_list_iterator_free (it); + + return flow; } static GstCaps * @@ -1335,6 +1391,8 @@ gst_app_sink_set_callbacks (GstAppSink * appsink, priv->callbacks = *callbacks; priv->user_data = user_data; priv->notify = notify; + priv->buffer_lists_supported = + gst_app_sink_check_buffer_lists_support (appsink); GST_OBJECT_UNLOCK (appsink); } diff --git a/tests/check/elements/appsink.c b/tests/check/elements/appsink.c index 3d03439..34982ef 100644 --- a/tests/check/elements/appsink.c +++ b/tests/check/elements/appsink.c @@ -317,6 +317,91 @@ GST_START_TEST (test_buffer_list) GST_END_TEST; +static GstFlowReturn +callback_function_buffer (GstAppSink * appsink, gpointer p_counter) +{ + GstBuffer *buf; + gint *p_int_counter = p_counter; + + buf = gst_app_sink_pull_buffer (appsink); + fail_unless (GST_IS_BUFFER (buf)); + + /* buffer list has 3 buffers in two groups */ + switch (*p_int_counter) { + case 0: + fail_unless_equals_int (GST_BUFFER_SIZE (buf), sizeof (gint)); + fail_unless_equals_int ((((gint *) GST_BUFFER_DATA (buf))[0]), 1); + break; + case 1: + fail_unless_equals_int (GST_BUFFER_SIZE (buf), 2 * sizeof (gint)); + fail_unless_equals_int ((((gint *) GST_BUFFER_DATA (buf))[0]), 2); + fail_unless_equals_int ((((gint *) GST_BUFFER_DATA (buf))[1]), 4); + break; + default: + g_warn_if_reached (); + break; + } + + gst_buffer_unref (buf); + + *p_int_counter += 1; + + return GST_FLOW_OK; +} + +GST_START_TEST (test_buffer_list_fallback) +{ + GstElement *sink; + GstBufferList *list; + GstAppSinkCallbacks callbacks = { NULL }; + gint counter = 0; + + sink = setup_appsink (); + + callbacks.new_buffer = callback_function_buffer; + + gst_app_sink_set_callbacks (GST_APP_SINK (sink), &callbacks, &counter, NULL); + + ASSERT_SET_STATE (sink, GST_STATE_PLAYING, GST_STATE_CHANGE_ASYNC); + + list = create_buffer_list (); + fail_unless (gst_pad_push_list (mysrcpad, list) == GST_FLOW_OK); + + fail_unless_equals_int (counter, 2); + + ASSERT_SET_STATE (sink, GST_STATE_NULL, GST_STATE_CHANGE_SUCCESS); + cleanup_appsink (sink); +} + +GST_END_TEST; + +GST_START_TEST (test_buffer_list_fallback_signal) +{ + GstElement *sink; + GstBufferList *list; + gint counter = 0; + + sink = setup_appsink (); + + /* C calling convention to the rescue.. */ + g_signal_connect (sink, "new-buffer", G_CALLBACK (callback_function_buffer), + &counter); + + g_object_set (sink, "emit-signals", TRUE, NULL); + + ASSERT_SET_STATE (sink, GST_STATE_PLAYING, GST_STATE_CHANGE_ASYNC); + + list = create_buffer_list (); + fail_unless (gst_pad_push_list (mysrcpad, list) == GST_FLOW_OK); + + fail_unless_equals_int (counter, 2); + + ASSERT_SET_STATE (sink, GST_STATE_NULL, GST_STATE_CHANGE_SUCCESS); + cleanup_appsink (sink); +} + +GST_END_TEST; + static Suite * appsink_suite (void) { @@ -329,6 +414,8 @@ appsink_suite (void) tcase_add_test (tc_chain, test_notify0); tcase_add_test (tc_chain, test_notify1); tcase_add_test (tc_chain, test_buffer_list); + tcase_add_test (tc_chain, test_buffer_list_fallback); + tcase_add_test (tc_chain, test_buffer_list_fallback_signal); return s; } |
From: <mn...@ke...> - 2011-01-31 18:05:01
|
Module: gstreamer Branch: master Commit: af1340979860e71e59f6124bd1ce988c71ea17f5 URL: http://cgit.freedesktop.org/gstreamer/gstreamer/commit/?id=af1340979860e71e59f6124bd1ce988c71ea17f5 Author: Mark Nauwelaerts <mar...@co...> Date: Sat Jan 29 18:02:11 2011 +0100 net: use socklen_t where appropriate rather than specific type In particular, fixes Cygwin build where socklen_t is defined as int in line with native win32 api definition. --- libs/gst/net/gstnettimeprovider.c | 8 +------- libs/gst/net/gstnettimeprovider.h | 4 ++++ 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/libs/gst/net/gstnettimeprovider.c b/libs/gst/net/gstnettimeprovider.c index a3e80e0..b04d282 100644 --- a/libs/gst/net/gstnettimeprovider.c +++ b/libs/gst/net/gstnettimeprovider.c @@ -352,7 +352,7 @@ gst_net_time_provider_start (GstNetTimeProvider * self) { gint ru; struct sockaddr_in my_addr; - guint len; + socklen_t len; int port; gint ret; GError *error; @@ -387,13 +387,7 @@ gst_net_time_provider_start (GstNetTimeProvider * self) goto bind_error; len = sizeof (my_addr); -#ifdef G_OS_WIN32 - ret = - getsockname (self->priv->sock.fd, (struct sockaddr *) &my_addr, - (gint *) & len); -#else ret = getsockname (self->priv->sock.fd, (struct sockaddr *) &my_addr, &len); -#endif if (ret < 0) goto getsockname_error; diff --git a/libs/gst/net/gstnettimeprovider.h b/libs/gst/net/gstnettimeprovider.h index 204d781..c9609e1 100644 --- a/libs/gst/net/gstnettimeprovider.h +++ b/libs/gst/net/gstnettimeprovider.h @@ -35,6 +35,10 @@ G_BEGIN_DECLS #ifdef G_OS_WIN32 #include <winsock2.h> +#include <ws2tcpip.h> +#ifndef socklen_t +#define socklen_t int +#endif #else #include <netdb.h> #include <sys/socket.h> |
From: <tp...@ke...> - 2011-01-31 17:48:33
|
Module: gst-plugins-bad Branch: master Commit: c57a9e4ba9e267b9b370d4f6c61675504a69184d URL: http://cgit.freedesktop.org/gstreamer/gst-plugins-bad/commit/?id=c57a9e4ba9e267b9b370d4f6c61675504a69184d Author: Tim-Philipp Müller <tim...@co...> Date: Mon Jan 31 17:45:19 2011 +0000 videoparsers: dist h264parse.h, fixing make distcheck Spotted by Nathanael D. Noblet --- gst/videoparsers/Makefile.am | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/gst/videoparsers/Makefile.am b/gst/videoparsers/Makefile.am index 0ff15e7..171c7ce 100644 --- a/gst/videoparsers/Makefile.am +++ b/gst/videoparsers/Makefile.am @@ -8,5 +8,5 @@ libgsth263parse_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) libgsth263parse_la_LIBTOOLFLAGS = --tag=disable-static noinst_HEADERS = gsth263parse.h h263parse.h \ - gsth264parse.h gsth264parse.h \ + gsth264parse.h gsth264parse.h h264parse.h \ gstbaseparse.h |
From: <thi...@ke...> - 2011-01-31 15:42:23
|
Module: gst-plugins-bad Branch: master Commit: ad019102e5d3b354c48eba7fac0591810d7776c6 URL: http://cgit.freedesktop.org/gstreamer/gst-plugins-bad/commit/?id=ad019102e5d3b354c48eba7fac0591810d7776c6 Author: Teemu Katajisto <tee...@di...> Date: Fri Jan 14 10:19:28 2011 +0200 camerabin: optimize setting new caps for preview image pipeline Avoid re-creating and linking of preview image pipeline when setting new preview image caps. Backported from camerabin2. https://bugzilla.gnome.org/show_bug.cgi?id=639502 --- gst/camerabin/camerabinpreview.c | 192 +++++++++++++++++++++++--------------- gst/camerabin/camerabinpreview.h | 35 +++++-- gst/camerabin/gstcamerabin.c | 43 ++++----- gst/camerabin/gstcamerabin.h | 7 +- 4 files changed, 166 insertions(+), 111 deletions(-) Diff: http://cgit.freedesktop.org/gstreamer/gst-plugins-bad/diff/?id=ad019102e5d3b354c48eba7fac0591810d7776c6 |
From: <wt...@ke...> - 2011-01-31 14:33:02
|
Module: gst-plugins-base Branch: master Commit: 71dec68cbab5f72f4cd7d884903cfdb19e27fda6 URL: http://cgit.freedesktop.org/gstreamer/gst-plugins-base/commit/?id=71dec68cbab5f72f4cd7d884903cfdb19e27fda6 Author: Cai Yuanqing <Yua...@ti...> Date: Wed Jan 26 10:32:32 2011 +0800 appsink: send new-buffer-list signal Send new-buffer-list signal when emit-signals is TRUE https://bugzilla.gnome.org/show_bug.cgi?id=640607 --- gst-libs/gst/app/gstappsink.c | 5 ++++- 1 files changed, 4 insertions(+), 1 deletions(-) diff --git a/gst-libs/gst/app/gstappsink.c b/gst-libs/gst/app/gstappsink.c index a6e8c3d..8f64aba 100644 --- a/gst-libs/gst/app/gstappsink.c +++ b/gst-libs/gst/app/gstappsink.c @@ -271,7 +271,8 @@ gst_app_sink_class_init (GstAppSinkClass * klass) g_object_class_install_property (gobject_class, PROP_EMIT_SIGNALS, g_param_spec_boolean ("emit-signals", "Emit signals", - "Emit new-preroll and new-buffer signals", DEFAULT_PROP_EMIT_SIGNALS, + "Emit new-preroll, new-buffer and new-buffer-list signals", + DEFAULT_PROP_EMIT_SIGNALS, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); g_object_class_install_property (gobject_class, PROP_MAX_BUFFERS, @@ -780,6 +781,8 @@ restart: if (is_list) { if (priv->callbacks.new_buffer_list) priv->callbacks.new_buffer_list (appsink, priv->user_data); + else if (emit) + g_signal_emit (appsink, gst_app_sink_signals[SIGNAL_NEW_BUFFER_LIST], 0); } else { if (priv->callbacks.new_buffer) priv->callbacks.new_buffer (appsink, priv->user_data); |
From: <tp...@ke...> - 2011-01-31 13:46:06
|
Module: gst-plugins-good Branch: master Commit: ede0635d45342f6e06aa213350ce006c2dcb6628 URL: http://cgit.freedesktop.org/gstreamer/gst-plugins-good/commit/?id=ede0635d45342f6e06aa213350ce006c2dcb6628 Author: Tim-Philipp Müller <tim...@co...> Date: Mon Jan 31 13:44:45 2011 +0000 deinterlace: simplify template caps We can merge all the YUV variants into one single structure. --- gst/deinterlace/gstdeinterlace.c | 30 ++++++++++-------------------- 1 files changed, 10 insertions(+), 20 deletions(-) diff --git a/gst/deinterlace/gstdeinterlace.c b/gst/deinterlace/gstdeinterlace.c index 1ad960e..300f23e 100644 --- a/gst/deinterlace/gstdeinterlace.c +++ b/gst/deinterlace/gstdeinterlace.c @@ -160,34 +160,24 @@ gst_deinterlace_modes_get_type (void) return deinterlace_modes_type; } +#define DEINTERLACE_CAPS \ + GST_VIDEO_CAPS_YUV ("{ AYUV, Y444, YUY2, YVYU, UYVY, Y42B, I420, YV12, Y41B }") ";" \ + GST_VIDEO_CAPS_ARGB ";" GST_VIDEO_CAPS_ABGR ";" \ + GST_VIDEO_CAPS_RGBA ";" GST_VIDEO_CAPS_BGRA ";" \ + GST_VIDEO_CAPS_xRGB ";" GST_VIDEO_CAPS_xBGR ";" \ + GST_VIDEO_CAPS_RGBx ";" GST_VIDEO_CAPS_BGRx ";" \ + GST_VIDEO_CAPS_RGB ";" GST_VIDEO_CAPS_BGR + static GstStaticPadTemplate src_templ = GST_STATIC_PAD_TEMPLATE ("src", GST_PAD_SRC, GST_PAD_ALWAYS, - GST_STATIC_CAPS (GST_VIDEO_CAPS_YUV ("AYUV") ";" GST_VIDEO_CAPS_YUV ("Y444") - ";" GST_VIDEO_CAPS_YUV ("YUY2") ";" GST_VIDEO_CAPS_YUV ("YVYU") ";" - GST_VIDEO_CAPS_YUV ("UYVY") ";" - GST_VIDEO_CAPS_YUV ("Y42B") ";" GST_VIDEO_CAPS_YUV ("I420") ";" - GST_VIDEO_CAPS_YUV ("YV12") ";" GST_VIDEO_CAPS_YUV ("Y41B") ";" - GST_VIDEO_CAPS_ARGB ";" GST_VIDEO_CAPS_ABGR ";" - GST_VIDEO_CAPS_RGBA ";" GST_VIDEO_CAPS_BGRA ";" - GST_VIDEO_CAPS_xRGB ";" GST_VIDEO_CAPS_xBGR ";" - GST_VIDEO_CAPS_RGBx ";" GST_VIDEO_CAPS_BGRx ";" - GST_VIDEO_CAPS_RGB ";" GST_VIDEO_CAPS_BGR) + GST_STATIC_CAPS (DEINTERLACE_CAPS) ); static GstStaticPadTemplate sink_templ = GST_STATIC_PAD_TEMPLATE ("sink", GST_PAD_SINK, GST_PAD_ALWAYS, - GST_STATIC_CAPS (GST_VIDEO_CAPS_YUV ("AYUV") ";" GST_VIDEO_CAPS_YUV ("Y444") - ";" GST_VIDEO_CAPS_YUV ("YUY2") ";" GST_VIDEO_CAPS_YUV ("YVYU") ";" - GST_VIDEO_CAPS_YUV ("UYVY") ";" - GST_VIDEO_CAPS_YUV ("Y42B") ";" GST_VIDEO_CAPS_YUV ("I420") ";" - GST_VIDEO_CAPS_YUV ("YV12") ";" GST_VIDEO_CAPS_YUV ("Y41B") ";" - GST_VIDEO_CAPS_ARGB ";" GST_VIDEO_CAPS_ABGR ";" - GST_VIDEO_CAPS_RGBA ";" GST_VIDEO_CAPS_BGRA ";" - GST_VIDEO_CAPS_xRGB ";" GST_VIDEO_CAPS_xBGR ";" - GST_VIDEO_CAPS_RGBx ";" GST_VIDEO_CAPS_BGRx ";" - GST_VIDEO_CAPS_RGB ";" GST_VIDEO_CAPS_BGR) + GST_STATIC_CAPS (DEINTERLACE_CAPS) ); static void gst_deinterlace_finalize (GObject * self); |
From: <tp...@ke...> - 2011-01-30 17:09:31
|
Module: gst-plugins-bad Branch: master Commit: 9ae14406e83750c3ab75fde1d487723101027184 URL: http://cgit.freedesktop.org/gstreamer/gst-plugins-bad/commit/?id=9ae14406e83750c3ab75fde1d487723101027184 Author: Tim-Philipp Müller <tim...@co...> Date: Sun Jan 30 17:08:11 2011 +0000 rtpvp8: fix LIBS and CFLAGS order in Makefile.am --- gst/rtpvp8/Makefile.am | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) diff --git a/gst/rtpvp8/Makefile.am b/gst/rtpvp8/Makefile.am index 4f5ab1f..8a722eb 100644 --- a/gst/rtpvp8/Makefile.am +++ b/gst/rtpvp8/Makefile.am @@ -7,8 +7,8 @@ libgstrtpvp8_la_SOURCES = gstrtpvp8.c \ noinst_HEADERS = gstrtpvp8depay.h \ gstrtpvp8pay.h -libgstrtpvp8_la_CFLAGS = $(GST_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) -libgstrtpvp8_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) $(GST_LIBS) \ - -lgstrtp-@GST_MAJORMINOR@ +libgstrtpvp8_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS) +libgstrtpvp8_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) -lgstrtp-@GST_MAJORMINOR@ \ + $(GST_LIBS) libgstrtpvp8_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) libgstrtpvp8_la_LIBTOOLFLAGS = --tag=disable-static |
From: <bi...@ke...> - 2011-01-30 15:21:11
|
Module: gst-plugins-ugly Branch: master Commit: 67f754a9ea60052a023dfb2a3cc919bda80dbea8 URL: http://cgit.freedesktop.org/gstreamer/gst-plugins-ugly/commit/?id=67f754a9ea60052a023dfb2a3cc919bda80dbea8 Author: Edward Hervey <bi...@bi...> Date: Sun Jan 30 16:17:19 2011 +0100 asfpacket: Avoid using broken duration extension Quite a few (broken?) files have a packet duration of 1ms, which is most definitely wrong for either audio or video packets. We therefore avoid using that value and instead use other metrics to determine the buffer duration (like using the extended stream properties average frame duration if present and valid). --- gst/asfdemux/asfpacket.c | 6 ++++-- 1 files changed, 4 insertions(+), 2 deletions(-) diff --git a/gst/asfdemux/asfpacket.c b/gst/asfdemux/asfpacket.c index 2b16a3f..b56c81a 100644 --- a/gst/asfdemux/asfpacket.c +++ b/gst/asfdemux/asfpacket.c @@ -226,8 +226,10 @@ asf_payload_parse_replicated_data_extensions (AsfStream * stream, switch (ext->id) { case ASF_PAYLOAD_EXTENSION_DURATION: if (G_LIKELY (ext->len == 2)) { - payload->duration = - GST_READ_UINT16_LE (payload->rep_data + off) * GST_MSECOND; + guint16 tdur = GST_READ_UINT16_LE (payload->rep_data + off); + /* packet durations of 1ms are mostly invalid */ + if (tdur != 1) + payload->duration = tdur * GST_MSECOND; } else { GST_WARNING ("unexpected DURATION extensions len %u", ext->len); } |
From: <sj...@ke...> - 2011-01-30 14:53:14
|
Module: gst-plugins-bad Branch: master Commit: 39a16a3233b8ef5e8454ea176f458efc800a7ea6 URL: http://cgit.freedesktop.org/gstreamer/gst-plugins-bad/commit/?id=39a16a3233b8ef5e8454ea176f458efc800a7ea6 Author: Sjoerd Simons <sj...@lu...> Date: Sun May 16 17:23:17 2010 +0100 rtpvp8: Add simple payloaders and depayloaders for VP8 Minimal implementation of http://www.webmproject.org/code/specs/rtp/, version 0.3.2 --- configure.ac | 2 + gst/rtpvp8/Makefile.am | 14 ++ gst/rtpvp8/gstrtpvp8.c | 21 ++ gst/rtpvp8/gstrtpvp8depay.c | 193 ++++++++++++++++++ gst/rtpvp8/gstrtpvp8depay.h | 63 ++++++ gst/rtpvp8/gstrtpvp8pay.c | 473 +++++++++++++++++++++++++++++++++++++++++++ gst/rtpvp8/gstrtpvp8pay.h | 65 ++++++ 7 files changed, 831 insertions(+), 0 deletions(-) Diff: http://cgit.freedesktop.org/gstreamer/gst-plugins-bad/diff/?id=39a16a3233b8ef5e8454ea176f458efc800a7ea6 |
From: <sj...@ke...> - 2011-01-30 14:53:13
|
Module: gst-plugins-bad Branch: master Commit: 216189ea36d0c477ed771d229eb548e93acb0cc3 URL: http://cgit.freedesktop.org/gstreamer/gst-plugins-bad/commit/?id=216189ea36d0c477ed771d229eb548e93acb0cc3 Author: Sjoerd Simons <sj...@lu...> Date: Sun Jan 23 17:02:38 2011 +0000 rtpvp8depay: Accept packets with only one byte of data When fragmenting partions it can happen that an RTP packet only caries 1 byte of RTP data. --- gst/rtpvp8/gstrtpvp8depay.c | 5 +++-- 1 files changed, 3 insertions(+), 2 deletions(-) diff --git a/gst/rtpvp8/gstrtpvp8depay.c b/gst/rtpvp8/gstrtpvp8depay.c index 79eee53..d9d2226 100644 --- a/gst/rtpvp8/gstrtpvp8depay.c +++ b/gst/rtpvp8/gstrtpvp8depay.c @@ -121,6 +121,7 @@ gst_rtp_vp8_depay_process (GstBaseRTPDepayload * depay, GstBuffer * buf) self->started = FALSE; } + /* At least one header and one vp8 byte */ if (G_UNLIKELY (size < 2)) goto too_small; @@ -140,13 +141,13 @@ gst_rtp_vp8_depay_process (GstBaseRTPDepayload * depay, GstBuffer * buf) for (; (data[offset] & 0x80) != 0; offset++) { /* should be at least one more pictureID byte and at least one byte in * the vp8 payload */ - if (offset + 2 >= size) + if (G_UNLIKELY (offset + 2 >= size)) goto too_small; } offset++; } - if (offset + 1 >= size) + if (G_UNLIKELY (offset >= size)) goto too_small; payload = gst_rtp_buffer_get_payload_subbuffer (buf, offset, -1); |
From: <sj...@ke...> - 2011-01-30 14:53:13
|
Module: gst-plugins-bad Branch: master Commit: 0bee149c74a22ad9a08f46eebe25b5a88b7fb204 URL: http://cgit.freedesktop.org/gstreamer/gst-plugins-bad/commit/?id=0bee149c74a22ad9a08f46eebe25b5a88b7fb204 Author: Sjoerd Simons <sj...@lu...> Date: Sun Jan 23 16:42:17 2011 +0000 rtpvp8pay: Treat the frame header just like any other partition When setting up the initial mapping just act as if the global frame information is another partition. This saves special-casing it later in the actual packetizing code. --- gst/rtpvp8/gstrtpvp8pay.c | 64 +++++++++++++++----------------------------- gst/rtpvp8/gstrtpvp8pay.h | 8 +++--- 2 files changed, 26 insertions(+), 46 deletions(-) diff --git a/gst/rtpvp8/gstrtpvp8pay.c b/gst/rtpvp8/gstrtpvp8pay.c index 8a55270..0ea5777 100644 --- a/gst/rtpvp8/gstrtpvp8pay.c +++ b/gst/rtpvp8/gstrtpvp8pay.c @@ -264,7 +264,7 @@ gst_rtp_vp8_pay_parse_frame (GstRtpVP8Pay * self, GstBuffer * buffer) if (!gst_bit_reader_get_bits_uint8 (reader, &tmp8, 2)) goto error; - self->n_partitions = partitions = 1 << tmp8; + partitions = 1 << tmp8; /* Check if things are still sensible */ if (header_size + (partitions - 1) * 3 >= GST_BUFFER_SIZE (buffer)) @@ -273,12 +273,14 @@ gst_rtp_vp8_pay_parse_frame (GstRtpVP8Pay * self, GstBuffer * buffer) /* partition data is right after the frame header */ data = GST_BUFFER_DATA (buffer) + header_size; - self->partition_offset[0] = header_size + (partitions - 1) * 3; + /* Set up mapping, count the initial header as a partition to make other + * sections of the code easier */ + self->n_partitions = partitions + 1; + self->partition_offset[0] = 0; + self->partition_size[0] = header_size + (partitions - 1) * 3; - /* Include partition data in the header for RTP purposes */ - self->header_size = self->partition_offset[0]; - - for (i = 0; i < (partitions - 1); i++) { + self->partition_offset[1] = self->partition_size[0]; + for (i = 1; i < partitions; i++) { guint size = (data[2] << 16 | data[1] << 8 | data[0]); data += 3; @@ -313,15 +315,6 @@ gst_rtp_vp8_fit_partitions (GstRtpVP8Pay * self, gint first, gsize available) g_assert (first < self->n_partitions); - if (first < 0) { - if (self->header_size > available) - return 0; - - available -= self->header_size; - num++; - first = 0; - } - for (i = first; i < self->n_partitions && self->partition_size[i] < available; i++) { num++; @@ -333,16 +326,10 @@ gst_rtp_vp8_fit_partitions (GstRtpVP8Pay * self, gint first, gsize available) static GstBuffer * gst_rtp_vp8_create_sub (GstRtpVP8Pay * self, - GstBuffer * buffer, gint current, guint num) + GstBuffer * buffer, guint current, guint num) { - guint offset = 0; - guint size; - - if (current >= 0) { - offset = self->partition_offset[current]; - } - - size = self->partition_offset[current + num] - offset; + guint offset = self->partition_offset[current]; + guint size = self->partition_offset[current + num] - offset; return gst_buffer_create_sub (buffer, offset, size); } @@ -350,7 +337,7 @@ gst_rtp_vp8_create_sub (GstRtpVP8Pay * self, static guint gst_rtp_vp8_payload_next (GstRtpVP8Pay * self, - GstBufferListIterator * it, gint first, GstBuffer * buffer) + GstBufferListIterator * it, guint first, GstBuffer * buffer) { guint num; GstBuffer *header; @@ -358,7 +345,7 @@ gst_rtp_vp8_payload_next (GstRtpVP8Pay * self, gboolean mark; gsize available = gst_rtp_vp8_calc_payload_len (GST_BASE_RTP_PAYLOAD (self)); - g_assert (first < 8); + g_assert (first < 9); /* How many partitions can we fit */ num = gst_rtp_vp8_fit_partitions (self, first, available); @@ -366,7 +353,7 @@ gst_rtp_vp8_payload_next (GstRtpVP8Pay * self, if (num > 0) { mark = (first + num == self->n_partitions); /* whole set of partitions, payload them and done */ - header = gst_rtp_vp8_create_header_buffer (first == -1, mark, + header = gst_rtp_vp8_create_header_buffer (first == 0, mark, FI_FRAG_UNFRAGMENTED, buffer); sub = gst_rtp_vp8_create_sub (self, buffer, first, num); @@ -375,18 +362,11 @@ gst_rtp_vp8_payload_next (GstRtpVP8Pay * self, gst_buffer_list_iterator_add (it, sub); } else { /* Fragmented packets */ - guint left; - guint offset; - - if (first >= 0) { - offset = self->partition_offset[first]; - left = self->partition_size[first]; - } else { - offset = 0; - left = self->header_size; - } + guint offset = self->partition_offset[first]; + guint left = self->partition_size[first]; + gboolean start = (first == 0); - header = gst_rtp_vp8_create_header_buffer (first == -1, FALSE, + header = gst_rtp_vp8_create_header_buffer (start, FALSE, FI_FRAG_START, buffer); sub = gst_buffer_create_sub (buffer, offset, available); offset += available; @@ -398,7 +378,7 @@ gst_rtp_vp8_payload_next (GstRtpVP8Pay * self, left -= available; for (; left > available; left -= available) { - header = gst_rtp_vp8_create_header_buffer (first == -1, FALSE, + header = gst_rtp_vp8_create_header_buffer (start, FALSE, FI_FRAG_MIDDLE, buffer); sub = gst_buffer_create_sub (buffer, offset, available); @@ -411,7 +391,7 @@ gst_rtp_vp8_payload_next (GstRtpVP8Pay * self, mark = (first + 1 == self->n_partitions); - header = gst_rtp_vp8_create_header_buffer (first == -1, mark, + header = gst_rtp_vp8_create_header_buffer (start, mark, FI_FRAG_END, buffer); sub = gst_buffer_create_sub (buffer, offset, left); @@ -433,7 +413,7 @@ gst_rtp_vp8_pay_handle_buffer (GstBaseRTPPayload * payload, GstBuffer * buffer) GstFlowReturn ret; GstBufferList *list; GstBufferListIterator *it; - gint current; + guint current; if (G_UNLIKELY (!gst_rtp_vp8_pay_parse_frame (self, buffer))) { /* FIXME throw flow error */ @@ -444,7 +424,7 @@ gst_rtp_vp8_pay_handle_buffer (GstBaseRTPPayload * payload, GstBuffer * buffer) list = gst_buffer_list_new (); it = gst_buffer_list_iterate (list); - for (current = -1; current < self->n_partitions;) { + for (current = 0; current < self->n_partitions;) { guint n; n = gst_rtp_vp8_payload_next (self, it, current, buffer); diff --git a/gst/rtpvp8/gstrtpvp8pay.h b/gst/rtpvp8/gstrtpvp8pay.h index ea76534..19a2e01 100644 --- a/gst/rtpvp8/gstrtpvp8pay.h +++ b/gst/rtpvp8/gstrtpvp8pay.h @@ -37,10 +37,10 @@ struct _GstRtpVP8Pay GstBaseRTPPayload parent; gboolean is_keyframe; gint n_partitions; - guint header_size; - /* Add the end offset for easier implementation */ - guint partition_offset[9]; - guint partition_size[8]; + /* Treat frame header & tag & partition size block as the first partition, + * folowed by max. 8 data partitions. last offset is the end of the buffer */ + guint partition_offset[10]; + guint partition_size[9]; }; GType gst_rtp_vp8_pay_get_type (void); |
From: <fe...@ke...> - 2011-01-30 13:43:14
|
Module: gst-plugins-base Branch: master Commit: 21d1e2ded026c814f4b7bc9330d99abfc2ae9bc7 URL: http://cgit.freedesktop.org/gstreamer/gst-plugins-base/commit/?id=21d1e2ded026c814f4b7bc9330d99abfc2ae9bc7 Author: Felipe Contreras <fel...@no...> Date: Sun Jan 30 15:40:53 2011 +0200 baseaudiosink: trivial cleanups It seems these stuff was neglected from commmit d8942e2. Signed-off-by: Felipe Contreras <fel...@no...> --- gst-libs/gst/audio/gstbaseaudiosink.c | 11 +---------- 1 files changed, 1 insertions(+), 10 deletions(-) diff --git a/gst-libs/gst/audio/gstbaseaudiosink.c b/gst-libs/gst/audio/gstbaseaudiosink.c index 54ba775..b5c87b9 100644 --- a/gst-libs/gst/audio/gstbaseaudiosink.c +++ b/gst-libs/gst/audio/gstbaseaudiosink.c @@ -71,15 +71,6 @@ enum LAST_SIGNAL }; -/* we tollerate half a second diff before we start resyncing. This - * should be enough to compensate for various rounding errors in the timestamp - * and sample offset position. - * This is an emergency resync fallback since buffers marked as DISCONT will - * always lock to the correct timestamp immediatly and buffers not marked as - * DISCONT are contiguous by definition. - */ -#define DIFF_TOLERANCE 2 - /* FIXME: 0.11, store the buffer_time and latency_time in nanoseconds */ #define DEFAULT_BUFFER_TIME ((200 * GST_MSECOND) / GST_USECOND) #define DEFAULT_LATENCY_TIME ((10 * GST_MSECOND) / GST_USECOND) @@ -89,7 +80,7 @@ enum /* FIXME, enable pull mode when clock slaving and trick modes are figured out */ #define DEFAULT_CAN_ACTIVATE_PULL FALSE -/* when timestamps or clock slaving drift for more than 20ms we resync. This is +/* when timestamps or clock slaving drift for more than 40ms we resync. This is * a reasonable default */ #define DEFAULT_DRIFT_TOLERANCE ((40 * GST_MSECOND) / GST_USECOND) |