platform/upstream/gst-plugins-base.git
13 years agocheck/vorbistag: Convert to new probe API
Edward Hervey [Fri, 3 Jun 2011 17:10:33 +0000 (19:10 +0200)]
check/vorbistag: Convert to new probe API

13 years agocheck/vorbisenc: Convert to new probe API
Edward Hervey [Fri, 3 Jun 2011 17:07:44 +0000 (19:07 +0200)]
check/vorbisenc: Convert to new probe API

13 years agocheck/oggmux: Convert to new probe API
Edward Hervey [Fri, 3 Jun 2011 17:00:23 +0000 (19:00 +0200)]
check/oggmux: Convert to new probe API

13 years agocheck/playbin2: Update for caps and structure API changes
Edward Hervey [Fri, 3 Jun 2011 13:51:08 +0000 (15:51 +0200)]
check/playbin2: Update for caps and structure API changes

13 years agocheck: Use new gst_event_new_segment() API
Edward Hervey [Fri, 3 Jun 2011 10:19:49 +0000 (12:19 +0200)]
check: Use new gst_event_new_segment() API

13 years agoexamples: Link against proper libgstaudio
Edward Hervey [Fri, 3 Jun 2011 09:48:43 +0000 (11:48 +0200)]
examples: Link against proper libgstaudio

It was previously attempting to link against the non-local one.

