platform/upstream/gstreamer.git
12 years agoupdate for memory api changes
Wim Taymans [Wed, 14 Mar 2012 20:36:03 +0000 (21:36 +0100)]
update for memory api changes

12 years agotake padding into account
Wim Taymans [Wed, 14 Mar 2012 18:55:32 +0000 (19:55 +0100)]
take padding into account

12 years agoimagefreeze: port to 0.11
Mark Nauwelaerts [Wed, 14 Mar 2012 16:07:50 +0000 (17:07 +0100)]
imagefreeze: port to 0.11

12 years agojitterbuffer: reply FALSe on serialized queries
Wim Taymans [Wed, 14 Mar 2012 14:45:38 +0000 (15:45 +0100)]
jitterbuffer: reply FALSe on serialized queries

12 years agomp4vpay: we can also handle x-divx
Wim Taymans [Wed, 14 Mar 2012 10:21:32 +0000 (11:21 +0100)]
mp4vpay: we can also handle x-divx

12 years agowavpackenc: do not set output caps directly
Mark Nauwelaerts [Wed, 14 Mar 2012 09:39:53 +0000 (10:39 +0100)]
wavpackenc: do not set output caps directly

... but use base class function instead.

12 years agomp4vdepay: fix buffer handling
Wim Taymans [Tue, 13 Mar 2012 20:31:48 +0000 (21:31 +0100)]
mp4vdepay: fix buffer handling

Don't always output the payload subbuffer, use a separate variable to
make things clearer and without the error.

12 years agoudpsink: make buffer-size work again
Wim Taymans [Tue, 13 Mar 2012 19:49:43 +0000 (20:49 +0100)]
udpsink: make buffer-size work again

12 years agoudpsrc: fix SO_RCVBUF handling
Wim Taymans [Tue, 13 Mar 2012 19:36:56 +0000 (20:36 +0100)]
udpsrc: fix SO_RCVBUF handling

12 years agortpsession: don't leak the address
Wim Taymans [Tue, 13 Mar 2012 18:26:47 +0000 (19:26 +0100)]
rtpsession: don't leak the address

12 years agoh264depay: unmap on empty packet
Wim Taymans [Tue, 13 Mar 2012 18:26:23 +0000 (19:26 +0100)]
h264depay: unmap on empty packet

12 years agortph264pay: do DTS and PTS correctly
Wim Taymans [Tue, 13 Mar 2012 17:07:18 +0000 (18:07 +0100)]
rtph264pay: do DTS and PTS correctly

12 years agoqtdemux: set DTS and PTS on output buffers
Wim Taymans [Tue, 13 Mar 2012 16:54:50 +0000 (17:54 +0100)]
qtdemux: set DTS and PTS on output buffers

Set PTS and DTS on output buffers instead of just the PTS. In streaming cases
you want to synchronized encoded data based on the DTS because that is
monotonically increasing.

12 years agoqtdemux: debug additional sdtp flag
Wim Taymans [Tue, 13 Mar 2012 16:54:28 +0000 (17:54 +0100)]
qtdemux: debug additional sdtp flag

12 years agortp: fix unmap calls
Wim Taymans [Tue, 13 Mar 2012 16:27:32 +0000 (17:27 +0100)]
rtp: fix unmap calls

12 years agopulse: fix formats, we can not handle S8 but only U8
Wim Taymans [Tue, 13 Mar 2012 12:25:09 +0000 (13:25 +0100)]
pulse: fix formats, we can not handle S8 but only U8

12 years agoflacenc: fix streamheaders
Wim Taymans [Tue, 13 Mar 2012 11:40:37 +0000 (12:40 +0100)]
flacenc: fix streamheaders

Fix the caps of flacenc, the reference encoder only support 24 bits in
32 bits.
Set streamheader on output caps.

12 years agoupdate for caps api changes
Wim Taymans [Mon, 12 Mar 2012 16:17:01 +0000 (17:17 +0100)]
update for caps api changes

12 years agoconfigure.ac : bump GLib requirement to 2.31.14
Sreerenj Balachandran [Mon, 12 Mar 2012 14:43:27 +0000 (16:43 +0200)]
configure.ac : bump GLib requirement to 2.31.14

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

