diff --git a/ChangeLog b/ChangeLog index 1dcc67d13e..1a351739d4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,9 +1,971 @@ -=== release 0.10.24 === +=== release 0.10.25 === -2010-07-15 Tim-Philipp Müller +2010-09-02 Tim-Philipp Müller * configure.ac: - releasing 0.10.24, "Taking Liberties" + releasing 0.10.25, "Woe to You Oh Earth and Sea" + +2010-09-02 23:12:48 +0100 Tim-Philipp Müller + + * docs/plugins/gst-plugins-good-plugins.hierarchy: + * docs/plugins/inspect/plugin-1394.xml: + * docs/plugins/inspect/plugin-aasink.xml: + * docs/plugins/inspect/plugin-alaw.xml: + * docs/plugins/inspect/plugin-alpha.xml: + * docs/plugins/inspect/plugin-alphacolor.xml: + * docs/plugins/inspect/plugin-annodex.xml: + * docs/plugins/inspect/plugin-apetag.xml: + * docs/plugins/inspect/plugin-audiofx.xml: + * docs/plugins/inspect/plugin-auparse.xml: + * docs/plugins/inspect/plugin-autodetect.xml: + * docs/plugins/inspect/plugin-avi.xml: + * docs/plugins/inspect/plugin-cacasink.xml: + * docs/plugins/inspect/plugin-cairo.xml: + * docs/plugins/inspect/plugin-cutter.xml: + * docs/plugins/inspect/plugin-debug.xml: + * docs/plugins/inspect/plugin-deinterlace.xml: + * docs/plugins/inspect/plugin-dv.xml: + * docs/plugins/inspect/plugin-efence.xml: + * docs/plugins/inspect/plugin-effectv.xml: + * docs/plugins/inspect/plugin-equalizer.xml: + * docs/plugins/inspect/plugin-esdsink.xml: + * docs/plugins/inspect/plugin-flac.xml: + * docs/plugins/inspect/plugin-flv.xml: + * docs/plugins/inspect/plugin-flxdec.xml: + * docs/plugins/inspect/plugin-gconfelements.xml: + * docs/plugins/inspect/plugin-gdkpixbuf.xml: + * docs/plugins/inspect/plugin-goom.xml: + * docs/plugins/inspect/plugin-goom2k1.xml: + * docs/plugins/inspect/plugin-gstrtpmanager.xml: + * docs/plugins/inspect/plugin-halelements.xml: + * docs/plugins/inspect/plugin-icydemux.xml: + * docs/plugins/inspect/plugin-id3demux.xml: + * docs/plugins/inspect/plugin-imagefreeze.xml: + * docs/plugins/inspect/plugin-interleave.xml: + * docs/plugins/inspect/plugin-jpeg.xml: + * docs/plugins/inspect/plugin-level.xml: + * docs/plugins/inspect/plugin-matroska.xml: + * docs/plugins/inspect/plugin-mulaw.xml: + * docs/plugins/inspect/plugin-multifile.xml: + * docs/plugins/inspect/plugin-multipart.xml: + * docs/plugins/inspect/plugin-navigationtest.xml: + * docs/plugins/inspect/plugin-oss4.xml: + * docs/plugins/inspect/plugin-ossaudio.xml: + * docs/plugins/inspect/plugin-png.xml: + * docs/plugins/inspect/plugin-pulseaudio.xml: + * docs/plugins/inspect/plugin-quicktime.xml: + * docs/plugins/inspect/plugin-replaygain.xml: + * docs/plugins/inspect/plugin-rtp.xml: + * docs/plugins/inspect/plugin-rtsp.xml: + * docs/plugins/inspect/plugin-shapewipe.xml: + * docs/plugins/inspect/plugin-shout2send.xml: + * docs/plugins/inspect/plugin-smpte.xml: + * docs/plugins/inspect/plugin-soup.xml: + * docs/plugins/inspect/plugin-spectrum.xml: + * docs/plugins/inspect/plugin-speex.xml: + * docs/plugins/inspect/plugin-taglib.xml: + * docs/plugins/inspect/plugin-udp.xml: + * docs/plugins/inspect/plugin-video4linux2.xml: + * docs/plugins/inspect/plugin-videobox.xml: + * docs/plugins/inspect/plugin-videocrop.xml: + * docs/plugins/inspect/plugin-videofilter.xml: + * docs/plugins/inspect/plugin-videomixer.xml: + * docs/plugins/inspect/plugin-wavenc.xml: + * docs/plugins/inspect/plugin-wavpack.xml: + * docs/plugins/inspect/plugin-wavparse.xml: + * docs/plugins/inspect/plugin-ximagesrc.xml: + * docs/plugins/inspect/plugin-y4menc.xml: + docs: update docs for release + +2010-09-02 23:07:36 +0100 Tim-Philipp Müller + + * po/LINGUAS: + * po/es.po: + * po/gl.po: + * po/lt.po: + * po/nl.po: + * po/ro.po: + * po/sv.po: + po: update translations + +2010-08-25 19:01:50 +0200 Sebastian Dröge + + * configure.ac: + * po/af.po: + * po/az.po: + * po/bg.po: + * po/ca.po: + * po/cs.po: + * po/da.po: + * po/de.po: + * po/el.po: + * po/en_GB.po: + * po/es.po: + * po/eu.po: + * po/fi.po: + * po/fr.po: + * po/hu.po: + * po/id.po: + * po/it.po: + * po/ja.po: + * po/lt.po: + * po/lv.po: + * po/mt.po: + * po/nb.po: + * po/nl.po: + * po/or.po: + * po/pl.po: + * po/pt_BR.po: + * po/ru.po: + * po/sk.po: + * po/sl.po: + * po/sq.po: + * po/sr.po: + * po/sv.po: + * po/tr.po: + * po/uk.po: + * po/vi.po: + * po/zh_CN.po: + * po/zh_HK.po: + * po/zh_TW.po: + 0.10.24.5 pre-release + +2010-08-22 21:15:07 -0700 David Schleef + + * gst/deinterlace/gstdeinterlace.c: + deinterlace: use separate buffer metadata for fields + Call gst_buffer_make_metadata_writable() on buffers that are + duplicated into fields. Fixes #627689. + +2010-08-21 21:41:36 +0200 Sebastian Dröge + + * configure.ac: + * gst/deinterlace/tvtime-dist.c: + * gst/deinterlace/tvtime-dist.h: + * gst/videobox/gstvideoboxorc-dist.c: + * gst/videobox/gstvideoboxorc-dist.h: + * gst/videomixer/blendorc-dist.c: + * gst/videomixer/blendorc-dist.h: + * po/af.po: + * po/az.po: + * po/bg.po: + * po/ca.po: + * po/cs.po: + * po/da.po: + * po/de.po: + * po/el.po: + * po/en_GB.po: + * po/es.po: + * po/eu.po: + * po/fi.po: + * po/fr.po: + * po/hu.po: + * po/id.po: + * po/it.po: + * po/ja.po: + * po/lt.po: + * po/lv.po: + * po/mt.po: + * po/nb.po: + * po/nl.po: + * po/or.po: + * po/pl.po: + * po/pt_BR.po: + * po/ru.po: + * po/sk.po: + * po/sl.po: + * po/sq.po: + * po/sr.po: + * po/sv.po: + * po/tr.po: + * po/uk.po: + * po/vi.po: + * po/zh_CN.po: + * po/zh_HK.po: + * po/zh_TW.po: + 0.10.24.4 pre-release + +2010-08-19 18:30:05 -0300 Thiago Santos + + * ext/jpeg/gstjpegdec.c: + jpegdec: Prevent crash when reading image with problems + Check if we have data on the adapter and fail if not. + Fixes #627413 + +2010-08-13 17:24:01 +0300 Stefan Kost + + * common: + Automatic update of common submodule + From 3e8db1d to ec60217 + +2010-08-11 22:20:25 +0200 Sebastian Dröge + + * gst/imagefreeze/gstimagefreeze.c: + imagefreeze: Send close segments when seeking only for non-flushing seeks and if we already sent a newsegment event + Fixes bug #626619. + +2010-08-11 16:50:42 +0100 Tim-Philipp Müller + + * configure.ac: + * docs/plugins/inspect/plugin-1394.xml: + * docs/plugins/inspect/plugin-aasink.xml: + * docs/plugins/inspect/plugin-alaw.xml: + * docs/plugins/inspect/plugin-alpha.xml: + * docs/plugins/inspect/plugin-alphacolor.xml: + * docs/plugins/inspect/plugin-annodex.xml: + * docs/plugins/inspect/plugin-apetag.xml: + * docs/plugins/inspect/plugin-audiofx.xml: + * docs/plugins/inspect/plugin-auparse.xml: + * docs/plugins/inspect/plugin-autodetect.xml: + * docs/plugins/inspect/plugin-avi.xml: + * docs/plugins/inspect/plugin-cacasink.xml: + * docs/plugins/inspect/plugin-cairo.xml: + * docs/plugins/inspect/plugin-cutter.xml: + * docs/plugins/inspect/plugin-debug.xml: + * docs/plugins/inspect/plugin-deinterlace.xml: + * docs/plugins/inspect/plugin-dv.xml: + * docs/plugins/inspect/plugin-efence.xml: + * docs/plugins/inspect/plugin-effectv.xml: + * docs/plugins/inspect/plugin-equalizer.xml: + * docs/plugins/inspect/plugin-esdsink.xml: + * docs/plugins/inspect/plugin-flac.xml: + * docs/plugins/inspect/plugin-flv.xml: + * docs/plugins/inspect/plugin-flxdec.xml: + * docs/plugins/inspect/plugin-gconfelements.xml: + * docs/plugins/inspect/plugin-gdkpixbuf.xml: + * docs/plugins/inspect/plugin-goom.xml: + * docs/plugins/inspect/plugin-goom2k1.xml: + * docs/plugins/inspect/plugin-gstrtpmanager.xml: + * docs/plugins/inspect/plugin-halelements.xml: + * docs/plugins/inspect/plugin-icydemux.xml: + * docs/plugins/inspect/plugin-id3demux.xml: + * docs/plugins/inspect/plugin-imagefreeze.xml: + * docs/plugins/inspect/plugin-interleave.xml: + * docs/plugins/inspect/plugin-jpeg.xml: + * docs/plugins/inspect/plugin-level.xml: + * docs/plugins/inspect/plugin-matroska.xml: + * docs/plugins/inspect/plugin-mulaw.xml: + * docs/plugins/inspect/plugin-multifile.xml: + * docs/plugins/inspect/plugin-multipart.xml: + * docs/plugins/inspect/plugin-navigationtest.xml: + * docs/plugins/inspect/plugin-oss4.xml: + * docs/plugins/inspect/plugin-ossaudio.xml: + * docs/plugins/inspect/plugin-png.xml: + * docs/plugins/inspect/plugin-pulseaudio.xml: + * docs/plugins/inspect/plugin-quicktime.xml: + * docs/plugins/inspect/plugin-replaygain.xml: + * docs/plugins/inspect/plugin-rtp.xml: + * docs/plugins/inspect/plugin-rtsp.xml: + * docs/plugins/inspect/plugin-shapewipe.xml: + * docs/plugins/inspect/plugin-shout2send.xml: + * docs/plugins/inspect/plugin-smpte.xml: + * docs/plugins/inspect/plugin-soup.xml: + * docs/plugins/inspect/plugin-spectrum.xml: + * docs/plugins/inspect/plugin-speex.xml: + * docs/plugins/inspect/plugin-taglib.xml: + * docs/plugins/inspect/plugin-udp.xml: + * docs/plugins/inspect/plugin-video4linux2.xml: + * docs/plugins/inspect/plugin-videobox.xml: + * docs/plugins/inspect/plugin-videocrop.xml: + * docs/plugins/inspect/plugin-videofilter.xml: + * docs/plugins/inspect/plugin-videomixer.xml: + * docs/plugins/inspect/plugin-wavenc.xml: + * docs/plugins/inspect/plugin-wavpack.xml: + * docs/plugins/inspect/plugin-wavparse.xml: + * docs/plugins/inspect/plugin-ximagesrc.xml: + * docs/plugins/inspect/plugin-y4menc.xml: + * win32/common/config.h: + * win32/common/gstrtpbin-marshal.c: + * win32/common/gstudp-enumtypes.c: + * win32/common/gstudp-enumtypes.h: + * win32/common/gstudp-marshal.c: + 0.10.24.3 pre-release + +2010-08-11 11:17:18 +0200 Mark Nauwelaerts + + * gst/qtdemux/qtdemux.c: + qtdemux: prevent reading past avc1 atom when parsing + ... when one of the subatoms has a large/invalid size. + Fixes #626609. + +2010-08-10 23:37:23 +0100 Tim-Philipp Müller + + * configure.ac: + * docs/plugins/gst-plugins-good-plugins.args: + * docs/plugins/gst-plugins-good-plugins.hierarchy: + * docs/plugins/gst-plugins-good-plugins.interfaces: + * docs/plugins/inspect/plugin-1394.xml: + * docs/plugins/inspect/plugin-aasink.xml: + * docs/plugins/inspect/plugin-alaw.xml: + * docs/plugins/inspect/plugin-alpha.xml: + * docs/plugins/inspect/plugin-alphacolor.xml: + * docs/plugins/inspect/plugin-annodex.xml: + * docs/plugins/inspect/plugin-apetag.xml: + * docs/plugins/inspect/plugin-audiofx.xml: + * docs/plugins/inspect/plugin-auparse.xml: + * docs/plugins/inspect/plugin-autodetect.xml: + * docs/plugins/inspect/plugin-avi.xml: + * docs/plugins/inspect/plugin-cacasink.xml: + * docs/plugins/inspect/plugin-cairo.xml: + * docs/plugins/inspect/plugin-cutter.xml: + * docs/plugins/inspect/plugin-debug.xml: + * docs/plugins/inspect/plugin-deinterlace.xml: + * docs/plugins/inspect/plugin-dv.xml: + * docs/plugins/inspect/plugin-efence.xml: + * docs/plugins/inspect/plugin-effectv.xml: + * docs/plugins/inspect/plugin-equalizer.xml: + * docs/plugins/inspect/plugin-esdsink.xml: + * docs/plugins/inspect/plugin-flac.xml: + * docs/plugins/inspect/plugin-flv.xml: + * docs/plugins/inspect/plugin-flxdec.xml: + * docs/plugins/inspect/plugin-gconfelements.xml: + * docs/plugins/inspect/plugin-gdkpixbuf.xml: + * docs/plugins/inspect/plugin-goom.xml: + * docs/plugins/inspect/plugin-goom2k1.xml: + * docs/plugins/inspect/plugin-gstrtpmanager.xml: + * docs/plugins/inspect/plugin-halelements.xml: + * docs/plugins/inspect/plugin-icydemux.xml: + * docs/plugins/inspect/plugin-id3demux.xml: + * docs/plugins/inspect/plugin-imagefreeze.xml: + * docs/plugins/inspect/plugin-interleave.xml: + * docs/plugins/inspect/plugin-jpeg.xml: + * docs/plugins/inspect/plugin-level.xml: + * docs/plugins/inspect/plugin-matroska.xml: + * docs/plugins/inspect/plugin-mulaw.xml: + * docs/plugins/inspect/plugin-multifile.xml: + * docs/plugins/inspect/plugin-multipart.xml: + * docs/plugins/inspect/plugin-navigationtest.xml: + * docs/plugins/inspect/plugin-oss4.xml: + * docs/plugins/inspect/plugin-ossaudio.xml: + * docs/plugins/inspect/plugin-png.xml: + * docs/plugins/inspect/plugin-pulseaudio.xml: + * docs/plugins/inspect/plugin-quicktime.xml: + * docs/plugins/inspect/plugin-replaygain.xml: + * docs/plugins/inspect/plugin-rtp.xml: + * docs/plugins/inspect/plugin-rtsp.xml: + * docs/plugins/inspect/plugin-shapewipe.xml: + * docs/plugins/inspect/plugin-shout2send.xml: + * docs/plugins/inspect/plugin-smpte.xml: + * docs/plugins/inspect/plugin-soup.xml: + * docs/plugins/inspect/plugin-spectrum.xml: + * docs/plugins/inspect/plugin-speex.xml: + * docs/plugins/inspect/plugin-taglib.xml: + * docs/plugins/inspect/plugin-udp.xml: + * docs/plugins/inspect/plugin-video4linux2.xml: + * docs/plugins/inspect/plugin-videobox.xml: + * docs/plugins/inspect/plugin-videocrop.xml: + * docs/plugins/inspect/plugin-videofilter.xml: + * docs/plugins/inspect/plugin-videomixer.xml: + * docs/plugins/inspect/plugin-wavenc.xml: + * docs/plugins/inspect/plugin-wavpack.xml: + * docs/plugins/inspect/plugin-wavparse.xml: + * docs/plugins/inspect/plugin-ximagesrc.xml: + * docs/plugins/inspect/plugin-y4menc.xml: + * win32/common/config.h: + 0.10.24.2 pre-release + +2010-08-10 10:57:45 +0100 Tim-Philipp Müller + + * common: + Automatic update of common submodule + From bd2054b to 3e8db1d + +2010-08-09 00:36:36 +0100 Tim-Philipp Müller + + * ext/pulse/pulsesink.c: + pulse: fix printf format in some debugging messages + +2010-08-08 23:31:42 +0100 Tim-Philipp Müller + + * pkgconfig/gstreamer-plugins-good-uninstalled.pc.in: + pkgconfig: set pluginsdir to top-level builddir without the pkgconfig/.. bits + Removes clutter in plugin dir paths. This is only used to find the -good + plugins for unit tests of ugly/bad/ffmpeg/etc. in an uninstalled setup. + +2010-08-06 20:04:59 +0100 Tim-Philipp Müller + + * sys/v4l2/gstv4l2object.c: + v4l2src: also log pixel formats in sorted order + +2010-08-06 18:07:46 +0100 Sjoerd Simons + + * sys/v4l2/gstv4l2object.c: + v4l2: sort formats in the right order so that non-emulated formats are prefered + The format list should be sorted from high ranks to low ranks. In the GSList + sorting function this means the compare needs to return a positive value if + format a has a lower rank than format b. + Among other things this fixes v4l2src to prefer non-emulated formats + to emulated formats when built against libv4l. + +2010-08-06 19:24:06 +0200 Sebastian Dröge + + * gst/videomixer/videomixer.c: + videomixer: Fix pipeline in the documentation + Make sure that we have the same color format on all streams, i.e. AYUV + Fixes bug #625452. + +2010-08-05 13:56:44 +0300 Stefan Kost + + * common: + Automatic update of common submodule + From a519571 to bd2054b + +2010-06-14 19:58:11 +1000 Jonathan Matthew + + * ext/taglib/gstid3v2mux.cc: + * tests/check/elements/id3v2mux.c: + id3v2mux: write beats-per-minute tag using TBPM frame + https://bugzilla.gnome.org/show_bug.cgi?id=621520 + +2010-07-25 11:47:43 +0200 Sebastian Dröge + + * gst/videomixer/blend.c: + * gst/videomixer/videomixer.c: + * gst/videomixer/videomixer.h: + videomixer: Move debug categories into the source files and add debug category for the blend functions + +2010-08-04 19:25:31 +0200 Sebastian Dröge + + * configure.ac: + configure: Check if the compiler supports ISO C89 or C99 and which parameters are required + This first checks what is required for ISO C99 support and sets the relevant + compiler parameters and if no C99 compiler is found, it checks for a + C89 compiler. This enables us to check for and use C89/C99 functions + that gcc hides from us without the correct compiler parameters. + +2010-07-15 10:10:31 +0200 Philippe Normand + + * ext/pulse/pulsesink.c: + pulsesink: use G_TYPE_DEFINE to define ring buffer type + The existing get_type() implementation is racy, and the + g_type_class_ref() workaround didn't actually work because + it was in the wrong function. Since class creation in GObject + is thread-safe these days (since 2.16), the class_ref workaround + is no longer needed and it is sufficient to ensure the _get_type() + function is thread-safe, which G_TYPE_DEFINE does. + https://bugzilla.gnome.org/show_bug.cgi?id=624338 + +2010-08-04 15:20:42 +0200 Sebastian Dröge + + * ext/pulse/pulsesink.c: + pulsesink: Post CLOCK-LOST/CLOCK-PROVIDE when going to/from READY + Otherwise the clocks are redistributed every time the pipeline + goes to PAUSED, which is quite expensive. + +2010-07-12 12:35:15 +0200 Wim Taymans + + * gst/rtp/gstrtpmp4gpay.c: + * gst/rtp/gstrtpmp4gpay.h: + rtpmp4gpay: implement perfect timestamps + Use bitreader for parsing the config string + Reset state variables when going to READY + Parse frame length and use it to keep track of the rtptimestamps + +2010-07-09 14:07:49 +0200 Wim Taymans + + * gst/rtp/gstrtph263pdepay.c: + rtph263pdepay: allow more clock-rates as input + Although the spec says that the clock-rate should always be 90000, some rtsp + servers send different clock-rates so we must accept then in order to handle + those streams too. + +2010-07-06 19:02:14 +0200 Wim Taymans + + * gst/rtp/gstrtpL16depay.c: + L16depay: default to 1 channel + When we can't find any channel or encoding-params on the caps for dynamic + payload types, set the default number of channels to 1, as the spec says we + should. + See #623209 + +2010-07-06 18:22:24 +0200 Wim Taymans + + * gst/rtsp/gstrtspsrc.c: + rtspsrc: don't reuse udp sockets + Don't reuse sockets but make the udpsrc element fail the state change when the + socket is already in use. If we don't prevent reuse, we might end up using the same + port for different streams in some cases. + Fixes #622017 + +2010-07-06 18:11:21 +0200 Wim Taymans + + * gst/udp/gstudpsrc.c: + * gst/udp/gstudpsrc.h: + udpsrc: add property to enable port reuse + +2010-07-05 10:23:37 +0200 Wim Taymans + + * gst/rtp/gstrtpL16depay.c: + L16depay: use encoding-params for the channels + When parsing the number of channels, use the encoding-params property from the + RTP caps because that is where we can find the channels according to the spec. + Fall back to the channels property in the caps when needed. + Fixes #623209 + +2010-06-29 10:46:41 +0200 Wim Taymans + + * gst/rtsp/gstrtspsrc.c: + rtspsrc: improve error and warning message + Improve error and warning message. + Fixes #622577 + +2010-08-02 23:15:56 +0300 Stefan Kost + + * tests/examples/spectrum/demo-audiotest.c: + * tests/examples/spectrum/demo-osssrc.c: + examples: no need to set the color for each frq-band + +2010-08-02 12:56:29 +0200 Mark Nauwelaerts + + * gst/rtp/gstrtpg729pay.c: + * gst/rtp/gstrtpg729pay.h: + rtpg729pay: avoid basertppayload perfect-rtptime mode + G729 packets may only occur intermittently (e.g. cn packets), and as such + do not allow for perfect-rtptime calculating rtp times based on frame or byte + count. In particular, do not use rtp audio base payloader as base class, but + rather base payloader directly. + +2010-08-02 12:48:02 +0200 Mark Nauwelaerts + + * gst/rtp/gstrtph264pay.c: + rtph264pay: fix element leak + +2010-08-02 12:46:41 +0200 Mark Nauwelaerts + + * gst/rtp/gstrtpmp4vdepay.c: + rtpmp4vdepay: fix buffer leak + +2010-08-02 12:46:20 +0200 Mark Nauwelaerts + + * tests/check/elements/rtp-payloading.c: + tests: rtp payloading: fix pad leak + +2010-07-29 17:18:11 +0200 Mark Nauwelaerts + + * gst/avi/gstavidemux.c: + avidemux: push mode; use proper movi offset for movi based index + Fixes #623357. + +2010-07-29 10:00:15 -0300 Thiago Santos + + * gst/qtdemux/qtdemux.c: + * gst/qtdemux/qtdemux.h: + qtdemux: Correctly parse mvhd atoms + Parse mvhd data according to its version to avoid failing + on valid files. + +2010-07-28 12:21:41 -0300 Thiago Santos + + * gst/qtdemux/qtdemux.c: + qtdemux: Fix the max/avg in btrt atom reading + According to ISO media base format, the max bitrate is the + first one, and the avg comes next. + +2010-07-27 15:58:02 +0200 Mark Nauwelaerts + + * gst/matroska/matroska-demux.c: + matroskademux: proper handling of streaming upstream without duration + Fixes #625371. + +2010-07-26 18:33:09 +0200 Tim-Philipp Müller + + * gst/matroska/matroska-demux.c: + matroskademux: initialize some variables to fix compiler warnings on OSX build bot + +2010-07-26 18:15:25 +0200 Tim-Philipp Müller + + * ext/pulse/pulsesink.c: + pulsesink: correctly check what version of gst-plugins-base we're compiling against + We need to check the gst-plugins-base version, not the core version + (even if both should be the same in any sane setup). + +2010-07-26 17:45:42 +0200 Arnaud Vrac + + * gst/rtsp/gstrtspsrc.c: + * gst/rtsp/gstrtspsrc.h: + rtspsrc: add port-range property to rtspsrc + To support setups with firewall/ipsec, it is useful for an rtsp client to be + able to set the range of ports that can be used for rtp/rtcp reception. + Allows this by adding a "port-range" property to the rtspsrc element. + Fixes #625153 + +2010-07-26 13:38:31 +0200 Andoni Morales Alastruey + + * gst/qtdemux/qtdemux.c: + qtdemux: set the pixel-aspect-ratio field also for par=1/1 + https://bugzilla.gnome.org/show_bug.cgi?id=625302 + +2010-07-26 15:31:16 +0200 Wim Taymans + + * gst/rtsp/gstrtspsrc.c: + rtspsrc: fix memory leak in server request reply + The RTSP server rtspsrc is communicating with, sends a GET_PARAMETER request + periodically as a ping. The code in gst_rtspsrc_handle_request forms an OK + response and sends, but doesn't call gst_rtsp_message_unset to free the memory + after sending the response. This results in a constant slow memory leak. + Fixes #624770 + +2010-07-24 22:39:54 +0100 Zaheer Abbas Merali + + * gst/debugutils/cpureport.c: + cpureport: remove bogus docs + +2010-07-24 22:37:11 +0100 Zaheer Abbas Merali + + * gst/debugutils/Makefile.am: + * gst/debugutils/cpureport.c: + * gst/debugutils/cpureport.h: + * gst/debugutils/gstdebug.c: + debugutils: new element cpureport + cpureport posts bus messages after every buffer received of cpu used, system + clock time, buffer time + +2010-07-24 10:29:01 +0200 Sebastian Dröge + + * tests/examples/equalizer/demo.c: + * tests/examples/spectrum/demo-audiotest.c: + * tests/examples/spectrum/demo-osssrc.c: + examples: Destroy the cairo context after usage + +2010-07-24 10:21:05 +0200 Sebastian Dröge + + * configure.ac: + * ext/Makefile.am: + * ext/gdk_pixbuf/Makefile.am: + * ext/gdk_pixbuf/gstgdkpixbuf.c: + * ext/gdk_pixbuf/gstgdkpixbufsink.c: + * ext/gdk_pixbuf/pixbufscale.c: + Revert "gdkpixbuf: Add a gdkpixbuf3 plugin that uses gdkpixbuf3" + This reverts commit b6788153161b4e07fbf3d42a2d8921ea049305d0. + There's no gdk-pixbuf3 anymore. gdk-pixbuf was separated from GTK+ + and will stay at version 2.0 for GTK+ 3.0. + +2010-07-24 10:19:37 +0200 Sebastian Dröge + + * tests/examples/equalizer/demo.c: + * tests/examples/spectrum/demo-audiotest.c: + * tests/examples/spectrum/demo-osssrc.c: + examples: Use cairo instead of to-be-deprecated GDK API + Fixes bug #625002. + +2010-07-22 16:24:43 +0200 Mark Nauwelaerts + + * ext/flac/gstflacdec.c: + flacdec: fix event leak + +2010-07-22 12:05:26 +0200 Mark Nauwelaerts + + * gst/matroska/matroska-demux.c: + * gst/matroska/matroska-demux.h: + matroskademux: pull mode non-cue seeking + That is, in files that have no index (Cue), perform seek by scanning for + nearest cluster with timecode before requested position. Scanning is done + as a combination of interpolation and sequential scan. + Fixes #617368. + +2010-07-16 12:46:50 +0200 Mark Nauwelaerts + + * gst/matroska/matroska-mux.c: + matroskamux: streamable files need no _finish + Fixes #624455. + +2010-07-22 11:46:35 +0200 Mark Nauwelaerts + + * gst/avi/gstavidemux.c: + avidemux: push mode; handle 0-size data chunks + Fixes #618535. + +2010-07-21 08:11:23 +0200 Sebastian Dröge + + * gst/videomixer/videomixer.c: + videomixer: Only reset QoS information and send a NEWSEGMENT event downstream for NEWSEGMENT events on the master pad + +2010-07-14 20:31:44 -0700 David Schleef + + * gst/debugutils/Makefile.am: + * gst/debugutils/gstcapsdebug.c: + * gst/debugutils/gstcapsdebug.h: + * gst/debugutils/gstdebug.c: + capsdebug: Add new element + +2010-07-20 16:11:25 +0100 Tim-Philipp Müller + + * gst/matroska/matroska-mux.c: + matroskamux: demote WARNING message to LOG level + It's not a warning. + +2010-07-19 14:47:32 -0300 Thiago Santos + + * ext/jpeg/gstjpegdec.c: + jpegdec: Fix regression on markers parsing + Fixes a regression introduced when fixing bug #583047 in + commit a391bf52cc3c580c7a0a2316ca52eb66da3b85c1 + Skip the data when libjpeg asks it to be skipped on + one of its callbacks. + +2010-07-16 18:04:44 +0200 Mark Nauwelaerts + + * gst/matroska/matroska-demux.c: + matroskademux: add missing argument in debug message + +2010-07-16 17:53:55 +0200 Sebastian Dröge + + * ext/pulse/pulsemixerctrl.c: + * ext/pulse/pulsesink.c: + * ext/pulse/pulsesrc.c: + pulsesink: Only use gst_audio_clock_new() when compiling against newer base + +2010-07-09 17:33:55 +0200 Sebastian Dröge + + * ext/raw1394/gstdv1394src.c: + dv1394src: Post clock-provide and clock-lost messages when going from/to PLAYING + In PAUSED and below the clock is not working. + +2010-07-04 16:57:55 +0200 Sebastian Dröge + + * ext/gconf/gstswitchsink.c: + * ext/gconf/gstswitchsink.h: + * ext/gconf/gstswitchsrc.c: + * ext/gconf/gstswitchsrc.h: + gconf: Fix ref handling of new child elements and minor cleanup + +2010-07-04 09:45:52 +0200 Sebastian Dröge + + * ext/gconf/gstgconfvideosrc.c: + gconfvideosrc: Use correct GConf key + +2010-07-03 14:16:42 +0200 Sebastian Dröge + + * ext/gconf/gstgconfaudiosrc.c: + * ext/gconf/gstgconfaudiosrc.h: + gconf: Port gconfaudiosrc to GstSwitchSrc + +2010-07-03 14:12:12 +0200 Sebastian Dröge + + * ext/gconf/gstgconfvideosrc.c: + * ext/gconf/gstgconfvideosrc.h: + gconf: Port gconfvideosrc to GstSwitchSrc + +2010-07-03 14:11:55 +0200 Sebastian Dröge + + * ext/gconf/Makefile.am: + * ext/gconf/gstswitchsrc.c: + * ext/gconf/gstswitchsrc.h: + gconf: Add GstSwitchSrc base class + +2010-07-03 13:56:33 +0200 Sebastian Dröge + + * ext/gconf/gstswitchsink.c: + gconf: Create the ghostpad of the switchsink from the template + +2010-07-07 10:10:52 +0200 Sebastian Dröge + + * ext/pulse/pulsesink.c: + pulsesink: Post clock-provide/clock-lost when going to/from PAUSED + Also use gst_audio_clock_new_full() to prevent crashes when the + clock is used after the element was destroyed. + +2010-07-15 11:49:03 +0200 Mark Nauwelaerts + + * gst/matroska/matroska-demux.c: + matroskademux: remove bogus UNLOCK + +2010-07-13 12:34:44 +0200 Mark Nauwelaerts + + * gst/qtdemux/qtdemux.c: + qtdemux: also calculate PAR using track width and height for QT files + (... as opposed to only for ISO style files). + Fixes #624173. + +2010-07-12 17:29:12 +0200 Mark Nauwelaerts + + * gst/matroska/matroska-demux.c: + matroskademux: handle bogus files storing ADTS AAC data + +2010-07-09 16:57:33 +0200 Mark Nauwelaerts + + * gst/matroska/matroska-demux.c: + matroskademux: do not error out on a block with unknown tracknumber + +2010-07-08 18:57:21 +0200 Mark Nauwelaerts + + * gst/qtdemux/qtdemux.c: + qtdemux: do not align reverse playback reference stream twice + Timestamp rounding issues could lead to going backwards 2 keyframe periods + (rather than only 1). While this is not necessarily a problem, it might + potentially place additional (buffering) load on downstream and could be + avoided (because We Can). + Fixes #623629. + +2010-07-08 16:07:16 +0200 Mark Nauwelaerts + + * gst/qtdemux/qtdemux.c: + qtdemux: convert some more mov format timestamp to gst time + +2010-07-07 14:16:59 +0200 Mark Nauwelaerts + + * gst/avi/gstavidemux.c: + avidemux: additional verification heuristics for VBR audio stream + Check for and override some header field(s) for reasonable values, according + to later expected use in calculations. + +2010-07-14 15:21:21 +0200 Alessandro Decina + + * gst/videofilter/gstvideobalance.c: + videobalance: Fix wrong lock order that could lead to a deadlock. Fixes #624331. + +2010-07-16 11:31:08 +0100 Tim-Philipp Müller + + * configure.ac: + * docs/plugins/gst-plugins-good-plugins.hierarchy: + * docs/plugins/inspect/plugin-1394.xml: + * docs/plugins/inspect/plugin-aasink.xml: + * docs/plugins/inspect/plugin-alaw.xml: + * docs/plugins/inspect/plugin-alpha.xml: + * docs/plugins/inspect/plugin-alphacolor.xml: + * docs/plugins/inspect/plugin-annodex.xml: + * docs/plugins/inspect/plugin-apetag.xml: + * docs/plugins/inspect/plugin-audiofx.xml: + * docs/plugins/inspect/plugin-auparse.xml: + * docs/plugins/inspect/plugin-autodetect.xml: + * docs/plugins/inspect/plugin-avi.xml: + * docs/plugins/inspect/plugin-cacasink.xml: + * docs/plugins/inspect/plugin-cairo.xml: + * docs/plugins/inspect/plugin-cutter.xml: + * docs/plugins/inspect/plugin-debug.xml: + * docs/plugins/inspect/plugin-deinterlace.xml: + * docs/plugins/inspect/plugin-dv.xml: + * docs/plugins/inspect/plugin-efence.xml: + * docs/plugins/inspect/plugin-effectv.xml: + * docs/plugins/inspect/plugin-equalizer.xml: + * docs/plugins/inspect/plugin-esdsink.xml: + * docs/plugins/inspect/plugin-flac.xml: + * docs/plugins/inspect/plugin-flv.xml: + * docs/plugins/inspect/plugin-flxdec.xml: + * docs/plugins/inspect/plugin-gconfelements.xml: + * docs/plugins/inspect/plugin-gdkpixbuf.xml: + * docs/plugins/inspect/plugin-goom.xml: + * docs/plugins/inspect/plugin-goom2k1.xml: + * docs/plugins/inspect/plugin-gstrtpmanager.xml: + * docs/plugins/inspect/plugin-halelements.xml: + * docs/plugins/inspect/plugin-icydemux.xml: + * docs/plugins/inspect/plugin-id3demux.xml: + * docs/plugins/inspect/plugin-imagefreeze.xml: + * docs/plugins/inspect/plugin-interleave.xml: + * docs/plugins/inspect/plugin-jpeg.xml: + * docs/plugins/inspect/plugin-level.xml: + * docs/plugins/inspect/plugin-matroska.xml: + * docs/plugins/inspect/plugin-mulaw.xml: + * docs/plugins/inspect/plugin-multifile.xml: + * docs/plugins/inspect/plugin-multipart.xml: + * docs/plugins/inspect/plugin-navigationtest.xml: + * docs/plugins/inspect/plugin-oss4.xml: + * docs/plugins/inspect/plugin-ossaudio.xml: + * docs/plugins/inspect/plugin-png.xml: + * docs/plugins/inspect/plugin-pulseaudio.xml: + * docs/plugins/inspect/plugin-quicktime.xml: + * docs/plugins/inspect/plugin-replaygain.xml: + * docs/plugins/inspect/plugin-rtp.xml: + * docs/plugins/inspect/plugin-rtsp.xml: + * docs/plugins/inspect/plugin-shapewipe.xml: + * docs/plugins/inspect/plugin-shout2send.xml: + * docs/plugins/inspect/plugin-smpte.xml: + * docs/plugins/inspect/plugin-soup.xml: + * docs/plugins/inspect/plugin-spectrum.xml: + * docs/plugins/inspect/plugin-speex.xml: + * docs/plugins/inspect/plugin-taglib.xml: + * docs/plugins/inspect/plugin-udp.xml: + * docs/plugins/inspect/plugin-video4linux2.xml: + * docs/plugins/inspect/plugin-videobox.xml: + * docs/plugins/inspect/plugin-videocrop.xml: + * docs/plugins/inspect/plugin-videofilter.xml: + * docs/plugins/inspect/plugin-videomixer.xml: + * docs/plugins/inspect/plugin-wavenc.xml: + * docs/plugins/inspect/plugin-wavpack.xml: + * docs/plugins/inspect/plugin-wavparse.xml: + * docs/plugins/inspect/plugin-ximagesrc.xml: + * docs/plugins/inspect/plugin-y4menc.xml: + * win32/common/config.h: + Back to development + +=== release 0.10.24 === + +2010-07-15 01:49:04 +0100 Tim-Philipp Müller + + * ChangeLog: + * NEWS: + * RELEASE: + * configure.ac: + * docs/plugins/inspect/plugin-1394.xml: + * docs/plugins/inspect/plugin-aasink.xml: + * docs/plugins/inspect/plugin-alaw.xml: + * docs/plugins/inspect/plugin-alpha.xml: + * docs/plugins/inspect/plugin-alphacolor.xml: + * docs/plugins/inspect/plugin-annodex.xml: + * docs/plugins/inspect/plugin-apetag.xml: + * docs/plugins/inspect/plugin-audiofx.xml: + * docs/plugins/inspect/plugin-auparse.xml: + * docs/plugins/inspect/plugin-autodetect.xml: + * docs/plugins/inspect/plugin-avi.xml: + * docs/plugins/inspect/plugin-cacasink.xml: + * docs/plugins/inspect/plugin-cairo.xml: + * docs/plugins/inspect/plugin-cutter.xml: + * docs/plugins/inspect/plugin-debug.xml: + * docs/plugins/inspect/plugin-deinterlace.xml: + * docs/plugins/inspect/plugin-dv.xml: + * docs/plugins/inspect/plugin-efence.xml: + * docs/plugins/inspect/plugin-effectv.xml: + * docs/plugins/inspect/plugin-equalizer.xml: + * docs/plugins/inspect/plugin-esdsink.xml: + * docs/plugins/inspect/plugin-flac.xml: + * docs/plugins/inspect/plugin-flv.xml: + * docs/plugins/inspect/plugin-flxdec.xml: + * docs/plugins/inspect/plugin-gconfelements.xml: + * docs/plugins/inspect/plugin-gdkpixbuf.xml: + * docs/plugins/inspect/plugin-goom.xml: + * docs/plugins/inspect/plugin-goom2k1.xml: + * docs/plugins/inspect/plugin-gstrtpmanager.xml: + * docs/plugins/inspect/plugin-halelements.xml: + * docs/plugins/inspect/plugin-icydemux.xml: + * docs/plugins/inspect/plugin-id3demux.xml: + * docs/plugins/inspect/plugin-imagefreeze.xml: + * docs/plugins/inspect/plugin-interleave.xml: + * docs/plugins/inspect/plugin-jpeg.xml: + * docs/plugins/inspect/plugin-level.xml: + * docs/plugins/inspect/plugin-matroska.xml: + * docs/plugins/inspect/plugin-mulaw.xml: + * docs/plugins/inspect/plugin-multifile.xml: + * docs/plugins/inspect/plugin-multipart.xml: + * docs/plugins/inspect/plugin-navigationtest.xml: + * docs/plugins/inspect/plugin-oss4.xml: + * docs/plugins/inspect/plugin-ossaudio.xml: + * docs/plugins/inspect/plugin-png.xml: + * docs/plugins/inspect/plugin-pulseaudio.xml: + * docs/plugins/inspect/plugin-quicktime.xml: + * docs/plugins/inspect/plugin-replaygain.xml: + * docs/plugins/inspect/plugin-rtp.xml: + * docs/plugins/inspect/plugin-rtsp.xml: + * docs/plugins/inspect/plugin-shapewipe.xml: + * docs/plugins/inspect/plugin-shout2send.xml: + * docs/plugins/inspect/plugin-smpte.xml: + * docs/plugins/inspect/plugin-soup.xml: + * docs/plugins/inspect/plugin-spectrum.xml: + * docs/plugins/inspect/plugin-speex.xml: + * docs/plugins/inspect/plugin-taglib.xml: + * docs/plugins/inspect/plugin-udp.xml: + * docs/plugins/inspect/plugin-video4linux2.xml: + * docs/plugins/inspect/plugin-videobox.xml: + * docs/plugins/inspect/plugin-videocrop.xml: + * docs/plugins/inspect/plugin-videofilter.xml: + * docs/plugins/inspect/plugin-videomixer.xml: + * docs/plugins/inspect/plugin-wavenc.xml: + * docs/plugins/inspect/plugin-wavpack.xml: + * docs/plugins/inspect/plugin-wavparse.xml: + * docs/plugins/inspect/plugin-ximagesrc.xml: + * docs/plugins/inspect/plugin-y4menc.xml: + * gst-plugins-good.doap: + * win32/common/config.h: + Release 0.10.24 2010-07-15 01:35:06 +0100 Tim-Philipp Müller diff --git a/NEWS b/NEWS index 4833c2d02c..4e0a30039b 100644 --- a/NEWS +++ b/NEWS @@ -1,4 +1,68 @@ -This is GStreamer Good Plug-ins 0.10.24, "Taking Liberties" +This is GStreamer Good Plug-ins 0.10.25, "Woe to You Oh Earth and Sea" + +Changes since 0.10.24: + + * v4l2src: massive performance improvement in many cases + * streaming mode fixes for avi and matroska/webm + * seeking in matroska and webm files that don't have an index + * new cpureport element for debugging + * avidemux: improve VBR audio stream handling + * avidemux: streaming mode fixes: use proper offset for movi-based index, handle 0-size data chunks + * debugutils: new element cpureport, posts "cpu-report" element messages on bus + * flacdec, rtspsrc, rtph264pay, rtpmp4vdepay: memory leak fixes + * gconfvideosrc: use correct GConf key (ie. not the audiosrc key) + * gdkpixbuf: remove gdkpixbuf3 plugin again, gdk-pixbuf was split out of gtk+ and will stay at 2.x + * id3v2mux: write beats-per-minute tag using TBPM frame + * jpegdec: fix markers parsing regression + * matroskademux: do not error out on a block with unknown tracknumber + * matroskademux: fix streaming in case where the size in bytes is unknown + * matroskademux: handle bogus files storing ADTS AAC data + * matroskademux: support seeking in local files even if they don't have an index + * matroskamux: don't try to seek back and fix up headers if streamable=TRUE + * pulsesink: fix race when creating multiple pulsesinks at the same time + * qtdemux: also calculate PAR using track width and height for QT files + * qtdemux: fix the max/avg in btrt atom reading + * qtdemux: improve reverse playback + * qtdemux: parse 64-bit version of mvhd atom as well instead of erroring out + * qtdemux: prevent reading past avc1 atom when parsing + * rtpg729pay: avoid basertppayload perfect-rtptime mode + * rtph263pdepay: allow more clock-rates as input + * rtpL16depay: also parse encoding-params for the number of channels + * rtpL16depay: default to 1 channel if number of channels not specified + * rtpmp4gpay: implement perfect timestamps + * rtspsrc: add "port-range" property, useful for setups with firewall/ipsec + * rtspsrc: don't reuse udp sockets (avoids odd errors when data from previous streams is received) + * udpsrc: add "reuse" property to enable or disable port reuse (enabled by default, but disabled in rtspsrc) + * v4l2: sort formats in the right order so that non-emulated formats are prefered + * videobalance: fix wrong locking order that could lead to a deadlock + * videomixer: only reset QoS information and send a NEWSEGMENT event downstream for NEWSEGMENT events on the master pad + +Bugs fixed since 0.10.24: + + * 626463 : [matroskademux] " reading large block of size 14688496 not supported " + * 593117 : [avidemux] Support AVF files + * 618535 : [avidemux] fails to stream eva_2010_2.22_promo1.avi + * 621520 : [id3v2mux] write beats-per-minute tag + * 622017 : [GstRtpMP4GDepay] Packet payload was too short. + * 622577 : rtspsrc has confusing error messages + * 623209 : bug in rtpL16depay + * 623357 : avidemux: push mode doesn't work for some http streaming avi files + * 623629 : Reverse Playback Issue in QtDemux + * 624173 : [qtdemux] qt file with dimension data in tkhd does not get pixel-aspect-ratio in caps + * 624331 : videobalance: deadlocks/freezes when changing " brightness " property + * 624455 : The matroska muxer seeks even when used with streamable=TRUE + * 624770 : rtspsrc: memory leak in gst_rtspsrc_handle_request + * 625002 : [examples] Don't use GdkDraw + * 625153 : rtspsrc: add property to set client port range + * 625302 : [qtdemux] Set the pixel-aspect-ratio field also for par=1/1 + * 625371 : [matroskademux] critical warnings when playing live webm with progressive download enabled + * 625442 : pulsesink: crash - pa_threaded_mainloop_stop is called from the pa thread + * 625452 : [videomixer] Pipeline from the docs doesn't work anymore + * 626467 : matroskademux: CRITICAL **: file matroska-demux.c: line 578 (gst_matroska_demux_get_length): should not be reached + * 626609 : [qtdemux] segfault when parsing avc1 atom + * 626619 : [imagefreeze] Incorrect seek behaviour + * 627689 : [deinterlace] Broken timestamps + * 617368 : [matroska] Implement push-mode seeking and non-cue seeking Changes since 0.10.23: diff --git a/RELEASE b/RELEASE index 440a4d2acf..66cbd60890 100644 --- a/RELEASE +++ b/RELEASE @@ -1,5 +1,5 @@ -Release notes for GStreamer Good Plug-ins 0.10.24 "Taking Liberties" +Release notes for GStreamer Good Plug-ins 0.10.25 "Woe to You Oh Earth and Sea" @@ -54,108 +54,67 @@ contains a set of less supported plug-ins that haven't passed the Features of this release - * Use Orc (Optimized Inner Loops Runtime Compiler) for SIMD and - other optimisations, and remove liboil dependency. The main goal - for this release was to make the transition from liboil to liborc. - Performance improvements should not be expected and will be the - focus of future versions. liborc is an optional dependency for - the time being, to make it possible to test and develop the very - latest GStreamer versions on systems that don't have orc yet. - However, without orc slow unoptimised backup code will be used - for many performance critical code paths. Distributors are urged - to package and ship the latest version of liborc and compile - GStreamer modules with --enable-orc. Please do not distribute - GStreamer packages that are not orc enabled. More information on - the orc integration can be found in the docs/design/ directory. - - * alpha: add "prefer-passthrough" property to allow passthrough mode - * avidemux: improve audio vbr detection - * cmmlenc: Remove hack to let oggmux start a new page for every CMML buffer - * deinterlace: add mmx implementations of greedyh for UYVY; orcify some deinterlacing methods - * dv1394: fix the internal clock even more - * flvmux: add "streamable" property - * flvmux: write duration at the correct position - * gdkpixbuf: Add a gdkpixbuf3 plugin that uses gdkpixbuf3 - * jpegdec: improved parsing, and better buffer handling that minimises memcpys - * jpegdec, jpegenc: add grayscale support - * matroskademux: QoS fixes and improvements; reverse playback improvements - * matroskademux: handle zero-sized numbers correctly - * matroskamux: add "streamable" property; set streamheaders on output caps - * matroskamux: try harder to make sure clusters start with a key frame - * matroskamux: mark output buffers properly as keyframe or delta unit - * matroskamux: do some write caching to avoid newsegment events before each output buffer - * matroskamux: fix some timestamp drift caused by rounding errors - * pngenc: Support 8 bit grayscale - * pulsesink: optimize communication with PulseAudio using pa_stream_begin_write - * pulsesink: Post provide-clock message on the bus if the clock appears/disappears - * rtph264depay: consider SPS, PPS and IDR as keyframe, all others as DELTA_UNIT - * rtph264pay: handle short startcodes in the h264 bytestream - * rtpjitterbuffer: stop buffering and emit EOS at the end of a stream - * rtpmparobustdepay: add mpa-robust depayloader - * rtpmp4gdepay: calculate the frame duration correctly - * rtptheorapay: keep announcing the delivery-method in the capabilities, restores compatibility with older farsight versions again - * rtspsrc: respect aggregate control attributes; try all ranges from the sdp - * spectrum: support 24-bit width and arbitrary bit depth - * udp: make url parsing compatible with VLC syntax - * udpsrc: fix multicast support on windows - * v4l2sink: destroy buffer pool when changing state to NULL - * videobox: fix negotiation for I420/YV12 - * videomixer: don't mix input with different pixel aspect ratios; negotiation fixes - * wavparse: proper closing segment construction when doing non-flushing seeks - * wavparse: use typefind functions to check if PCM data contains dts stream + * v4l2src: massive performance improvement in many cases + * streaming mode fixes for avi and matroska/webm + * seeking in matroska and webm files that don't have an index + * new cpureport element for debugging + * avidemux: improve VBR audio stream handling + * avidemux: streaming mode fixes: use proper offset for movi-based index, handle 0-size data chunks + * debugutils: new element cpureport, posts "cpu-report" element messages on bus + * flacdec, rtspsrc, rtph264pay, rtpmp4vdepay: memory leak fixes + * gconfvideosrc: use correct GConf key (ie. not the audiosrc key) + * gdkpixbuf: remove gdkpixbuf3 plugin again, gdk-pixbuf was split out of gtk+ and will stay at 2.x + * id3v2mux: write beats-per-minute tag using TBPM frame + * jpegdec: fix markers parsing regression + * matroskademux: do not error out on a block with unknown tracknumber + * matroskademux: fix streaming in case where the size in bytes is unknown + * matroskademux: handle bogus files storing ADTS AAC data + * matroskademux: support seeking in local files even if they don't have an index + * matroskamux: don't try to seek back and fix up headers if streamable=TRUE + * pulsesink: fix race when creating multiple pulsesinks at the same time + * qtdemux: also calculate PAR using track width and height for QT files + * qtdemux: fix the max/avg in btrt atom reading + * qtdemux: improve reverse playback + * qtdemux: parse 64-bit version of mvhd atom as well instead of erroring out + * qtdemux: prevent reading past avc1 atom when parsing + * rtpg729pay: avoid basertppayload perfect-rtptime mode + * rtph263pdepay: allow more clock-rates as input + * rtpL16depay: also parse encoding-params for the number of channels + * rtpL16depay: default to 1 channel if number of channels not specified + * rtpmp4gpay: implement perfect timestamps + * rtspsrc: add "port-range" property, useful for setups with firewall/ipsec + * rtspsrc: don't reuse udp sockets (avoids odd errors when data from previous streams is received) + * udpsrc: add "reuse" property to enable or disable port reuse (enabled by default, but disabled in rtspsrc) + * v4l2: sort formats in the right order so that non-emulated formats are prefered + * videobalance: fix wrong locking order that could lead to a deadlock + * videomixer: only reset QoS information and send a NEWSEGMENT event downstream for NEWSEGMENT events on the master pad Bugs fixed in this release - * 619045 : [spectrum] Add support for 24-bit width and all depth combinations - * 555967 : [oss4] clarify some translation strings - * 570761 : [goom] crash in plugin_info_init allocating 260kB struct on stack - * 583047 : [jpegdec] optimise buffer handling when parsing frames - * 589997 : [rtp] need mpa-robust depayloader for helix-style MP3-DRAFT-00 - * 595978 : [udpsrc] failed to play a multicast stream - * 597695 : [udpsrc] support VLC-style udp://239.255.11.11:1234 uri with bind address - * 611117 : [matroskademux] can't handle unknown cluster sizes - * 613066 : [flvmux] re-enable renamed/fixed is-live property - * 615461 : dv1394src clock continues to be broken - * 617339 : pulsesink doesn't make use of pa_stream_begin_write - * 618530 : [videomixer] Doesn't handle pixel-aspect-ratio correctly - * 618871 : 1394: remove useless last_time - * 618982 : [wavparse] wrong closing segment when doing non-flushing seek - * 619198 : [matroskademux] GstEbmlRead cleanup - * 619273 : [matroskamux] reduce downstream spam - * 619293 : [avimux] clean up avi header creation code - * 619531 : [rtspsrc] embedded asx streams' rtsp server doesn't like gstreamer request - * 619717 : unit tests fail if older -good plugins are present in system plugin directory - * 619824 : Use glib for checksumming - * 619848 : [deinterlace] can't switch properties on running pipeline - * 620148 : [videomixer] Doesn't negotiate format with downstream - * 620154 : [rtph264depay] Seeking with RTP payloaders corrupts images sometimes - * 620162 : [gdkpixbufdec] Bump rank to SECONDARY - * 620277 : [pulsesink] custom clock is still used after NULL state change - * 620358 : [matroskademux] Sorenson Squish WebM output seeking issues - * 620390 : rtph264pay doesn't understand short startcodes - * 620494 : [rtsp] stuttery audio with some h264/aac streams - * 620540 : [pulsesink] pa_stream_write() failed: Invalid argument - * 620591 : rtpceltpay doesn't handle stereo celt audio - * 620743 : matroskademux: refactor delta unit handling - * 620929 : Required libraw1394 version is not high enough - * 621510 : GNOME Goal: Remove deprecated glib symbols - * 621566 : [pulsesink] since upgrading plugins sound is garbled via Amarok - * 621723 : v4l2src crashes on PLAYING- > READY- > PLAYING - * 622498 : [avidemux] Doesn't reset all state when going back to READY - * 622500 : [v4l2sink] destroy open buffers when changing to NULL - * 622501 : [videobox] may negotiate input/output format combinations it can't actually handle - * 622816 : Make demos -DSEAL safe - * 623103 : matroskamux dispose error - * 623172 : [jpegdec] leak in unit test - * 623196 : rtpptdemux: don't send custom downstream event twice - * 623366 : [qtdemux] strip out bogus tags from XMP - * 623379 : [flvmux] Writing duration outside the allocated memory area in streaming mode - * 623585 : jpegdec: fails to skip extra 0xff markers at start - * 623654 : qtdemux: Fix order of bitrates in 'btrt' atom - * 619817 : [matroskademux] Reverse playback doesn't work - * 617512 : [alpha] should work in passthrough in all formats if alpha == 1.0 - * 619485 : matroskademux: skip buffers before a late keyframe (QoS) - * 413942 : [wavparse] undetected dts-in-wav + * 626463 : [matroskademux] " reading large block of size 14688496 not supported " + * 593117 : [avidemux] Support AVF files + * 618535 : [avidemux] fails to stream eva_2010_2.22_promo1.avi + * 621520 : [id3v2mux] write beats-per-minute tag + * 622017 : [GstRtpMP4GDepay] Packet payload was too short. + * 622577 : rtspsrc has confusing error messages + * 623209 : bug in rtpL16depay + * 623357 : avidemux: push mode doesn't work for some http streaming avi files + * 623629 : Reverse Playback Issue in QtDemux + * 624173 : [qtdemux] qt file with dimension data in tkhd does not get pixel-aspect-ratio in caps + * 624331 : videobalance: deadlocks/freezes when changing " brightness " property + * 624455 : The matroska muxer seeks even when used with streamable=TRUE + * 624770 : rtspsrc: memory leak in gst_rtspsrc_handle_request + * 625002 : [examples] Don't use GdkDraw + * 625153 : rtspsrc: add property to set client port range + * 625302 : [qtdemux] Set the pixel-aspect-ratio field also for par=1/1 + * 625371 : [matroskademux] critical warnings when playing live webm with progressive download enabled + * 625442 : pulsesink: crash - pa_threaded_mainloop_stop is called from the pa thread + * 625452 : [videomixer] Pipeline from the docs doesn't work anymore + * 626467 : matroskademux: CRITICAL **: file matroska-demux.c: line 578 (gst_matroska_demux_get_length): should not be reached + * 626609 : [qtdemux] segfault when parsing avc1 atom + * 626619 : [imagefreeze] Incorrect seek behaviour + * 627689 : [deinterlace] Broken timestamps + * 617368 : [matroska] Implement push-mode seeking and non-cue seeking Download @@ -185,30 +144,17 @@ Applications Contributors to this release * Alessandro Decina - * Alexander Kojevnikov * Andoni Morales Alastruey - * Andrzej K. Haczewski - * Arun Raghavan - * Benjamin Otte + * Arnaud Vrac * David Schleef - * Edward Hervey - * Guido Günther - * Havoc Pennington - * Julien Moutte - * Keith Nicholson - * Marc-André Lureau + * Jonathan Matthew * Mark Nauwelaerts - * Michael Grzeschik - * Philip Jägenstedt - * Pierre-Louis Bossart + * Philippe Normand * Sebastian Dröge * Sjoerd Simons * Stefan Kost * Thiago Santos - * Thijs Vermeir * Tim-Philipp Müller - * Tristan Matthews * Wim Taymans - * Xavier Queralt * Zaheer Abbas Merali   \ No newline at end of file diff --git a/configure.ac b/configure.ac index 48a949c206..8a713d3514 100644 --- a/configure.ac +++ b/configure.ac @@ -5,7 +5,7 @@ dnl please read gstreamer/docs/random/autotools before changing this file dnl initialize autoconf dnl releases only do -Wall, git and prerelease does -Werror too dnl use a three digit version number for releases, and four for git/pre -AC_INIT(GStreamer Good Plug-ins, 0.10.24.5, +AC_INIT(GStreamer Good Plug-ins, 0.10.25, http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer, gst-plugins-good) diff --git a/gst-plugins-good.doap b/gst-plugins-good.doap index 68e7869491..1a841e04d7 100644 --- a/gst-plugins-good.doap +++ b/gst-plugins-good.doap @@ -32,6 +32,17 @@ the plug-in code, LGPL or LGPL-compatible for the supporting library). + + + 0.10.25 + 0.10 + Woe to You Oh Earth and Sea + 2010-09-02 + + + + + 0.10.24 diff --git a/gst/deinterlace/tvtime-dist.c b/gst/deinterlace/tvtime-dist.c index 48954c1b2e..ca871f9c29 100644 --- a/gst/deinterlace/tvtime-dist.c +++ b/gst/deinterlace/tvtime-dist.c @@ -47,23 +47,14 @@ typedef unsigned long orc_uint64; #endif #endif typedef union -{ - orc_int16 i; - orc_int8 x2[2]; -} orc_union16; -typedef union { orc_int32 i; float f; - orc_int16 x2[2]; - orc_int8 x4[4]; } orc_union32; typedef union { orc_int64 i; double f; - orc_int32 x2[2]; - orc_int16 x4[4]; } orc_union64; #endif @@ -101,17 +92,6 @@ void deinterlace_line_linear_blend (guint8 * d1, const guint8 * s1, #define ORC_SWAP_W(x) ((((x)&0xff)<<8) | (((x)&0xff00)>>8)) #define ORC_SWAP_L(x) ((((x)&0xff)<<24) | (((x)&0xff00)<<8) | (((x)&0xff0000)>>8) | (((x)&0xff000000)>>24)) #define ORC_PTR_OFFSET(ptr,offset) ((void *)(((unsigned char *)(ptr)) + (offset))) -#define ORC_MIN_NORMAL (1.1754944909521339405e-38) -#define ORC_DENORMAL(x) (((x) > -ORC_MIN_NORMAL && (x) < ORC_MIN_NORMAL) ? ((x)<0 ? (-0.0f) : (0.0f)) : (x)) -#define ORC_MINF(a,b) (isnan(a) ? a : isnan(b) ? b : ((a)<(b)) ? (a) : (b)) -#define ORC_MAXF(a,b) (isnan(a) ? a : isnan(b) ? b : ((a)>(b)) ? (a) : (b)) -#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L -#define ORC_RESTRICT restrict -#elif defined(__GNUC__) && __GNUC__ >= 4 -#define ORC_RESTRICT __restrict__ -#else -#define ORC_RESTRICT -#endif /* end Orc C target preamble */ @@ -123,32 +103,35 @@ deinterlace_line_vfir (guint8 * d1, const guint8 * s1, const guint8 * s2, const guint8 * s3, const guint8 * s4, const guint8 * s5, int n) { int i; - orc_int8 *ORC_RESTRICT ptr0; - const orc_int8 *ORC_RESTRICT ptr4; - const orc_int8 *ORC_RESTRICT ptr5; - const orc_int8 *ORC_RESTRICT ptr6; - const orc_int8 *ORC_RESTRICT ptr7; - const orc_int8 *ORC_RESTRICT ptr8; - orc_int8 var35; - orc_int8 var36; - orc_int8 var37; - orc_int8 var38; - orc_int8 var39; - orc_union16 var40; - orc_int8 var41; - orc_union16 var42; - orc_union16 var43; - orc_union16 var44; - orc_union16 var45; - orc_union16 var46; - orc_union16 var47; - orc_union16 var48; - orc_union16 var49; - orc_union16 var50; - orc_union16 var51; - orc_union16 var52; - orc_union16 var53; - orc_union16 var54; + orc_int8 var0; + orc_int8 *ptr0; + orc_int8 var4; + const orc_int8 *ptr4; + orc_int8 var5; + const orc_int8 *ptr5; + orc_int8 var6; + const orc_int8 *ptr6; + orc_int8 var7; + const orc_int8 *ptr7; + orc_int8 var8; + const orc_int8 *ptr8; + const orc_int16 var16 = 2; + const orc_int16 var17 = 1; + const orc_int16 var18 = 4; + const orc_int16 var19 = 3; + orc_int16 var32; + orc_int16 var33; + orc_int16 var34; + orc_int16 var35; + orc_int16 var36; + orc_int16 var37; + orc_int16 var38; + orc_int16 var39; + orc_int16 var40; + orc_int16 var41; + orc_int16 var42; + orc_int16 var43; + orc_int16 var44; ptr0 = (orc_int8 *) d1; ptr4 = (orc_int8 *) s1; @@ -158,84 +141,85 @@ deinterlace_line_vfir (guint8 * d1, const guint8 * s1, const guint8 * s2, ptr8 = (orc_int8 *) s5; for (i = 0; i < n; i++) { - /* 0: loadb */ - var35 = ptr4[i]; + var4 = *ptr4; + ptr4++; + var5 = *ptr5; + ptr5++; + var6 = *ptr6; + ptr6++; + var7 = *ptr7; + ptr7++; + var8 = *ptr8; + ptr8++; + /* 0: convubw */ + var32 = (orc_uint8) var4; /* 1: convubw */ - var42.i = (orc_uint8) var35; - /* 2: loadb */ - var36 = ptr8[i]; + var33 = (orc_uint8) var8; + /* 2: addw */ + var35 = var32 + var33; /* 3: convubw */ - var43.i = (orc_uint8) var36; - /* 4: addw */ - var44.i = var42.i + var43.i; - /* 5: loadb */ - var37 = ptr5[i]; - /* 6: convubw */ - var45.i = (orc_uint8) var37; - /* 7: loadb */ - var38 = ptr7[i]; - /* 8: convubw */ - var46.i = (orc_uint8) var38; - /* 9: addw */ - var47.i = var45.i + var46.i; - /* 10: shlw */ - var48.i = var47.i << 2; - /* 11: loadb */ - var39 = ptr6[i]; - /* 12: convubw */ - var49.i = (orc_uint8) var39; - /* 13: shlw */ - var50.i = var49.i << 1; - /* 14: subw */ - var51.i = var48.i - var44.i; - /* 15: addw */ - var52.i = var51.i + var50.i; - /* 16: loadpw */ - var40.i = 4; - /* 17: addw */ - var53.i = var52.i + var40.i; - /* 18: shrsw */ - var54.i = var53.i >> 3; - /* 19: convsuswb */ - var41 = ORC_CLAMP_UB (var54.i); - /* 20: storeb */ - ptr0[i] = var41; + var36 = (orc_uint8) var5; + /* 4: convubw */ + var34 = (orc_uint8) var7; + /* 5: addw */ + var37 = var36 + var34; + /* 6: shlw */ + var38 = var37 << var16; + /* 7: convubw */ + var39 = (orc_uint8) var6; + /* 8: shlw */ + var40 = var39 << var17; + /* 9: subw */ + var41 = var38 - var35; + /* 10: addw */ + var42 = var41 + var40; + /* 11: addw */ + var43 = var42 + var18; + /* 12: shrsw */ + var44 = var43 >> var19; + /* 13: convsuswb */ + var0 = ORC_CLAMP_UB (var44); + *ptr0 = var0; + ptr0++; } } #else static void -_backup_deinterlace_line_vfir (OrcExecutor * ORC_RESTRICT ex) +_backup_deinterlace_line_vfir (OrcExecutor * ex) { int i; int n = ex->n; - orc_int8 *ORC_RESTRICT ptr0; - const orc_int8 *ORC_RESTRICT ptr4; - const orc_int8 *ORC_RESTRICT ptr5; - const orc_int8 *ORC_RESTRICT ptr6; - const orc_int8 *ORC_RESTRICT ptr7; - const orc_int8 *ORC_RESTRICT ptr8; - orc_int8 var35; - orc_int8 var36; - orc_int8 var37; - orc_int8 var38; - orc_int8 var39; - orc_union16 var40; - orc_int8 var41; - orc_union16 var42; - orc_union16 var43; - orc_union16 var44; - orc_union16 var45; - orc_union16 var46; - orc_union16 var47; - orc_union16 var48; - orc_union16 var49; - orc_union16 var50; - orc_union16 var51; - orc_union16 var52; - orc_union16 var53; - orc_union16 var54; + orc_int8 var0; + orc_int8 *ptr0; + orc_int8 var4; + const orc_int8 *ptr4; + orc_int8 var5; + const orc_int8 *ptr5; + orc_int8 var6; + const orc_int8 *ptr6; + orc_int8 var7; + const orc_int8 *ptr7; + orc_int8 var8; + const orc_int8 *ptr8; + const orc_int16 var16 = 2; + const orc_int16 var17 = 1; + const orc_int16 var18 = 4; + const orc_int16 var19 = 3; + orc_int16 var32; + orc_int16 var33; + orc_int16 var34; + orc_int16 var35; + orc_int16 var36; + orc_int16 var37; + orc_int16 var38; + orc_int16 var39; + orc_int16 var40; + orc_int16 var41; + orc_int16 var42; + orc_int16 var43; + orc_int16 var44; ptr0 = (orc_int8 *) ex->arrays[0]; ptr4 = (orc_int8 *) ex->arrays[4]; @@ -245,48 +229,46 @@ _backup_deinterlace_line_vfir (OrcExecutor * ORC_RESTRICT ex) ptr8 = (orc_int8 *) ex->arrays[8]; for (i = 0; i < n; i++) { - /* 0: loadb */ - var35 = ptr4[i]; + var4 = *ptr4; + ptr4++; + var5 = *ptr5; + ptr5++; + var6 = *ptr6; + ptr6++; + var7 = *ptr7; + ptr7++; + var8 = *ptr8; + ptr8++; + /* 0: convubw */ + var32 = (orc_uint8) var4; /* 1: convubw */ - var42.i = (orc_uint8) var35; - /* 2: loadb */ - var36 = ptr8[i]; + var33 = (orc_uint8) var8; + /* 2: addw */ + var35 = var32 + var33; /* 3: convubw */ - var43.i = (orc_uint8) var36; - /* 4: addw */ - var44.i = var42.i + var43.i; - /* 5: loadb */ - var37 = ptr5[i]; - /* 6: convubw */ - var45.i = (orc_uint8) var37; - /* 7: loadb */ - var38 = ptr7[i]; - /* 8: convubw */ - var46.i = (orc_uint8) var38; - /* 9: addw */ - var47.i = var45.i + var46.i; - /* 10: shlw */ - var48.i = var47.i << 2; - /* 11: loadb */ - var39 = ptr6[i]; - /* 12: convubw */ - var49.i = (orc_uint8) var39; - /* 13: shlw */ - var50.i = var49.i << 1; - /* 14: subw */ - var51.i = var48.i - var44.i; - /* 15: addw */ - var52.i = var51.i + var50.i; - /* 16: loadpw */ - var40.i = 4; - /* 17: addw */ - var53.i = var52.i + var40.i; - /* 18: shrsw */ - var54.i = var53.i >> 3; - /* 19: convsuswb */ - var41 = ORC_CLAMP_UB (var54.i); - /* 20: storeb */ - ptr0[i] = var41; + var36 = (orc_uint8) var5; + /* 4: convubw */ + var34 = (orc_uint8) var7; + /* 5: addw */ + var37 = var36 + var34; + /* 6: shlw */ + var38 = var37 << var16; + /* 7: convubw */ + var39 = (orc_uint8) var6; + /* 8: shlw */ + var40 = var39 << var17; + /* 9: subw */ + var41 = var38 - var35; + /* 10: addw */ + var42 = var41 + var40; + /* 11: addw */ + var43 = var42 + var18; + /* 12: shrsw */ + var44 = var43 >> var19; + /* 13: convsuswb */ + var0 = ORC_CLAMP_UB (var44); + *ptr0 = var0; + ptr0++; } } @@ -314,42 +296,28 @@ deinterlace_line_vfir (guint8 * d1, const guint8 * s1, const guint8 * s2, orc_program_add_source (p, 1, "s3"); orc_program_add_source (p, 1, "s4"); orc_program_add_source (p, 1, "s5"); - orc_program_add_constant (p, 2, 0x00000002, "c1"); - orc_program_add_constant (p, 2, 0x00000001, "c2"); - orc_program_add_constant (p, 2, 0x00000004, "c3"); - orc_program_add_constant (p, 2, 0x00000003, "c4"); + orc_program_add_constant (p, 2, 2, "c1"); + orc_program_add_constant (p, 2, 1, "c2"); + orc_program_add_constant (p, 2, 4, "c3"); + orc_program_add_constant (p, 2, 3, "c4"); orc_program_add_temporary (p, 2, "t1"); orc_program_add_temporary (p, 2, "t2"); orc_program_add_temporary (p, 2, "t3"); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S5, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T3, ORC_VAR_S4, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3, - ORC_VAR_D1); - orc_program_append_2 (p, "shlw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T3, ORC_VAR_S3, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "shlw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "subw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C3, - ORC_VAR_D1); - orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C4, - ORC_VAR_D1); - orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T2, - ORC_VAR_D1, ORC_VAR_D1); + orc_program_append (p, "convubw", ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1); + orc_program_append (p, "convubw", ORC_VAR_T2, ORC_VAR_S5, ORC_VAR_D1); + orc_program_append (p, "addw", ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2); + orc_program_append (p, "convubw", ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1); + orc_program_append (p, "convubw", ORC_VAR_T3, ORC_VAR_S4, ORC_VAR_D1); + orc_program_append (p, "addw", ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3); + orc_program_append (p, "shlw", ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1); + orc_program_append (p, "convubw", ORC_VAR_T3, ORC_VAR_S3, ORC_VAR_D1); + orc_program_append (p, "shlw", ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_C2); + orc_program_append (p, "subw", ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1); + orc_program_append (p, "addw", ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T3); + orc_program_append (p, "addw", ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C3); + orc_program_append (p, "shrsw", ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C4); + orc_program_append (p, "convsuswb", ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_D1); result = orc_program_compile (p); } @@ -379,56 +347,56 @@ deinterlace_line_linear (guint8 * d1, const guint8 * s1, const guint8 * s2, int n) { int i; - orc_int8 *ORC_RESTRICT ptr0; - const orc_int8 *ORC_RESTRICT ptr4; - const orc_int8 *ORC_RESTRICT ptr5; - orc_int8 var32; - orc_int8 var33; - orc_int8 var34; + orc_int8 var0; + orc_int8 *ptr0; + orc_int8 var4; + const orc_int8 *ptr4; + orc_int8 var5; + const orc_int8 *ptr5; ptr0 = (orc_int8 *) d1; ptr4 = (orc_int8 *) s1; ptr5 = (orc_int8 *) s2; for (i = 0; i < n; i++) { - /* 0: loadb */ - var32 = ptr4[i]; - /* 1: loadb */ - var33 = ptr5[i]; - /* 2: avgub */ - var34 = ((orc_uint8) var32 + (orc_uint8) var33 + 1) >> 1; - /* 3: storeb */ - ptr0[i] = var34; + var4 = *ptr4; + ptr4++; + var5 = *ptr5; + ptr5++; + /* 0: avgub */ + var0 = ((orc_uint8) var4 + (orc_uint8) var5 + 1) >> 1; + *ptr0 = var0; + ptr0++; } } #else static void -_backup_deinterlace_line_linear (OrcExecutor * ORC_RESTRICT ex) +_backup_deinterlace_line_linear (OrcExecutor * ex) { int i; int n = ex->n; - orc_int8 *ORC_RESTRICT ptr0; - const orc_int8 *ORC_RESTRICT ptr4; - const orc_int8 *ORC_RESTRICT ptr5; - orc_int8 var32; - orc_int8 var33; - orc_int8 var34; + orc_int8 var0; + orc_int8 *ptr0; + orc_int8 var4; + const orc_int8 *ptr4; + orc_int8 var5; + const orc_int8 *ptr5; ptr0 = (orc_int8 *) ex->arrays[0]; ptr4 = (orc_int8 *) ex->arrays[4]; ptr5 = (orc_int8 *) ex->arrays[5]; for (i = 0; i < n; i++) { - /* 0: loadb */ - var32 = ptr4[i]; - /* 1: loadb */ - var33 = ptr5[i]; - /* 2: avgub */ - var34 = ((orc_uint8) var32 + (orc_uint8) var33 + 1) >> 1; - /* 3: storeb */ - ptr0[i] = var34; + var4 = *ptr4; + ptr4++; + var5 = *ptr5; + ptr5++; + /* 0: avgub */ + var0 = ((orc_uint8) var4 + (orc_uint8) var5 + 1) >> 1; + *ptr0 = var0; + ptr0++; } } @@ -454,8 +422,7 @@ deinterlace_line_linear (guint8 * d1, const guint8 * s1, const guint8 * s2, orc_program_add_source (p, 1, "s1"); orc_program_add_source (p, 1, "s2"); - orc_program_append_2 (p, "avgub", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_S2, - ORC_VAR_D1); + orc_program_append (p, "avgub", ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_S2); result = orc_program_compile (p); } @@ -482,23 +449,24 @@ deinterlace_line_linear_blend (guint8 * d1, const guint8 * s1, const guint8 * s2, const guint8 * s3, int n) { int i; - orc_int8 *ORC_RESTRICT ptr0; - const orc_int8 *ORC_RESTRICT ptr4; - const orc_int8 *ORC_RESTRICT ptr5; - const orc_int8 *ORC_RESTRICT ptr6; - orc_int8 var35; - orc_int8 var36; - orc_int8 var37; - orc_union16 var38; - orc_int8 var39; - orc_union16 var40; - orc_union16 var41; - orc_union16 var42; - orc_union16 var43; - orc_union16 var44; - orc_union16 var45; - orc_union16 var46; - orc_union16 var47; + orc_int8 var0; + orc_int8 *ptr0; + orc_int8 var4; + const orc_int8 *ptr4; + orc_int8 var5; + const orc_int8 *ptr5; + orc_int8 var6; + const orc_int8 *ptr6; + const orc_int16 var16 = 2; + const orc_int16 var17 = 2; + orc_int16 var32; + orc_int16 var33; + orc_int16 var34; + orc_int16 var35; + orc_int16 var36; + orc_int16 var37; + orc_int16 var38; + orc_int16 var39; ptr0 = (orc_int8 *) d1; ptr4 = (orc_int8 *) s1; @@ -506,61 +474,60 @@ deinterlace_line_linear_blend (guint8 * d1, const guint8 * s1, ptr6 = (orc_int8 *) s3; for (i = 0; i < n; i++) { - /* 0: loadb */ - var35 = ptr4[i]; + var4 = *ptr4; + ptr4++; + var5 = *ptr5; + ptr5++; + var6 = *ptr6; + ptr6++; + /* 0: convubw */ + var32 = (orc_uint8) var4; /* 1: convubw */ - var40.i = (orc_uint8) var35; - /* 2: loadb */ - var36 = ptr5[i]; - /* 3: convubw */ - var41.i = (orc_uint8) var36; - /* 4: loadb */ - var37 = ptr6[i]; - /* 5: convubw */ - var42.i = (orc_uint8) var37; + var33 = (orc_uint8) var5; + /* 2: convubw */ + var34 = (orc_uint8) var6; + /* 3: addw */ + var35 = var32 + var33; + /* 4: addw */ + var36 = var34 + var34; + /* 5: addw */ + var37 = var35 + var36; /* 6: addw */ - var43.i = var40.i + var41.i; - /* 7: addw */ - var44.i = var42.i + var42.i; - /* 8: addw */ - var45.i = var43.i + var44.i; - /* 9: loadpw */ - var38.i = 2; - /* 10: addw */ - var46.i = var45.i + var38.i; - /* 11: shrsw */ - var47.i = var46.i >> 2; - /* 12: convsuswb */ - var39 = ORC_CLAMP_UB (var47.i); - /* 13: storeb */ - ptr0[i] = var39; + var38 = var37 + var16; + /* 7: shrsw */ + var39 = var38 >> var17; + /* 8: convsuswb */ + var0 = ORC_CLAMP_UB (var39); + *ptr0 = var0; + ptr0++; } } #else static void -_backup_deinterlace_line_linear_blend (OrcExecutor * ORC_RESTRICT ex) +_backup_deinterlace_line_linear_blend (OrcExecutor * ex) { int i; int n = ex->n; - orc_int8 *ORC_RESTRICT ptr0; - const orc_int8 *ORC_RESTRICT ptr4; - const orc_int8 *ORC_RESTRICT ptr5; - const orc_int8 *ORC_RESTRICT ptr6; - orc_int8 var35; - orc_int8 var36; - orc_int8 var37; - orc_union16 var38; - orc_int8 var39; - orc_union16 var40; - orc_union16 var41; - orc_union16 var42; - orc_union16 var43; - orc_union16 var44; - orc_union16 var45; - orc_union16 var46; - orc_union16 var47; + orc_int8 var0; + orc_int8 *ptr0; + orc_int8 var4; + const orc_int8 *ptr4; + orc_int8 var5; + const orc_int8 *ptr5; + orc_int8 var6; + const orc_int8 *ptr6; + const orc_int16 var16 = 2; + const orc_int16 var17 = 2; + orc_int16 var32; + orc_int16 var33; + orc_int16 var34; + orc_int16 var35; + orc_int16 var36; + orc_int16 var37; + orc_int16 var38; + orc_int16 var39; ptr0 = (orc_int8 *) ex->arrays[0]; ptr4 = (orc_int8 *) ex->arrays[4]; @@ -568,34 +535,32 @@ _backup_deinterlace_line_linear_blend (OrcExecutor * ORC_RESTRICT ex) ptr6 = (orc_int8 *) ex->arrays[6]; for (i = 0; i < n; i++) { - /* 0: loadb */ - var35 = ptr4[i]; + var4 = *ptr4; + ptr4++; + var5 = *ptr5; + ptr5++; + var6 = *ptr6; + ptr6++; + /* 0: convubw */ + var32 = (orc_uint8) var4; /* 1: convubw */ - var40.i = (orc_uint8) var35; - /* 2: loadb */ - var36 = ptr5[i]; - /* 3: convubw */ - var41.i = (orc_uint8) var36; - /* 4: loadb */ - var37 = ptr6[i]; - /* 5: convubw */ - var42.i = (orc_uint8) var37; + var33 = (orc_uint8) var5; + /* 2: convubw */ + var34 = (orc_uint8) var6; + /* 3: addw */ + var35 = var32 + var33; + /* 4: addw */ + var36 = var34 + var34; + /* 5: addw */ + var37 = var35 + var36; /* 6: addw */ - var43.i = var40.i + var41.i; - /* 7: addw */ - var44.i = var42.i + var42.i; - /* 8: addw */ - var45.i = var43.i + var44.i; - /* 9: loadpw */ - var38.i = 2; - /* 10: addw */ - var46.i = var45.i + var38.i; - /* 11: shrsw */ - var47.i = var46.i >> 2; - /* 12: convsuswb */ - var39 = ORC_CLAMP_UB (var47.i); - /* 13: storeb */ - ptr0[i] = var39; + var38 = var37 + var16; + /* 7: shrsw */ + var39 = var38 >> var17; + /* 8: convsuswb */ + var0 = ORC_CLAMP_UB (var39); + *ptr0 = var0; + ptr0++; } } @@ -622,30 +587,21 @@ deinterlace_line_linear_blend (guint8 * d1, const guint8 * s1, orc_program_add_source (p, 1, "s1"); orc_program_add_source (p, 1, "s2"); orc_program_add_source (p, 1, "s3"); - orc_program_add_constant (p, 2, 0x00000002, "c1"); - orc_program_add_constant (p, 2, 0x00000002, "c2"); + orc_program_add_constant (p, 2, 2, "c1"); + orc_program_add_constant (p, 2, 2, "c2"); orc_program_add_temporary (p, 2, "t1"); orc_program_add_temporary (p, 2, "t2"); orc_program_add_temporary (p, 2, "t3"); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T3, ORC_VAR_S3, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T3, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T3, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "shrsw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2, - ORC_VAR_D1); - orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T1, - ORC_VAR_D1, ORC_VAR_D1); + orc_program_append (p, "convubw", ORC_VAR_T1, ORC_VAR_S1, ORC_VAR_D1); + orc_program_append (p, "convubw", ORC_VAR_T2, ORC_VAR_S2, ORC_VAR_D1); + orc_program_append (p, "convubw", ORC_VAR_T3, ORC_VAR_S3, ORC_VAR_D1); + orc_program_append (p, "addw", ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T2); + orc_program_append (p, "addw", ORC_VAR_T3, ORC_VAR_T3, ORC_VAR_T3); + orc_program_append (p, "addw", ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_T3); + orc_program_append (p, "addw", ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1); + orc_program_append (p, "shrsw", ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C2); + orc_program_append (p, "convsuswb", ORC_VAR_D1, ORC_VAR_T1, ORC_VAR_D1); result = orc_program_compile (p); } diff --git a/gst/deinterlace/tvtime-dist.h b/gst/deinterlace/tvtime-dist.h index 268188d24c..27be60be1b 100644 --- a/gst/deinterlace/tvtime-dist.h +++ b/gst/deinterlace/tvtime-dist.h @@ -10,8 +10,6 @@ extern "C" { #endif - - #ifndef _ORC_INTEGER_TYPEDEFS_ #define _ORC_INTEGER_TYPEDEFS_ #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L @@ -49,10 +47,10 @@ typedef long orc_int64; typedef unsigned long orc_uint64; #endif #endif -typedef union { orc_int16 i; orc_int8 x2[2]; } orc_union16; -typedef union { orc_int32 i; float f; orc_int16 x2[2]; orc_int8 x4[4]; } orc_union32; -typedef union { orc_int64 i; double f; orc_int32 x2[2]; orc_int16 x4[4]; } orc_union64; +typedef union { orc_int32 i; float f; } orc_union32; +typedef union { orc_int64 i; double f; } orc_union64; #endif + void deinterlace_line_vfir (guint8 * d1, const guint8 * s1, const guint8 * s2, const guint8 * s3, const guint8 * s4, const guint8 * s5, int n); void deinterlace_line_linear (guint8 * d1, const guint8 * s1, const guint8 * s2, int n); void deinterlace_line_linear_blend (guint8 * d1, const guint8 * s1, const guint8 * s2, const guint8 * s3, int n); diff --git a/gst/videobox/gstvideoboxorc-dist.c b/gst/videobox/gstvideoboxorc-dist.c index d50e1bcbd5..49259b0050 100644 --- a/gst/videobox/gstvideoboxorc-dist.c +++ b/gst/videobox/gstvideoboxorc-dist.c @@ -47,23 +47,14 @@ typedef unsigned long orc_uint64; #endif #endif typedef union -{ - orc_int16 i; - orc_int8 x2[2]; -} orc_union16; -typedef union { orc_int32 i; float f; - orc_int16 x2[2]; - orc_int8 x4[4]; } orc_union32; typedef union { orc_int64 i; double f; - orc_int32 x2[2]; - orc_int16 x4[4]; } orc_union64; #endif @@ -96,17 +87,6 @@ void orc_splat_u32 (guint32 * d1, int p1, int n); #define ORC_SWAP_W(x) ((((x)&0xff)<<8) | (((x)&0xff00)>>8)) #define ORC_SWAP_L(x) ((((x)&0xff)<<24) | (((x)&0xff00)<<8) | (((x)&0xff0000)>>8) | (((x)&0xff000000)>>24)) #define ORC_PTR_OFFSET(ptr,offset) ((void *)(((unsigned char *)(ptr)) + (offset))) -#define ORC_MIN_NORMAL (1.1754944909521339405e-38) -#define ORC_DENORMAL(x) (((x) > -ORC_MIN_NORMAL && (x) < ORC_MIN_NORMAL) ? ((x)<0 ? (-0.0f) : (0.0f)) : (x)) -#define ORC_MINF(a,b) (isnan(a) ? a : isnan(b) ? b : ((a)<(b)) ? (a) : (b)) -#define ORC_MAXF(a,b) (isnan(a) ? a : isnan(b) ? b : ((a)>(b)) ? (a) : (b)) -#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L -#define ORC_RESTRICT restrict -#elif defined(__GNUC__) && __GNUC__ >= 4 -#define ORC_RESTRICT __restrict__ -#else -#define ORC_RESTRICT -#endif /* end Orc C target preamble */ @@ -117,42 +97,38 @@ void orc_splat_u32 (guint32 * d1, int p1, int n) { int i; - orc_union32 *ORC_RESTRICT ptr0; - orc_union32 var32; - orc_union32 var33; + orc_union32 var0; + orc_union32 *ptr0; + const int var24 = p1; ptr0 = (orc_union32 *) d1; for (i = 0; i < n; i++) { - /* 0: loadpl */ - var32.i = p1; - /* 1: copyl */ - var33.i = var32.i; - /* 2: storel */ - ptr0[i] = var33; + /* 0: copyl */ + var0.i = var24; + *ptr0 = var0; + ptr0++; } } #else static void -_backup_orc_splat_u32 (OrcExecutor * ORC_RESTRICT ex) +_backup_orc_splat_u32 (OrcExecutor * ex) { int i; int n = ex->n; - orc_union32 *ORC_RESTRICT ptr0; - orc_union32 var32; - orc_union32 var33; + orc_union32 var0; + orc_union32 *ptr0; + const int var24 = ex->params[24]; ptr0 = (orc_union32 *) ex->arrays[0]; for (i = 0; i < n; i++) { - /* 0: loadpl */ - var32.i = ex->params[24]; - /* 1: copyl */ - var33.i = var32.i; - /* 2: storel */ - ptr0[i] = var33; + /* 0: copyl */ + var0.i = var24; + *ptr0 = var0; + ptr0++; } } @@ -176,8 +152,7 @@ orc_splat_u32 (guint32 * d1, int p1, int n) orc_program_add_destination (p, 4, "d1"); orc_program_add_parameter (p, 4, "p1"); - orc_program_append_2 (p, "copyl", 0, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append (p, "copyl", ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1); result = orc_program_compile (p); } diff --git a/gst/videobox/gstvideoboxorc-dist.h b/gst/videobox/gstvideoboxorc-dist.h index 596914c1bd..ab1fefd2fd 100644 --- a/gst/videobox/gstvideoboxorc-dist.h +++ b/gst/videobox/gstvideoboxorc-dist.h @@ -10,8 +10,6 @@ extern "C" { #endif - - #ifndef _ORC_INTEGER_TYPEDEFS_ #define _ORC_INTEGER_TYPEDEFS_ #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L @@ -49,10 +47,10 @@ typedef long orc_int64; typedef unsigned long orc_uint64; #endif #endif -typedef union { orc_int16 i; orc_int8 x2[2]; } orc_union16; -typedef union { orc_int32 i; float f; orc_int16 x2[2]; orc_int8 x4[4]; } orc_union32; -typedef union { orc_int64 i; double f; orc_int32 x2[2]; orc_int16 x4[4]; } orc_union64; +typedef union { orc_int32 i; float f; } orc_union32; +typedef union { orc_int64 i; double f; } orc_union64; #endif + void orc_splat_u32 (guint32 * d1, int p1, int n); #ifdef __cplusplus diff --git a/gst/videomixer/blendorc-dist.c b/gst/videomixer/blendorc-dist.c index 1a244a66e5..a22464e578 100644 --- a/gst/videomixer/blendorc-dist.c +++ b/gst/videomixer/blendorc-dist.c @@ -47,23 +47,14 @@ typedef unsigned long orc_uint64; #endif #endif typedef union -{ - orc_int16 i; - orc_int8 x2[2]; -} orc_union16; -typedef union { orc_int32 i; float f; - orc_int16 x2[2]; - orc_int8 x4[4]; } orc_union32; typedef union { orc_int64 i; double f; - orc_int32 x2[2]; - orc_int16 x4[4]; } orc_union64; #endif @@ -99,17 +90,6 @@ void orc_blend_u8 (guint8 * d1, int d1_stride, const guint8 * s1, int s1_stride, #define ORC_SWAP_W(x) ((((x)&0xff)<<8) | (((x)&0xff00)>>8)) #define ORC_SWAP_L(x) ((((x)&0xff)<<24) | (((x)&0xff00)<<8) | (((x)&0xff0000)>>8) | (((x)&0xff000000)>>24)) #define ORC_PTR_OFFSET(ptr,offset) ((void *)(((unsigned char *)(ptr)) + (offset))) -#define ORC_MIN_NORMAL (1.1754944909521339405e-38) -#define ORC_DENORMAL(x) (((x) > -ORC_MIN_NORMAL && (x) < ORC_MIN_NORMAL) ? ((x)<0 ? (-0.0f) : (0.0f)) : (x)) -#define ORC_MINF(a,b) (isnan(a) ? a : isnan(b) ? b : ((a)<(b)) ? (a) : (b)) -#define ORC_MAXF(a,b) (isnan(a) ? a : isnan(b) ? b : ((a)>(b)) ? (a) : (b)) -#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L -#define ORC_RESTRICT restrict -#elif defined(__GNUC__) && __GNUC__ >= 4 -#define ORC_RESTRICT __restrict__ -#else -#define ORC_RESTRICT -#endif /* end Orc C target preamble */ @@ -120,42 +100,38 @@ void orc_splat_u32 (guint32 * d1, int p1, int n) { int i; - orc_union32 *ORC_RESTRICT ptr0; - orc_union32 var32; - orc_union32 var33; + orc_union32 var0; + orc_union32 *ptr0; + const int var24 = p1; ptr0 = (orc_union32 *) d1; for (i = 0; i < n; i++) { - /* 0: loadpl */ - var32.i = p1; - /* 1: copyl */ - var33.i = var32.i; - /* 2: storel */ - ptr0[i] = var33; + /* 0: copyl */ + var0.i = var24; + *ptr0 = var0; + ptr0++; } } #else static void -_backup_orc_splat_u32 (OrcExecutor * ORC_RESTRICT ex) +_backup_orc_splat_u32 (OrcExecutor * ex) { int i; int n = ex->n; - orc_union32 *ORC_RESTRICT ptr0; - orc_union32 var32; - orc_union32 var33; + orc_union32 var0; + orc_union32 *ptr0; + const int var24 = ex->params[24]; ptr0 = (orc_union32 *) ex->arrays[0]; for (i = 0; i < n; i++) { - /* 0: loadpl */ - var32.i = ex->params[24]; - /* 1: copyl */ - var33.i = var32.i; - /* 2: storel */ - ptr0[i] = var33; + /* 0: copyl */ + var0.i = var24; + *ptr0 = var0; + ptr0++; } } @@ -179,8 +155,7 @@ orc_splat_u32 (guint32 * d1, int p1, int n) orc_program_add_destination (p, 4, "d1"); orc_program_add_parameter (p, 4, "p1"); - orc_program_append_2 (p, "copyl", 0, ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append (p, "copyl", ORC_VAR_D1, ORC_VAR_P1, ORC_VAR_D1); result = orc_program_compile (p); } @@ -205,46 +180,46 @@ void orc_memcpy_u32 (guint32 * d1, const guint32 * s1, int n) { int i; - orc_union32 *ORC_RESTRICT ptr0; - const orc_union32 *ORC_RESTRICT ptr4; - orc_union32 var32; - orc_union32 var33; + orc_union32 var0; + orc_union32 *ptr0; + orc_union32 var4; + const orc_union32 *ptr4; ptr0 = (orc_union32 *) d1; ptr4 = (orc_union32 *) s1; for (i = 0; i < n; i++) { - /* 0: loadl */ - var32 = ptr4[i]; - /* 1: copyl */ - var33.i = var32.i; - /* 2: storel */ - ptr0[i] = var33; + var4 = *ptr4; + ptr4++; + /* 0: copyl */ + var0.i = var4.i; + *ptr0 = var0; + ptr0++; } } #else static void -_backup_orc_memcpy_u32 (OrcExecutor * ORC_RESTRICT ex) +_backup_orc_memcpy_u32 (OrcExecutor * ex) { int i; int n = ex->n; - orc_union32 *ORC_RESTRICT ptr0; - const orc_union32 *ORC_RESTRICT ptr4; - orc_union32 var32; - orc_union32 var33; + orc_union32 var0; + orc_union32 *ptr0; + orc_union32 var4; + const orc_union32 *ptr4; ptr0 = (orc_union32 *) ex->arrays[0]; ptr4 = (orc_union32 *) ex->arrays[4]; for (i = 0; i < n; i++) { - /* 0: loadl */ - var32 = ptr4[i]; - /* 1: copyl */ - var33.i = var32.i; - /* 2: storel */ - ptr0[i] = var33; + var4 = *ptr4; + ptr4++; + /* 0: copyl */ + var0.i = var4.i; + *ptr0 = var0; + ptr0++; } } @@ -268,8 +243,7 @@ orc_memcpy_u32 (guint32 * d1, const guint32 * s1, int n) orc_program_add_destination (p, 4, "d1"); orc_program_add_source (p, 4, "s1"); - orc_program_append_2 (p, "copyl", 0, ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); + orc_program_append (p, "copyl", ORC_VAR_D1, ORC_VAR_S1, ORC_VAR_D1); result = orc_program_compile (p); } @@ -296,49 +270,46 @@ orc_blend_u8 (guint8 * d1, int d1_stride, const guint8 * s1, int s1_stride, { int i; int j; - orc_int8 *ORC_RESTRICT ptr0; - const orc_int8 *ORC_RESTRICT ptr4; - orc_int8 var34; - orc_int8 var35; - orc_union16 var36; - orc_int8 var37; - orc_union16 var38; - orc_union16 var39; - orc_union16 var40; - orc_union16 var41; - orc_union16 var42; - orc_union16 var43; - orc_union16 var44; + orc_int8 var0; + orc_int8 *ptr0; + orc_int8 var4; + const orc_int8 *ptr4; + const orc_int8 var16 = 8; + const int var24 = p1; + orc_int16 var32; + orc_int16 var33; + orc_int16 var34; + orc_int16 var35; + orc_int16 var36; + orc_int16 var37; + orc_int16 var38; for (j = 0; j < m; j++) { ptr0 = ORC_PTR_OFFSET (d1, d1_stride * j); ptr4 = ORC_PTR_OFFSET (s1, s1_stride * j); for (i = 0; i < n; i++) { - /* 0: loadb */ - var34 = ptr0[i]; + var0 = *ptr0; + var4 = *ptr4; + ptr4++; + /* 0: convubw */ + var32 = (orc_uint8) var0; /* 1: convubw */ - var38.i = (orc_uint8) var34; - /* 2: loadb */ - var35 = ptr4[i]; - /* 3: convubw */ - var39.i = (orc_uint8) var35; - /* 4: subw */ - var40.i = var39.i - var38.i; - /* 5: loadpw */ - var36.i = p1; - /* 6: mullw */ - var41.i = (var40.i * var36.i) & 0xffff; - /* 7: shlw */ - var42.i = var38.i << 8; - /* 8: addw */ - var43.i = var42.i + var41.i; - /* 9: shruw */ - var44.i = ((orc_uint16) var43.i) >> 8; - /* 10: convsuswb */ - var37 = ORC_CLAMP_UB (var44.i); - /* 11: storeb */ - ptr0[i] = var37; + var33 = (orc_uint8) var4; + /* 2: subw */ + var34 = var33 - var32; + /* 3: mullw */ + var35 = (var34 * var24) & 0xffff; + /* 4: shlw */ + var36 = var32 << var16; + /* 5: addw */ + var37 = var36 + var35; + /* 6: shruw */ + var38 = ((orc_uint16) var37) >> var16; + /* 7: convsuswb */ + var0 = ORC_CLAMP_UB (var38); + *ptr0 = var0; + ptr0++; } } @@ -346,55 +317,52 @@ orc_blend_u8 (guint8 * d1, int d1_stride, const guint8 * s1, int s1_stride, #else static void -_backup_orc_blend_u8 (OrcExecutor * ORC_RESTRICT ex) +_backup_orc_blend_u8 (OrcExecutor * ex) { int i; int j; int n = ex->n; int m = ex->params[ORC_VAR_A1]; - orc_int8 *ORC_RESTRICT ptr0; - const orc_int8 *ORC_RESTRICT ptr4; - orc_int8 var34; - orc_int8 var35; - orc_union16 var36; - orc_int8 var37; - orc_union16 var38; - orc_union16 var39; - orc_union16 var40; - orc_union16 var41; - orc_union16 var42; - orc_union16 var43; - orc_union16 var44; + orc_int8 var0; + orc_int8 *ptr0; + orc_int8 var4; + const orc_int8 *ptr4; + const orc_int8 var16 = 8; + const int var24 = ex->params[24]; + orc_int16 var32; + orc_int16 var33; + orc_int16 var34; + orc_int16 var35; + orc_int16 var36; + orc_int16 var37; + orc_int16 var38; for (j = 0; j < m; j++) { ptr0 = ORC_PTR_OFFSET (ex->arrays[0], ex->params[0] * j); ptr4 = ORC_PTR_OFFSET (ex->arrays[4], ex->params[4] * j); for (i = 0; i < n; i++) { - /* 0: loadb */ - var34 = ptr0[i]; + var0 = *ptr0; + var4 = *ptr4; + ptr4++; + /* 0: convubw */ + var32 = (orc_uint8) var0; /* 1: convubw */ - var38.i = (orc_uint8) var34; - /* 2: loadb */ - var35 = ptr4[i]; - /* 3: convubw */ - var39.i = (orc_uint8) var35; - /* 4: subw */ - var40.i = var39.i - var38.i; - /* 5: loadpw */ - var36.i = ex->params[24]; - /* 6: mullw */ - var41.i = (var40.i * var36.i) & 0xffff; - /* 7: shlw */ - var42.i = var38.i << 8; - /* 8: addw */ - var43.i = var42.i + var41.i; - /* 9: shruw */ - var44.i = ((orc_uint16) var43.i) >> 8; - /* 10: convsuswb */ - var37 = ORC_CLAMP_UB (var44.i); - /* 11: storeb */ - ptr0[i] = var37; + var33 = (orc_uint8) var4; + /* 2: subw */ + var34 = var33 - var32; + /* 3: mullw */ + var35 = (var34 * var24) & 0xffff; + /* 4: shlw */ + var36 = var32 << var16; + /* 5: addw */ + var37 = var36 + var35; + /* 6: shruw */ + var38 = ((orc_uint16) var37) >> var16; + /* 7: convsuswb */ + var0 = ORC_CLAMP_UB (var38); + *ptr0 = var0; + ptr0++; } } @@ -420,27 +388,19 @@ orc_blend_u8 (guint8 * d1, int d1_stride, const guint8 * s1, int s1_stride, orc_program_set_backup_function (p, _backup_orc_blend_u8); orc_program_add_destination (p, 1, "d1"); orc_program_add_source (p, 1, "s1"); - orc_program_add_constant (p, 1, 0x00000008, "c1"); + orc_program_add_constant (p, 1, 8, "c1"); orc_program_add_parameter (p, 2, "p1"); orc_program_add_temporary (p, 2, "t1"); orc_program_add_temporary (p, 2, "t2"); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "convubw", 0, ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1, - ORC_VAR_D1); - orc_program_append_2 (p, "subw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1, - ORC_VAR_D1); - orc_program_append_2 (p, "mullw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P1, - ORC_VAR_D1); - orc_program_append_2 (p, "shlw", 0, ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "addw", 0, ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_T2, - ORC_VAR_D1); - orc_program_append_2 (p, "shruw", 0, ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1, - ORC_VAR_D1); - orc_program_append_2 (p, "convsuswb", 0, ORC_VAR_D1, ORC_VAR_T2, - ORC_VAR_D1, ORC_VAR_D1); + orc_program_append (p, "convubw", ORC_VAR_T1, ORC_VAR_D1, ORC_VAR_D1); + orc_program_append (p, "convubw", ORC_VAR_T2, ORC_VAR_S1, ORC_VAR_D1); + orc_program_append (p, "subw", ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_T1); + orc_program_append (p, "mullw", ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_P1); + orc_program_append (p, "shlw", ORC_VAR_T1, ORC_VAR_T1, ORC_VAR_C1); + orc_program_append (p, "addw", ORC_VAR_T2, ORC_VAR_T1, ORC_VAR_T2); + orc_program_append (p, "shruw", ORC_VAR_T2, ORC_VAR_T2, ORC_VAR_C1); + orc_program_append (p, "convsuswb", ORC_VAR_D1, ORC_VAR_T2, ORC_VAR_D1); result = orc_program_compile (p); } diff --git a/gst/videomixer/blendorc-dist.h b/gst/videomixer/blendorc-dist.h index bb87cdb2f5..4ddb04c7de 100644 --- a/gst/videomixer/blendorc-dist.h +++ b/gst/videomixer/blendorc-dist.h @@ -10,8 +10,6 @@ extern "C" { #endif - - #ifndef _ORC_INTEGER_TYPEDEFS_ #define _ORC_INTEGER_TYPEDEFS_ #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L @@ -49,10 +47,10 @@ typedef long orc_int64; typedef unsigned long orc_uint64; #endif #endif -typedef union { orc_int16 i; orc_int8 x2[2]; } orc_union16; -typedef union { orc_int32 i; float f; orc_int16 x2[2]; orc_int8 x4[4]; } orc_union32; -typedef union { orc_int64 i; double f; orc_int32 x2[2]; orc_int16 x4[4]; } orc_union64; +typedef union { orc_int32 i; float f; } orc_union32; +typedef union { orc_int64 i; double f; } orc_union64; #endif + void orc_splat_u32 (guint32 * d1, int p1, int n); void orc_memcpy_u32 (guint32 * d1, const guint32 * s1, int n); void orc_blend_u8 (guint8 * d1, int d1_stride, const guint8 * s1, int s1_stride, int p1, int n, int m); diff --git a/win32/common/config.h b/win32/common/config.h index 364c836aa8..f88e039ba3 100644 --- a/win32/common/config.h +++ b/win32/common/config.h @@ -43,7 +43,7 @@ #define GST_LICENSE "LGPL" /* package name in plugins */ -#define GST_PACKAGE_NAME "GStreamer Good Plug-ins prerelease" +#define GST_PACKAGE_NAME "GStreamer Good Plug-ins source release" /* package origin */ #define GST_PACKAGE_ORIGIN "Unknown package origin" @@ -377,7 +377,7 @@ #define PACKAGE_NAME "GStreamer Good Plug-ins" /* Define to the full name and version of this package. */ -#define PACKAGE_STRING "GStreamer Good Plug-ins 0.10.24.3" +#define PACKAGE_STRING "GStreamer Good Plug-ins 0.10.25" /* Define to the one symbol short name of this package. */ #define PACKAGE_TARNAME "gst-plugins-good" @@ -386,7 +386,7 @@ #undef PACKAGE_URL /* Define to the version of this package. */ -#define PACKAGE_VERSION "0.10.24.3" +#define PACKAGE_VERSION "0.10.25" /* directory where plugins are located */ #ifdef _DEBUG @@ -417,7 +417,7 @@ #undef STDC_HEADERS /* Version number of package */ -#define VERSION "0.10.24.3" +#define VERSION "0.10.25" /* old wavpack API */ #undef WAVPACK_OLD_API