13 years agooggmux: Use the GstPad (and not the GstOggPadData for GstPad functions
Edward Hervey [Fri, 3 Jun 2011 17:00:39 +0000 (19:00 +0200)]
oggmux: Use the GstPad (and not the GstOggPadData for GstPad functions

For those willing, renaming that 'pad' variable to something more obvious
would be nice to avoid such bugs...

13 years agothoeraenc: port to 0.11
Wim Taymans [Fri, 3 Jun 2011 11:35:49 +0000 (13:35 +0200)]
thoeraenc: port to 0.11

13 years agoMerge branch 'master' into 0.11
Wim Taymans [Fri, 3 Jun 2011 11:31:42 +0000 (13:31 +0200)]
Merge branch 'master' into 0.11

Conflicts:
ext/theora/gsttheoraenc.c

13 years agotypefind: fix after merge
Wim Taymans [Fri, 3 Jun 2011 11:16:09 +0000 (13:16 +0200)]
typefind: fix after merge

13 years agoplayback: fix compilation after ghostpad setcaps removal
Wim Taymans [Fri, 3 Jun 2011 11:12:31 +0000 (13:12 +0200)]
playback: fix compilation after ghostpad setcaps removal

13 years agotheora: use fixed src cap pads
Luis de Bethencourt [Thu, 2 Jun 2011 17:08:41 +0000 (19:08 +0200)]
theora: use fixed src cap pads

13 years agotheora: set the width/height/par on the srcpad caps
Luis de Bethencourt [Thu, 2 Jun 2011 16:57:05 +0000 (18:57 +0200)]
theora: set the width/height/par on the srcpad caps

13 years agotheora: get sink caps info from downstream element pad
Luis de Bethencourt [Thu, 2 Jun 2011 15:29:53 +0000 (17:29 +0200)]
theora: get sink caps info from downstream element pad

https://bugzilla.gnome.org/show_bug.cgi?id=651564

13 years agoMerge branch 'master' into 0.11
Wim Taymans [Thu, 2 Jun 2011 17:26:33 +0000 (19:26 +0200)]
Merge branch 'master' into 0.11

13 years agobasertp: use caps event instead of setcaps function
Wim Taymans [Thu, 2 Jun 2011 17:21:24 +0000 (19:21 +0200)]
basertp: use caps event instead of setcaps function

Use the caps event instead of the setcaps function to configure caps.
Use a default event handler for the base rtp payloader instead of the awkward
way of handling the return value.

13 years agopbutils: add description for wbmp images.
Patrick McCarty [Fri, 27 May 2011 21:41:39 +0000 (14:41 -0700)]
pbutils: add description for wbmp images.

https://bugzilla.gnome.org/show_bug.cgi?id=651294

13 years agotypefinding: add typefinder for WAP WBMP bitmaps
Tim-Philipp Müller [Wed, 1 Jun 2011 23:55:41 +0000 (00:55 +0100)]
typefinding: add typefinder for WAP WBMP bitmaps

https://bugzilla.gnome.org/show_bug.cgi?id=651294

13 years agovideo: fix header after merge
Wim Taymans [Thu, 2 Jun 2011 10:21:28 +0000 (12:21 +0200)]
video: fix header after merge

13 years agoMerge branch 'master' into 0.11
Wim Taymans [Thu, 2 Jun 2011 10:18:13 +0000 (12:18 +0200)]
Merge branch 'master' into 0.11

Conflicts:
gst-libs/gst/video/video.h
gst/playback/gstplaysinkaudioconvert.c
gst/playback/gstplaysinkvideoconvert.c
tests/check/libs/rtp.c

13 years agoplaysinconvert: clear the probe id when removing
Wim Taymans [Thu, 2 Jun 2011 10:12:04 +0000 (12:12 +0200)]
playsinconvert: clear the probe id when removing

13 years agoplaysink: refactor block/unblock code a little
Wim Taymans [Thu, 2 Jun 2011 10:08:22 +0000 (12:08 +0200)]
playsink: refactor block/unblock code a little

13 years agoplaysink: Fix deadlock in the audio/video converter bins when linking fails
Sebastian Dröge [Thu, 2 Jun 2011 09:53:10 +0000 (11:53 +0200)]
playsink: Fix deadlock in the audio/video converter bins when linking fails

13 years agoprobes: port to new API for blocking and probes
Wim Taymans [Wed, 1 Jun 2011 17:34:54 +0000 (19:34 +0200)]
probes: port to new API for blocking and probes

13 years agocheck: ... and don't forget to add the new arm header
Edward Hervey [Wed, 1 Jun 2011 15:31:35 +0000 (17:31 +0200)]
check: ... and don't forget to add the new arm header

Forgot it in my previous commit

13 years agolibsabi: Add structure sizes for arm
Edward Hervey [Wed, 1 Jun 2011 15:24:30 +0000 (17:24 +0200)]
libsabi: Add structure sizes for arm

13 years agofft: s/M_PI/G_PI/ for MSVC
David Schleef [Wed, 1 Jun 2011 02:57:57 +0000 (19:57 -0700)]
fft: s/M_PI/G_PI/ for MSVC

13 years agovolume: Fix handling of volume>=4.0 for 8 and 16 bit integer formats
Sebastian Dröge [Tue, 31 May 2011 09:05:03 +0000 (11:05 +0200)]
volume: Fix handling of volume>=4.0 for 8 and 16 bit integer formats

Also add a unit test for this. Previously volumes bigger than 4.0
would have resulted in overflows in the fixed point processing.

Fixes bug #649642.

13 years agoplaybin: fixed for new pad block API
Wim Taymans [Mon, 30 May 2011 16:36:14 +0000 (18:36 +0200)]
playbin: fixed for new pad block API

13 years agooggdemux: activate pad before pushing things
Wim Taymans [Mon, 30 May 2011 15:14:48 +0000 (17:14 +0200)]
oggdemux: activate pad before pushing things

Activate the pad before pushing things on it or else we get errors.

13 years agotests: fix some more unused-but-set-variable warnings with gcc 4.6
Tim-Philipp Müller [Sun, 29 May 2011 12:32:04 +0000 (13:32 +0100)]
tests: fix some more unused-but-set-variable warnings with gcc 4.6

13 years agowin32: update .def file for new API
Tim-Philipp Müller [Sat, 28 May 2011 15:14:23 +0000 (16:14 +0100)]
win32: update .def file for new API

13 years agoIgnore new playbin2-compress test binary
Tim-Philipp Müller [Sat, 28 May 2011 11:39:06 +0000 (12:39 +0100)]
Ignore new playbin2-compress test binary

And add old testchannels binary to CRUFT_FILES.

13 years agovideo: sprinkle some G_GNUC_CONST
Tim-Philipp Müller [Fri, 27 May 2011 22:31:27 +0000 (23:31 +0100)]
video: sprinkle some G_GNUC_CONST

Mark functions that have no effect besides their return value and
only inspect their input arguments with G_GNUC_CONST. (We just
ignore the g_return_val_if_fail() guards for this)

13 years agovideo: clean up header file
Tim-Philipp Müller [Fri, 27 May 2011 22:25:00 +0000 (23:25 +0100)]
video: clean up header file

Sprinkle some spaces and newlines here and there.

13 years agovideoscale: Optimize transform_caps()
Sebastian Dröge [Fri, 27 May 2011 12:30:19 +0000 (14:30 +0200)]
videoscale: Optimize transform_caps()

If the second and next caps structures are a subset of the already existing
transformed caps we can safely skip them because we would transform them to
the same caps again.

13 years agoffmpegcolorspace: Optimize transform_caps()
Sebastian Dröge [Fri, 27 May 2011 12:28:46 +0000 (14:28 +0200)]
ffmpegcolorspace: Optimize transform_caps()

If the second and next caps structures are a subset of the already existing
transformed caps we can safely skip them because we would transform them to
the same caps again.

13 years agoaudioresample: Optimize transform_caps()
Sebastian Dröge [Fri, 27 May 2011 12:20:08 +0000 (14:20 +0200)]
audioresample: Optimize transform_caps()

If the second and next caps structures are a subset of the already existing
transformed caps we can safely skip them because we would transform them to
the same caps again.

13 years agoaudioconvert: Use new gst_caps_is_subset_structure() API
Sebastian Dröge [Fri, 27 May 2011 12:10:50 +0000 (14:10 +0200)]
audioconvert: Use new gst_caps_is_subset_structure() API

This prevents one copy of every structure and creating a new caps
instance.

13 years agoaudio: move testchannels example to 'tests/examples' dir
Stefan Kost [Fri, 27 May 2011 12:03:19 +0000 (15:03 +0300)]
audio: move testchannels example to 'tests/examples' dir

Also fix it up a little to not include 'c' file but link to the libs instead.

13 years agoMerge branch 'master' into 0.11
Sebastian Dröge [Fri, 27 May 2011 11:58:41 +0000 (13:58 +0200)]
Merge branch 'master' into 0.11

13 years agoaudioconvert: Optimize transform_caps()
Sebastian Dröge [Fri, 27 May 2011 11:13:42 +0000 (13:13 +0200)]
audioconvert: Optimize transform_caps()

If the second and next caps structures are a subset of the already existing
transformed caps we can safely skip them because we would transform them to
the same caps again.

This makes gst_pad_get_caps() on an audiotestsrc ! audioconvert !
audioconvert ! audioconvert ! fakesink pipeline about 1.7 times faster.

13 years agoaudioconvert: Fix audioconvert unit test to work again
Sebastian Dröge [Fri, 27 May 2011 10:13:32 +0000 (12:13 +0200)]
audioconvert: Fix audioconvert unit test to work again

13 years agogst: Update for the GstBaseTransform::transform_caps() changes
Sebastian Dröge [Fri, 27 May 2011 10:13:14 +0000 (12:13 +0200)]
gst: Update for the GstBaseTransform::transform_caps() changes

13 years agocode-utile: fix level descriptions for fgs
Stefan Kost [Fri, 27 May 2011 08:39:21 +0000 (11:39 +0300)]
code-utile: fix level descriptions for fgs

fgs levels range from 8-13 and are mapped to 0-5.

13 years agocodec-utils: fix mpeg4 level verification
Stefan Kost [Wed, 25 May 2011 11:38:21 +0000 (14:38 +0300)]
codec-utils: fix mpeg4 level verification

The current condition would never be true. As levels<6 are asp and levels>7 and
<14 are fgs, we should return NULL for cases 6,7,14,15.

13 years ago-base: change for changed set_blocked API
Wim Taymans [Thu, 26 May 2011 14:08:44 +0000 (16:08 +0200)]
-base: change for changed set_blocked API

13 years agoMerge branch 'master' into 0.11
Sebastian Dröge [Thu, 26 May 2011 11:47:24 +0000 (13:47 +0200)]
Merge branch 'master' into 0.11

13 years agoxvimagesink: Fallback to non-XShm mode if allocating the XShm image failed
Sebastian Dröge [Thu, 26 May 2011 10:33:08 +0000 (12:33 +0200)]
xvimagesink: Fallback to non-XShm mode if allocating the XShm image failed

Fixes bug #630442.

13 years agoximagesink: Fallback to non-XShm mode if allocating the XShm image failed
Sebastian Dröge [Thu, 26 May 2011 10:30:31 +0000 (12:30 +0200)]
ximagesink: Fallback to non-XShm mode if allocating the XShm image failed

Fixes bug #630442.

13 years agoplaybin2: Let the input-selectors sync all streams to the running time
Sebastian Dröge [Thu, 26 May 2011 09:41:50 +0000 (11:41 +0200)]
playbin2: Let the input-selectors sync all streams to the running time

This is especially needed when switching between a non-sparse and sparse
video stream, see bug #537382. It also lowers the time needed for switching
between streams a bit.

13 years agotextoverlay: added 'outline-color' parameter to control whether text gets a shadow
Lane Brooks [Thu, 20 Jan 2011 07:52:50 +0000 (00:52 -0700)]
textoverlay: added 'outline-color' parameter to control whether text gets a shadow

13 years agotextoverlay: added 'shadow' option to control whether text gets a shadow
Lane Brooks [Thu, 20 Jan 2011 07:42:39 +0000 (00:42 -0700)]
textoverlay: added 'shadow' option to control whether text gets a shadow

13 years agotextrender: Correctly negotiate with downstream instead of just using random caps
Jindrich Makovicka [Thu, 26 May 2011 08:48:05 +0000 (10:48 +0200)]
textrender: Correctly negotiate with downstream instead of just using random caps

Fixes bug #638897.

13 years agotextrender: Add bound checks to not write outside the image area
Jindrich Makovicka [Thu, 26 May 2011 08:43:51 +0000 (10:43 +0200)]
textrender: Add bound checks to not write outside the image area

13 years agotextrender: Prevent double unref of caps if the caps can't be set on the srcpad
Jindrich Makovicka [Thu, 26 May 2011 08:42:46 +0000 (10:42 +0200)]
textrender: Prevent double unref of caps if the caps can't be set on the srcpad

13 years agognomevfssrc: Keep track of interruptions during read with a flag
Sebastian Dröge [Thu, 26 May 2011 08:31:11 +0000 (10:31 +0200)]
gnomevfssrc: Keep track of interruptions during read with a flag

13 years agognomevfssrc: Add support for cancelling the read operations
American Dynamics [Fri, 3 Sep 2010 13:11:30 +0000 (09:11 -0400)]
gnomevfssrc: Add support for cancelling the read operations

This allows the state change from PAUSED to READY to be faster.

Fixes bug #628337.

13 years agoximagesink: Remove g_assert from interface query
Sreerenj Balachandran [Wed, 25 May 2011 11:14:46 +0000 (14:14 +0300)]
ximagesink: Remove g_assert from interface query

13 years agoxvimagesink: Remove the g_assert from interface query
Sreerenj Balachandran [Wed, 25 May 2011 11:08:43 +0000 (14:08 +0300)]
xvimagesink: Remove the g_assert from interface query

13 years agoaudiotestsrc: add blue and violet noise by using spectral inversion
Stefan Kost [Wed, 25 May 2011 21:17:40 +0000 (00:17 +0300)]
audiotestsrc: add blue and violet noise by using spectral inversion

Add blue and violet noise by spectral inversion of pink and red noise.
Fixes #649969

13 years agoaudiotestsrc: add red (brownian) noise generator
Stefan Kost [Wed, 25 May 2011 20:40:26 +0000 (23:40 +0300)]
audiotestsrc: add red (brownian) noise generator

Add another noise generator which produces a quite dark noise color.

Fixes parts of #649969.

13 years agoseek: set selected/default audio/video sinks on playbin and playbin2
Vladimir Eremeev [Mon, 27 Sep 2010 09:32:31 +0000 (13:32 +0400)]
seek: set selected/default audio/video sinks on playbin and playbin2

https://bugzilla.gnome.org/show_bug.cgi?id=630322

13 years agoseek: add --audiosink and --videosink command line options
Tim-Philipp Müller [Wed, 25 May 2011 18:03:44 +0000 (19:03 +0100)]
seek: add --audiosink and --videosink command line options

13 years agoseek: use the right GDK defines to differentiate between the backends
Tim-Philipp Müller [Wed, 25 May 2011 17:50:34 +0000 (18:50 +0100)]
seek: use the right GDK defines to differentiate between the backends

13 years agoseek: use gst_filename_to_uri() to convert a filename to a uri
Tim-Philipp Müller [Wed, 25 May 2011 17:45:33 +0000 (18:45 +0100)]
seek: use gst_filename_to_uri() to convert a filename to a uri

13 years agoseek: make seek example work in win32
Vladimir Eremeev [Mon, 27 Sep 2010 08:46:54 +0000 (12:46 +0400)]
seek: make seek example work in win32

https://bugzilla.gnome.org/show_bug.cgi?id=630322

13 years agoconfigure: update GLib requirement to >= 2.24
Tim-Philipp Müller [Wed, 25 May 2011 15:08:54 +0000 (16:08 +0100)]
configure: update GLib requirement to >= 2.24

Same as core (make implicit requirement explicit).
http://gstreamer.freedesktop.org/wiki/ReleasePlanning/GLibRequirement

13 years agotheoraenc: remove bogus <0 check for unsigned var
Stefan Kost [Wed, 25 May 2011 12:24:33 +0000 (15:24 +0300)]
theoraenc: remove bogus <0 check for unsigned var

bytes_written is a gsize which is unsigned and thus never < 0.

13 years agotheoraenc: fix variable type for bytes_consumed
Stefan Kost [Wed, 25 May 2011 12:23:13 +0000 (15:23 +0300)]
theoraenc: fix variable type for bytes_consumed

th_encode_ctl() returns an int. Using a gsize result in bogus <0 checks.

13 years agoriff: remove the g_return_if_fail as we test it below
Stefan Kost [Wed, 25 May 2011 12:04:20 +0000 (15:04 +0300)]
riff: remove the g_return_if_fail as we test it below

We don't want to return without setting taglist=NULL if asserts are on and with
setting taglist=NULL otherwise.

13 years agovolume: use a flag for 'mute' using the controller
Stefan Kost [Wed, 25 May 2011 11:28:18 +0000 (14:28 +0300)]
volume: use a flag for 'mute' using the controller

Previously we checked mute_csource to determine wheter we need to premultiply
volumes and mute values. That fails as we unrefs mute_csource and set it to
NULL after. Use an extra flag instead.

13 years agoexiftag: reflow the code
Stefan Kost [Wed, 25 May 2011 11:12:50 +0000 (14:12 +0300)]
exiftag: reflow the code

Move the warning on unsupported units to the swicth-case. Move fetching the
pending tags down to where we use them.

13 years agoexiftag: set value=1 if we found the token
Stefan Kost [Wed, 25 May 2011 10:59:57 +0000 (13:59 +0300)]
exiftag: set value=1 if we found the token

Otherwise we never write the tag. This would also be consistent with the code in
deserialize_scene_type().

13 years agoxvimagesink: run gst-indent
Stefan Kost [Wed, 25 May 2011 09:30:51 +0000 (12:30 +0300)]
xvimagesink: run gst-indent

13 years agoxvimagesink: remove unneded !=NULL checks
Stefan Kost [Wed, 25 May 2011 09:29:21 +0000 (12:29 +0300)]
xvimagesink: remove unneded !=NULL checks

We check for matching_attr!=NULL right before already.

13 years agofeature: use object name instaed of feature name
Wim Taymans [Tue, 24 May 2011 16:21:06 +0000 (18:21 +0200)]
feature: use object name instaed of feature name

13 years agoscheduling: port to new scheduling query
Wim Taymans [Tue, 24 May 2011 15:37:45 +0000 (17:37 +0200)]
scheduling: port to new scheduling query

13 years agotheoradec: handle reconfigure events
Wim Taymans [Tue, 24 May 2011 08:46:48 +0000 (10:46 +0200)]
theoradec: handle reconfigure events

Handle the caps with the caps event.
Handle the reconfigure event and renegotiate the bufferpool when needed.

13 years agoconvertframe: fix for merge conflict
Wim Taymans [Tue, 24 May 2011 07:55:47 +0000 (09:55 +0200)]
convertframe: fix for merge conflict

13 years agoMerge branch 'master' into 0.11
Wim Taymans [Tue, 24 May 2011 07:47:15 +0000 (09:47 +0200)]
Merge branch 'master' into 0.11

Conflicts:
gst-libs/gst/video/convertframe.c

13 years agox11: free bufferpool whe activation fails
Wim Taymans [Tue, 24 May 2011 07:45:18 +0000 (09:45 +0200)]
x11: free bufferpool whe activation fails

13 years agodocs: massage the section file more
Stefan Kost [Mon, 23 May 2011 21:13:04 +0000 (00:13 +0300)]
docs: massage the section file more

Add more symbols (from unused.txt). Move the whole bunch of riff-fourcc defines
to std section too (no one is hoing to document them, right).

13 years agodocs: add missing parameter docs
Stefan Kost [Mon, 23 May 2011 21:12:26 +0000 (00:12 +0300)]
docs: add missing parameter docs

13 years agodocs: move the riff structure to std-section
Stefan Kost [Mon, 23 May 2011 20:53:38 +0000 (23:53 +0300)]
docs: move the riff structure to std-section

If someone intents to document them and the fields we can move them back.

13 years agodocs: move pluginbaseversion to separate section as we have section docs
Stefan Kost [Mon, 23 May 2011 20:53:06 +0000 (23:53 +0300)]
docs: move pluginbaseversion to separate section as we have section docs

13 years agodocs: add minimal docblobs for status code and headers
Stefan Kost [Mon, 23 May 2011 20:51:15 +0000 (23:51 +0300)]
docs: add minimal docblobs for status code and headers

Use a trick to avoid documenting all 100 enums.

13 years agodocs: update xoverlay docs for api addition and deprecation
Stefan Kost [Mon, 23 May 2011 20:41:56 +0000 (23:41 +0300)]
docs: update xoverlay docs for api addition and deprecation

13 years agodocs: rtp library docs update
Stefan Kost [Mon, 23 May 2011 20:12:50 +0000 (23:12 +0300)]
docs: rtp library docs update

13 years agodocs: add missing documentation for various pieces
Stefan Kost [Mon, 23 May 2011 19:58:22 +0000 (22:58 +0300)]
docs: add missing documentation for various pieces

13 years agobaseaudiosink: recalibrate clock on setcaps
Thijs Vermeir [Fri, 19 Feb 2010 11:54:18 +0000 (12:54 +0100)]
baseaudiosink: recalibrate clock on setcaps

Because the spec for the ringbuffer can change when changing
the caps, we must recalibrate the clock.

https://bugzilla.gnome.org/show_bug.cgi?id=610443

13 years agosubparse: Try to typefind even if conversion to UTF8 failed
Sebastian Dröge [Mon, 23 May 2011 14:02:34 +0000 (16:02 +0200)]
subparse: Try to typefind even if conversion to UTF8 failed

Fixes bug #600043.

13 years agosubparse: Compile the typefind regex with optimization to speed up matching
Sebastian Dröge [Mon, 23 May 2011 14:02:20 +0000 (16:02 +0200)]
subparse: Compile the typefind regex with optimization to speed up matching

13 years agosubparse: Interprete typefind strings passed to GRegex as raw bytes instead of valid...
Sebastian Dröge [Mon, 23 May 2011 13:51:14 +0000 (15:51 +0200)]
subparse: Interprete typefind strings passed to GRegex as raw bytes instead of valid UTF8

13 years agoconvertframe: fix docs
Stefan Kost [Mon, 23 May 2011 12:21:59 +0000 (15:21 +0300)]
convertframe: fix docs

Fixup paramter mismatch between func and prototype. Add missing parameter docs.

13 years agodocs: fixup audio-library docs
Stefan Kost [Mon, 23 May 2011 12:08:24 +0000 (15:08 +0300)]
docs: fixup audio-library docs

13 years agodocs: fixup appsrc/sink api docs
Stefan Kost [Mon, 23 May 2011 12:02:27 +0000 (15:02 +0300)]
docs: fixup appsrc/sink api docs

13 years agodocs: fix docs for new api
Stefan Kost [Mon, 23 May 2011 11:53:26 +0000 (14:53 +0300)]
docs: fix docs for new api

Some parameters where wrong, first line missed the ':' and return docs where
broken.

13 years agodocs: update xmp api docs
Stefan Kost [Mon, 23 May 2011 11:45:23 +0000 (14:45 +0300)]
docs: update xmp api docs

Add missing section. Add new section to main-sgml. Add missing function.

13 years agoxmptag: remove late check
Stefan Kost [Mon, 23 May 2011 11:07:38 +0000 (14:07 +0300)]
xmptag: remove late check

We deref the pointer two lines before already and besides this internal function
should not be called with this parameter=NULL.