12 years agofix for caps _normalize changes
Wim Taymans [Mon, 12 Mar 2012 11:23:15 +0000 (12:23 +0100)]
fix for caps _normalize changes

12 years agofix for caps api change
Wim Taymans [Mon, 12 Mar 2012 10:47:35 +0000 (11:47 +0100)]
fix for caps api change

12 years agofix for _do_simplify changes
Wim Taymans [Mon, 12 Mar 2012 09:43:57 +0000 (10:43 +0100)]
fix for _do_simplify changes

12 years agofix for caps api changes
Wim Taymans [Sun, 11 Mar 2012 18:06:37 +0000 (19:06 +0100)]
fix for caps api changes

12 years agofix template caps refcount
Wim Taymans [Sat, 10 Mar 2012 09:51:44 +0000 (10:51 +0100)]
fix template caps refcount

12 years agoaasink: propose videometa uptream
Wim Taymans [Thu, 8 Mar 2012 12:06:13 +0000 (13:06 +0100)]
aasink: propose videometa uptream

subclass from videosink.
Propose videometa upstream because we can handle it with the video api.

12 years agoqtmux: do not unref sample caps
Matej Knopp [Thu, 8 Mar 2012 06:53:50 +0000 (01:53 -0500)]
qtmux: do not unref sample caps

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

12 years agotests: improve more tests
Wim Taymans [Thu, 8 Mar 2012 10:36:01 +0000 (11:36 +0100)]
tests: improve more tests

12 years agotests: fix some more tests
Wim Taymans [Thu, 8 Mar 2012 10:20:43 +0000 (11:20 +0100)]
tests: fix some more tests

12 years agortpbin: improve cleanup
Wim Taymans [Wed, 7 Mar 2012 14:22:36 +0000 (15:22 +0100)]
rtpbin: improve cleanup

Reuse cleanup methods to make sure we remove all pads correctly

12 years agortpsession: set caps without the lock
Wim Taymans [Wed, 7 Mar 2012 14:00:26 +0000 (15:00 +0100)]
rtpsession: set caps without the lock

Release the lock before setting the caps on the srcpad, which triggers an event,
which could eventually call back into us and cause a deadlock.

12 years agoptdemux: set caps after activating the pad
Wim Taymans [Wed, 7 Mar 2012 13:55:08 +0000 (14:55 +0100)]
ptdemux: set caps after activating the pad

Set the caps after we activated the pad or else it will just fail.

12 years agolaw: add layout to audio caps
Wim Taymans [Wed, 7 Mar 2012 13:54:15 +0000 (14:54 +0100)]
law: add layout to audio caps

12 years agolaw: use GstAudioInfo
Wim Taymans [Wed, 7 Mar 2012 13:51:09 +0000 (14:51 +0100)]
law: use GstAudioInfo

Use GstAudioInfo to generate output caps.

12 years agoqtdemux: covert art tag type is GstSample not GstBuffer now
Matej Knopp [Wed, 7 Mar 2012 09:20:00 +0000 (04:20 -0500)]
qtdemux: covert art tag type is GstSample not GstBuffer now

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

12 years agopo: fix POTFILES.in for new wavpackparse location in source tree
Tim-Philipp Müller [Wed, 7 Mar 2012 10:28:58 +0000 (10:28 +0000)]
po: fix POTFILES.in for new wavpackparse location in source tree

12 years agoudp: Change the default port to 5004
David Schleef [Wed, 7 Mar 2012 05:44:36 +0000 (21:44 -0800)]
udp: Change the default port to 5004

udpsrc/udpsink are almost always used with RTP, so let's use an
RTP port as the default port.  It's unclear why 4951 was used, it
goes back to early commits in CVS.

12 years agoMerge branch '0.11' of ssh://git.freedesktop.org/git/gstreamer/gst-plugins-good into...
David Schleef [Wed, 7 Mar 2012 05:36:02 +0000 (21:36 -0800)]
Merge branch '0.11' of ssh://git.freedesktop.org/git/gstreamer/gst-plugins-good into 0.11

12 years agogdk: cleanups and fix rowstride
Wim Taymans [Mon, 5 Mar 2012 14:29:56 +0000 (15:29 +0100)]
gdk: cleanups and fix rowstride

