Commit graph

155 commits

Author SHA1 Message Date
Tim-Philipp Müller
62294f0650 gdppay: refactor payloading code a little
Get rid of some indirections and inefficiencies,
just payload things directly which gives us more
control over what memory is allocated where and
how and makes things much simpler. In particular,
we can now allocate the payload header plus the
GstMemory to represent it in one go.
2014-12-26 13:44:33 +00:00
Tim-Philipp Müller
c184a4bb04 gdppay: refactor a little
Get rid of now-useless packetizer struct and just
call internal functions directly. Also remove
version property which is now defunct, not least
because we create the packetizer with the
version in the init function before a version
can be set.
2014-12-26 13:44:32 +00:00
Tim-Philipp Müller
d790ba9a06 gdppay: optimise payloading of buffers with multiple memories
Add function to calculate a payload CRC across multiple memories
so we don't have to merge buffers with multiple memories just to
calculate the CRC. Also make CRC calculation function static,
since it's not used outside dataprotocol.h and move special-casing
of length = 0 -> CRC = 0 into CRC function (from caller).

Perhaps more importantly, since payload CRC is off by default:
don't map buffer (and possibly merge memories in the process)
if we are not going to use it to calculate a CRC anyway.
2014-12-26 13:44:32 +00:00
Tim-Philipp Müller
3853f8c070 gdppay: dataprotocol: drop bogus const
Doesn't really make sense given that we map
it and possibly merge memories and such.
2014-12-26 13:44:29 +00:00
Tim-Philipp Müller
83d9353d58 gdppay: minor caps event payloading optimisation
Avoid creation of buffer we're just going to throw
away two lines later anyway.
2014-11-30 14:38:22 +00:00
Tim-Philipp Müller
82b0ecf194 gdppay: fix some memory leaks 2014-11-30 14:38:22 +00:00
Thiago Santos
6c9fdb52e1 gdppay: remove obsolete code
Buffers have no caps in 1.0
2014-07-22 08:51:32 -03:00
Thiago Santos
ea7b843244 gdppay: put all sticky events in streamheader
Use the sticky events to compose the streamheader as they are the
ones that are persisted to config new pads linked. Instead of storing
them ourselves rely on the pad storage that already orders it for us

https://bugzilla.gnome.org/show_bug.cgi?id=732596
2014-07-22 08:51:32 -03:00
Tim-Philipp Müller
c60f4ecd11 gdp: don't print already-freed string
CID 1221987
2014-06-09 10:10:01 +01:00
Olivier Crête
037f277566 gdp: Fail gracefully if event can't be parsed
https://bugzilla.gnome.org/show_bug.cgi?id=731093
2014-06-02 21:44:00 -04:00
Thiago Santos
6b0014b5ac gdp: add DTS to headers 2014-01-31 23:44:11 -03:00
Thiago Santos
a029a35036 gdppay: update to 1.x reality
* stream-start-id is mandatory at the beginning, so add that to the
gdp headers
* caps must be sent before new segment, invert the order from legacy
0.10 code

And fix the tests as a ref is now kept for those buffers that compose
the header
2014-01-31 23:44:11 -03:00
Thiago Santos
e909e6a071 gdppay: push the stream-start event
instead of just swallowing upstream's stream-start into its
payload, push it as elements expect a stream-start before data
2014-01-30 18:18:18 -03:00
Sebastian Dröge
e51cd4fe2f gst: Add better support for static plugins 2013-04-15 15:59:22 +02:00
Tim-Philipp Müller
e63027f198 gdp: actually log generic dataprotocol stuff to gdp category 2013-02-11 12:34:24 +00:00
Tim 'mithro' Ansell
c8cbe98d90 gdppay: fix buffer leak when new caps are same as old caps
The leak occurs when you got a message with identical caps to the ones you
already had.