Fix the output rowstride, we need to take the stride of the output video frame.
Since we are also dealing with planes, take the plane data and stride.
Don't store the same info twice in different variables.

12 years agogdkpixbuf: fix event handling
Wim Taymans [Mon, 5 Mar 2012 12:31:44 +0000 (13:31 +0100)]
gdkpixbuf: fix event handling

12 years agotests: port wavpack tests to 0.11
Mark Nauwelaerts [Mon, 5 Mar 2012 11:20:07 +0000 (12:20 +0100)]
tests: port wavpack tests to 0.11

12 years agowavpackdec: port to 0.11
Mark Nauwelaerts [Mon, 5 Mar 2012 12:36:39 +0000 (13:36 +0100)]
wavpackdec: port to 0.11

12 years agowavpackenc: port to 0.11
Mark Nauwelaerts [Mon, 5 Mar 2012 11:17:39 +0000 (12:17 +0100)]
wavpackenc: port to 0.11

12 years agowavpack: remove legacy wavpackparse
Mark Nauwelaerts [Mon, 5 Mar 2012 12:34:36 +0000 (13:34 +0100)]
wavpack: remove legacy wavpackparse

12 years agoaudioparsers: port wavpackparse to 0.11
Mark Nauwelaerts [Mon, 5 Mar 2012 11:15:44 +0000 (12:15 +0100)]
audioparsers: port wavpackparse to 0.11

12 years agoMerge branch 'master' into 0.11
Mark Nauwelaerts [Mon, 5 Mar 2012 12:29:59 +0000 (13:29 +0100)]
Merge branch 'master' into 0.11

Conflicts:
ext/wavpack/gstwavpackparse.c
sys/v4l2/gstv4l2bufferpool.c
sys/v4l2/gstv4l2bufferpool.h
sys/v4l2/gstv4l2videooverlay.c

12 years agox-raw-bayer -> x-bayer
Wim Taymans [Mon, 5 Mar 2012 11:43:17 +0000 (12:43 +0100)]
x-raw-bayer -> x-bayer

12 years agov4l2sink: don't use deprecated XKeycodeToKeysym
Oleksij Rempel (Alexey Fisher) [Mon, 5 Mar 2012 10:17:30 +0000 (11:17 +0100)]
v4l2sink: don't use deprecated XKeycodeToKeysym

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

Signed-off-by: Oleksij Rempel (Alexey Fisher) <bug-track@fisher-privat.net>
12 years agoximage: use new style caps
Wim Taymans [Mon, 5 Mar 2012 11:03:01 +0000 (12:03 +0100)]
ximage: use new style caps

12 years agowavpackdec: allow some timestamp tolerance to arrange for perfect timestamping
Mark Nauwelaerts [Mon, 5 Mar 2012 09:49:33 +0000 (10:49 +0100)]
wavpackdec: allow some timestamp tolerance to arrange for perfect timestamping

... which also happens to make some more unit tests pass.

12 years agowavpackdec: fix copying output data
Mark Nauwelaerts [Mon, 5 Mar 2012 09:47:44 +0000 (10:47 +0100)]
wavpackdec: fix copying output data

12 years agowavpackenc: restore legacy buffer offset decorating somewhat
Mark Nauwelaerts [Mon, 5 Mar 2012 09:46:51 +0000 (10:46 +0100)]
wavpackenc: restore legacy buffer offset decorating somewhat

... at least sufficiently to aid in recognizing rewritten header buffer
making unit test pass.

12 years agowavpackparse: initialize header to silence older gcc versions
Stefan Sauer [Mon, 5 Mar 2012 09:51:33 +0000 (10:51 +0100)]
wavpackparse: initialize header to silence older gcc versions

12 years agowavpackparse: remove empty lines in varable declarations caused by old indent
Stefan Sauer [Mon, 5 Mar 2012 09:45:46 +0000 (10:45 +0100)]
wavpackparse: remove empty lines in varable declarations caused by old indent

12 years agojack: fix obvious wrong definition for the master flag
Stefan Sauer [Mon, 5 Mar 2012 09:44:54 +0000 (10:44 +0100)]
jack: fix obvious wrong definition for the master flag

12 years agojack: change the transport-mode enum into flags
Stefan Sauer [Sun, 4 Mar 2012 18:55:26 +0000 (19:55 +0100)]
jack: change the transport-mode enum into flags

One can use (or not use) master and slave mode independently.

12 years agoavimux: support up to 6 channels of AC-3
Antoine Tremblay [Fri, 2 Mar 2012 16:49:02 +0000 (11:49 -0500)]
avimux: support up to 6 channels of AC-3

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

12 years agov4l2: clear DISCONT flag when recycling buffers into the buffer pool
Tim-Philipp Müller [Sat, 3 Mar 2012 13:04:48 +0000 (13:04 +0000)]
v4l2: clear DISCONT flag when recycling buffers into the buffer pool

The base class may have set the DISCONT flag on the first buffer pushed
out. We need to clear that when recycling buffers back into the buffer
pool, otherwise we constantly push out buffers with the discont flag
set, which might upset downstream elements, esp. for compressed
formats like mpeg-ts.

12 years agov4l2src: fix v4l2_munmap() for compressed formats
Oleksij Rempel (Alexey Fisher) [Thu, 1 Mar 2012 13:15:29 +0000 (14:15 +0100)]
v4l2src: fix v4l2_munmap() for compressed formats

Make sure we always call munmap() with the same size we called mmap()
with before.

Current v4l2src uses the same structure for VIDIOC_QUERYBUF, VIDIOC_QBUF
and v4l2_munmap calls. The problem is that the video buffer size (length)
may vary for compressed or emulated bufs. VIDIOC_QBUF will change it if
we pass the pointer of a v4l2_buffer. This is why we should avoid using
same variable for mmap and video buffers.

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

12 years agogst: Update for the gstmarshal.[ch] removal
Sebastian Dröge [Fri, 2 Mar 2012 10:17:33 +0000 (11:17 +0100)]
gst: Update for the gstmarshal.[ch] removal

12 years agomixer/colorbalance: Update for API changes
Sebastian Dröge [Fri, 2 Mar 2012 09:13:08 +0000 (10:13 +0100)]
mixer/colorbalance: Update for API changes

12 years agoaasink: fix stride
Wim Taymans [Thu, 1 Mar 2012 16:15:57 +0000 (17:15 +0100)]
aasink: fix stride

12 years agoaudioparsers: disable non-ported wavpackparse
Mark Nauwelaerts [Thu, 1 Mar 2012 10:36:34 +0000 (11:36 +0100)]
audioparsers: disable non-ported wavpackparse

12 years agoMerge branch 'master' into 0.11
Mark Nauwelaerts [Thu, 1 Mar 2012 10:29:50 +0000 (11:29 +0100)]
Merge branch 'master' into 0.11

Conflicts:
ext/wavpack/gstwavpackenc.c
tests/check/elements/audioiirfilter.c
tests/examples/v4l2/probe.c

12 years agogdkpixbufsink: remove deprecated property
Mark Nauwelaerts [Wed, 29 Feb 2012 21:31:21 +0000 (22:31 +0100)]
gdkpixbufsink: remove deprecated property

12 years agogdkpixbufscale: remove deprecated property
Mark Nauwelaerts [Wed, 29 Feb 2012 21:30:56 +0000 (22:30 +0100)]
gdkpixbufscale: remove deprecated property

12 years agogdkpixbufsink: port to 0.11
Mark Nauwelaerts [Wed, 29 Feb 2012 21:28:01 +0000 (22:28 +0100)]
gdkpixbufsink: port to 0.11

12 years agogdkpixbufscale: port to 0.11
Mark Nauwelaerts [Wed, 29 Feb 2012 21:25:23 +0000 (22:25 +0100)]
gdkpixbufscale: port to 0.11

12 years agogdkpixbufdec: port to 0.11
Mark Nauwelaerts [Wed, 29 Feb 2012 21:24:46 +0000 (22:24 +0100)]
gdkpixbufdec: port to 0.11

12 years agoupdate for metadata API changes
Wim Taymans [Wed, 29 Feb 2012 16:26:01 +0000 (17:26 +0100)]
update for metadata API changes

12 years agoaudioparsers: add baseparse based wavpackparse
Mark Nauwelaerts [Tue, 28 Feb 2012 12:51:10 +0000 (13:51 +0100)]
audioparsers: add baseparse based wavpackparse