https://bugzilla.gnome.org/show_bug.cgi?id=693324
2013-02-07 14:07:17 +00:00
Tim-Philipp Müller
9e1b75fda3 Fix FSF address
https://bugzilla.gnome.org/show_bug.cgi?id=687520
2012-11-04 00:09:59 +00:00
Tim-Philipp Müller
2c5138dd76 gdp: dump bytes into debug log using GST_MEMDUMP
Instead of home-grown solution.
2012-09-11 01:54:46 +01:00
Wim Taymans
ed451b1cd7 update for new variable names 2012-09-11 01:54:46 +01:00
Mark Nauwelaerts
712c63af44 gdppay: plug buffer leak 2012-09-11 01:54:46 +01:00
Tim-Philipp Müller
b928640b5e Use new gst_element_class_set_static_metadata() 2012-09-11 01:54:45 +01:00
Sebastian Dröge
ca7c2af1c4 gst: Update for GST_PLUGIN_DEFINE() API change 2012-09-11 01:54:45 +01:00
Wim Taymans
946dbd38d8 Improve buffer allocation of wrapped memory 2012-09-11 01:54:45 +01:00
Wim Taymans
f12af88f4a update for buffer api change 2012-09-11 01:54:45 +01:00
Wim Taymans
e817295aef update for buffer changes 2012-09-11 01:54:44 +01:00
Wim Taymans
38abb4a497 update for memory api changes 2012-09-11 01:54:44 +01:00
Wim Taymans
4ae0b5eb48 update for new memory api 2012-09-11 01:54:44 +01:00
Wim Taymans
30b45304e4 gdppay: fixup for changed caps
Try to send the streamheader after the first buffer.
2012-09-11 01:54:44 +01:00
Wim Taymans
66fb9166a4 dataprotocol: don't define default Category
Since we now include this into the unit tests directly, don't define the default
category macro because it conflicts with check.
2012-09-11 01:54:44 +01:00
Wim Taymans
f6cab316cc update for HEADER flag changes 2012-09-11 01:54:44 +01:00
Wim Taymans
33344dc2b9 port to new map API 2012-09-11 01:54:44 +01:00
Tim-Philipp Müller
2d7150414b gdp: move dataprotocol library into gdp plugin and make private
We have removed things like protocol=gdp in the tcp elements
in favour of explicit gdppay/depay elements, so there's no need
to keep a public API and library for now. We can still add it
back later. Someone needs to think hard about 0.11 and gdp
anyway one of these days.
2012-09-11 01:54:43 +01:00
Wim Taymans
d67bdd8375 gdp: fix header files
Ensure correct indentation and retab
Make sure all structure have padding
2012-09-11 01:54:41 +01:00
Wim Taymans
3bd55502a1 gdp: rename buffer PREROLL -> LIVE flag
Rename the GST_BUFFER_FLAG_PREROLL to GST_BUFFER_FLAG_LIVE and give the new flag
a meaning. The old PREROLL flag never had a clear meaning.
2012-09-11 01:54:41 +01:00
Wim Taymans
615063ba5e gdp: make new _buffer_allocate method
Make a new method to allocate a buffer + memory that takes the allocator and the
alignment as parameters. Provide a macro for the old method but prefer to use
the new method to encourage plugins to negotiate the allocator properly.
2012-09-11 01:54:41 +01:00
Wim Taymans
1136224e91 gdp: Rework GstSegment handling
Improve GstSegment, rename some fields. The idea is to have the GstSegment
structure represent the timing structure of the buffers as they are generated by
the source or demuxer element.
gst_segment_set_seek() -> gst_segment_do_seek()
Rename the NEWSEGMENT event to SEGMENT.
Make parsing of the SEGMENT event into a GstSegment structure.
Pass a GstSegment structure when making a new SEGMENT event. This allows us to
pass the timing info directly to the next element. No accumulation is needed in
the receiving element, all the info is inside the element.
Remove gst_segment_set_newsegment(): This function as used to accumulate
segments received from upstream, which is now not needed anymore because the
segment event contains the complete timing information.
2012-09-11 01:54:41 +01:00
Wim Taymans
b4305c56f5 gdp: Hide the GstStructure in GstEvent
Hide the GstStructure of the event in the implementation specific part so that
we can change it.
Add methods to check and make the event writable.
Add a new method to get a writable GstStructure of the element.
Avoid directly accising the event structure.
2012-09-11 01:54:41 +01:00
Stefan Kost
536f51cf98 gdp: add docs for GstDPPacketizer 2012-09-11 01:54:41 +01:00
Wim Taymans
7ec4633cef gdp: port code to new buffer data API 2012-09-11 01:54:41 +01:00
Wim Taymans
c25051cb01 gdp: remove deprecated code 2012-09-11 01:54:41 +01:00
Tim-Philipp Müller
2c9ac5a4c9 gdp: make public enum _get_type() functions thread-safe
Not that it is likely to matter in practice, but since these are public
API they should probably be thread-safe.
2012-09-11 01:54:40 +01:00
Tim-Philipp Müller
dbbbe59577 gdp: dataprotocol, lfocontrolsource: fix enum value name in enums that are public API
So run-time bindings can introspect the names correctly (we abuse this
field as description field only in elements, not for public API
(where the description belongs into the gtk-doc chunk).

https://bugzilla.gnome.org/show_bug.cgi?id=629946
2012-09-11 01:54:40 +01:00
Benjamin Otte
a7078b74fb gdp: Fixes for -Wmissing-declarations -Wmissing-prototypes
Also adds those flags to the configure warning flags

https://bugzilla.gnome.org/show_bug.cgi?id=611692
2012-09-11 01:54:39 +01:00
Benjamin Otte
b2314491b1 gdp: Make code safe for -Wredundant-decls
Adds that warning to configure.ac

Includes a tiny change of the GST_BOILERPLATE_FULL() macro:
The get_type() function is no longer declared before being defined.

https://bugzilla.gnome.org/show_bug.cgi?id=611692
2012-09-11 01:54:39 +01:00
Stefan Kost
c1574cfbd1 gdp: fix broken xrefs in docs 2012-09-11 01:54:39 +01:00
Sebastian Dröge
1774354a3a gdp: Don't write to the same region of memory as a uint64 and uint16 as this breaks ...
Original commit message from CVS:
* libs/gst/dataprotocol/dataprotocol.c:
Don't write to the same region of memory as a uint64 and uint16
as this breaks strict aliasing rules and apparantly breaks on PPC
and s390. Thanks to Sjoerd Simons for analysing. Fixes bug #348114.
2012-09-11 01:54:39 +01:00
Michael Smith
458f65fbba gdp: When calculating GDP body CRC, use the correct pointer.
Original commit message from CVS:
* libs/gst/dataprotocol/dataprotocol.c:
(gst_dp_packet_from_event_1_0):
When calculating GDP body CRC, use the correct pointer.
Fixes part of #522401.
2012-09-11 01:54:39 +01:00
Sebastian Dröge
90af674a5f gdp: Correct all relevant warnings found by the sparse semantic code analyzer. This include marking several symbols static...
Original commit message from CVS:
* gst/gstconfig.h.in:
* libs/gst/base/gstcollectpads.c: (gst_collect_pads_read_buffer):
* libs/gst/check/gstcheck.c: (gst_check_log_message_func),
(gst_check_log_critical_func), (gst_check_drop_buffers),
(gst_check_element_push_buffer_list):
* libs/gst/controller/gstcontroller.c: (gst_controller_get),
(gst_controller_get_type):
* libs/gst/controller/gsthelper.c: (gst_object_control_properties),
(gst_object_get_controller), (gst_object_get_control_source):
* libs/gst/controller/gstinterpolationcontrolsource.c:
(gst_interpolation_control_source_new):
* libs/gst/controller/gstlfocontrolsource.c:
(gst_lfo_control_source_new):
* libs/gst/dataprotocol/dataprotocol.c:
(gst_dp_event_from_packet_0_2):
* plugins/elements/gstfdsrc.c:
* plugins/elements/gstmultiqueue.c:
* plugins/elements/gsttee.c:
* plugins/elements/gsttypefindelement.c:
* plugins/indexers/gstfileindex.c: (_file_index_id_save_xml),
(gst_file_index_add_association):
* plugins/indexers/gstmemindex.c:
* tests/benchmarks/gstpollstress.c: (mess_some_more):
* tests/check/elements/queue.c: (setup_queue):
* tests/check/gst/gstpipeline.c:
* tests/check/libs/collectpads.c: (setup), (teardown),
(gst_collect_pads_suite):
* tests/examples/adapter/adapter_test.c:
* tests/examples/metadata/read-metadata.c: (make_pipeline):
* tests/examples/xml/createxml.c:
* tests/examples/xml/runxml.c:
* tools/gst-inspect.c:
* tools/gst-run.c:
Correct all relevant warnings found by the sparse semantic code
analyzer. This include marking several symbols static, using
NULL instead of 0 for pointers, not using variable sized arrays
on the stack, moving variable declarations to the beginning of
a block and using "foo (void)" instead of "foo ()" for declarations.
2012-09-11 01:54:39 +01:00
Damien Lespiau
c0362d43ab gdp: Fix empty prototypes. Fixes bug #507957.
Original commit message from CVS:
Patch by: Damien Lespiau <damien.lespiau@gmail.com>
* libs/gst/controller/gstcontroller.h:
* libs/gst/controller/gstcontrolsource.h:
* libs/gst/controller/gstinterpolationcontrolsource.h:
* libs/gst/controller/gstlfocontrolsource.h:
* libs/gst/dataprotocol/dataprotocol.h:
Fix empty prototypes.  Fixes bug #507957.
2012-09-11 01:54:39 +01:00
Tim-Philipp Müller
8941bdd4ee gdp: g_type_class_ref() other types as well, see #349410 and #64764.
Original commit message from CVS:
* gst/gst.c: (init_post):
* gst/gstevent.c: (_gst_event_initialize):
* gst/gstquery.c: (_gst_query_initialize):
* libs/gst/dataprotocol/dataprotocol.c (gst_dp_init):
g_type_class_ref() other types as well, see #349410 and #64764.
* gst/gstbuffer.c: (_gst_buffer_initialize):
* gst/gstmessage.c: (_gst_message_initialize):
Simplify existing g_type_class_ref().
2012-09-11 01:54:39 +01:00