12 years agoupdate for metadata tags
Wim Taymans [Tue, 28 Feb 2012 10:38:59 +0000 (11:38 +0100)]
update for metadata tags

12 years agowavpackdec: adjust to audio format limitations
Mark Nauwelaerts [Mon, 27 Feb 2012 22:46:15 +0000 (23:46 +0100)]
wavpackdec: adjust to audio format limitations

... which does not allow expressing arbitrary depth in a GstAudioFormat.

Also adjust unit test to modified behaviour.

12 years agowavpackdec: determine depth from bytes per sample
Mark Nauwelaerts [Mon, 27 Feb 2012 22:46:08 +0000 (23:46 +0100)]
wavpackdec: determine depth from bytes per sample

... rather than from bits per sample, since spec states values are already
left justified w.r.t. bits per sample but not w.r.t. bytes per sample
(and so the latter determines the normalization, or indicated depth).

12 years agowavpackdec: port to audiodecoder
Mark Nauwelaerts [Mon, 27 Feb 2012 22:46:03 +0000 (23:46 +0100)]
wavpackdec: port to audiodecoder

12 years agowavpackenc: port to audioencoder
Mark Nauwelaerts [Mon, 27 Feb 2012 22:45:54 +0000 (23:45 +0100)]
wavpackenc: port to audioencoder

Also adjust unit test to slightly modified behaviour.

12 years agoSuppress deprecation warnings in selected files, for g_value_array_* mostly
Edward Hervey [Mon, 27 Feb 2012 13:47:25 +0000 (14:47 +0100)]
Suppress deprecation warnings in selected files, for g_value_array_* mostly

12 years agospeexenc: chain up to parent event handler
Wim Taymans [Mon, 27 Feb 2012 12:09:31 +0000 (13:09 +0100)]
speexenc: chain up to parent event handler

12 years agoflacenc: fix event handling
Wim Taymans [Mon, 27 Feb 2012 12:05:33 +0000 (13:05 +0100)]
flacenc: fix event handling

Fix dodgy segment event handling
Chain up to parent event handler

12 years agov4l2: use public api
Wim Taymans [Mon, 27 Feb 2012 08:14:04 +0000 (09:14 +0100)]
v4l2: use public api

instead of poking into the private structures of the base class

12 years agoflvmux, matroskamux, qtmux: if in doubt about downstream seekability default to strea...
Tim-Philipp Müller [Mon, 27 Feb 2012 01:09:11 +0000 (01:09 +0000)]
flvmux, matroskamux, qtmux: if in doubt about downstream seekability default to streaming=true

If downstream didn't answer our SEEKING query and told us
it's seekable, default to streaming=true. We couldn't do
this in 0.10 for backwards compatibility reasons, but we
can in 0.11. Play it safe.

12 years agoMerge remote-tracking branch 'origin/master' into 0.11
Tim-Philipp Müller [Mon, 27 Feb 2012 01:00:03 +0000 (01:00 +0000)]
Merge remote-tracking branch 'origin/master' into 0.11

Conflicts:
gst/audioparsers/gstmpegaudioparse.c

12 years agoMerge commit 'f9207722ca8fd8dcc1e7215d8af85efe4debfdf4' into 0.11
Tim-Philipp Müller [Mon, 27 Feb 2012 00:56:37 +0000 (00:56 +0000)]
Merge commit 'f9207722ca8fd8dcc1e7215d8af85efe4debfdf4' into 0.11

12 years agompegaudioparse: fix up after merge
Tim-Philipp Müller [Mon, 27 Feb 2012 00:55:38 +0000 (00:55 +0000)]
mpegaudioparse: fix up after merge

12 years agoMerge commit '38516ad367128d83f9e156529018adb4433cd328' into 0.11
Tim-Philipp Müller [Mon, 27 Feb 2012 00:48:57 +0000 (00:48 +0000)]
Merge commit '38516ad367128d83f9e156529018adb4433cd328' into 0.11

Conflicts:
ext/pulse/pulseaudiosink.c
gst/audioparsers/gstmpegaudioparse.c

12 years agogoom2k1: fix compiler warning
Alessandro Decina [Sun, 26 Feb 2012 19:39:52 +0000 (20:39 +0100)]
goom2k1: fix compiler warning

12 years agompegaudioparse: fix compiler warning
Alessandro Decina [Sun, 26 Feb 2012 19:30:24 +0000 (20:30 +0100)]
mpegaudioparse: fix compiler warning

12 years agoqtmux: create streamable output if downstream is not seekable
Tim-Philipp Müller [Sat, 25 Feb 2012 15:55:15 +0000 (15:55 +0000)]
qtmux: create streamable output if downstream is not seekable

Ignore the "streamable" property setting and create streamable
output if downstream is known not to be seekable (as queried
via a SEEKABLE query).

Fixes pipelines like qtmux ! appsink possibly creating seemingly
corrupted output if streamable has not been set to true.

12 years agoflvmux: create streamable output if downstream is not seekable
Tim-Philipp Müller [Sat, 25 Feb 2012 15:48:44 +0000 (15:48 +0000)]
flvmux: create streamable output if downstream is not seekable

Ignore the "streamable" property setting and create streamable
output if downstream is known not to be seekable (as queried
via a SEEKABLE query).

Fixes pipelines like flvmux ! appsink possibly creating seemingly
corrupted output if streamable has not been set to true.

12 years agomatroskamux: create streamable output if downstream is not seekable
Tim-Philipp Müller [Sat, 25 Feb 2012 15:40:39 +0000 (15:40 +0000)]
matroskamux: create streamable output if downstream is not seekable

Ignore the "streamable" property setting and create streamable
output if downstream is known not to be seekable (as queried
via a SEEKABLE query).

Fixes pipelines like webmmux ! appsink creating seemingly
corrupted output if streamable has not been set to true.

12 years agoupdate for basetransform change
Wim Taymans [Fri, 24 Feb 2012 10:03:48 +0000 (11:03 +0100)]
update for basetransform change

12 years agoupdate for metadata change
Wim Taymans [Fri, 24 Feb 2012 09:26:26 +0000 (10:26 +0100)]
update for metadata change

12 years agoefence: remove plugin
David Schleef [Thu, 23 Feb 2012 16:42:25 +0000 (08:42 -0800)]
efence: remove plugin

Valgrind is much more useful these days.

12 years agoUpdate NEWS and RELEASE as well
Tim-Philipp Müller [Thu, 23 Feb 2012 12:05:20 +0000 (12:05 +0000)]
Update NEWS and RELEASE as well

12 years agoBump version after release
Tim-Philipp Müller [Thu, 23 Feb 2012 11:07:35 +0000 (11:07 +0000)]
Bump version after release

12 years agoaudiofx: remove transform lock usage
Wim Taymans [Thu, 23 Feb 2012 11:03:24 +0000 (12:03 +0100)]
audiofx: remove transform lock usage

12 years agoupdate for basetransform lock removal
Wim Taymans [Thu, 23 Feb 2012 10:16:21 +0000 (11:16 +0100)]
update for basetransform lock removal

12 years agodebugutils: disable efence plugin properly
Tim-Philipp Müller [Wed, 22 Feb 2012 23:36:54 +0000 (23:36 +0000)]
debugutils: disable efence plugin properly

We don't want it built if mmap isn't available either..

12 years agoflacenc: fix get_caps function some more so that all structures have channel info
Tim-Philipp Müller [Wed, 22 Feb 2012 17:39:16 +0000 (17:39 +0000)]
flacenc: fix get_caps function some more so that all structures have channel info

Set channels and channel-layout on the right structure; that is, the
structure we are going to append to the caps we are building, and not
the structure we are using as a template for all the structures. Fixes
first structure of the returned caps not having any channel info set
on it.

12 years agoflacenc: microoptimisation: avoid unnecessary list and string copies
Tim-Philipp Müller [Wed, 22 Feb 2012 17:09:25 +0000 (17:09 +0000)]
flacenc: microoptimisation: avoid unnecessary list and string copies

12 years agoflacenc: audio caps have a *list* of formats, not an array of formats
Tim-Philipp Müller [Wed, 22 Feb 2012 17:03:42 +0000 (17:03 +0000)]
flacenc: audio caps have a *list* of formats, not an array of formats

A list of things in caps is something where one is picked in the
course of negotiation. An array is always something that only makes
sense as a whole in that order.