Commit graph

421 commits

Author SHA1 Message Date
Sebastian Dröge
73e02f4553 mxfdemux: Fix various logic errors in error handling of footer partition parsing 2016-11-25 15:53:50 +02:00
Sebastian Dröge
9ff1ac59f3 mxfdemux: Don't try parsing empty metadata items 2016-11-25 15:53:36 +02:00
Sebastian Dröge
329fe3eea4 mxfmetadata: Add missing NULL check 2016-11-25 15:30:39 +02:00
Sebastian Dröge
743d7bd7ec mxf: Remove mxfdms1.[ch] from the build for now
It's completely unused currently but might be used in the future.
2016-11-24 23:40:45 +02:00
Sebastian Dröge
b5bb6e3b38 mxfdemux: Add various missing bounds checks, NULL checks and integer overflow protection for error cases 2016-11-24 23:40:21 +02:00
Thibault Saunier
2fb716409c Use the new API to post flow ERROR messages on the bus
https://bugzilla.gnome.org/show_bug.cgi?id=770158
2016-08-26 19:23:31 -03:00
Nirbheek Chauhan
42af2d66d8 Add support for Meson as alternative/parallel build system
https://github.com/mesonbuild/meson

With contributions from:

Tim-Philipp Müller <tim@centricular.com>
Matej Knopp <matej.knopp@gmail.com>
Jussi Pakkanen <jpakkane@gmail.com> (original port)

Highlights of the features provided are:
* Faster builds on Linux (~40-50% faster)
* The ability to build with MSVC on Windows
* Generate Visual Studio project files
* Generate XCode project files
* Much faster builds on Windows (on-par with Linux)
* Seriously fast configure and building on embedded

... and many more. For more details see:

http://blog.nirbheek.in/2016/05/gstreamer-and-meson-new-hope.html
http://blog.nirbheek.in/2016/07/building-and-developing-gstreamer-using.html

Building with Meson should work on both Linux and Windows, but may
need a few more tweaks on other operating systems.
2016-08-20 11:35:54 +01:00
Sebastian Dröge
cc1feff99f mxfmux: Instead of releasing request pads on stop(), clear them only
Request pads are requested by applications and as such should only be released
by them again. Instead of releasing them when stopping the muxer, just clear
their state so that they can be used again when starting the muxer again.

https://bugzilla.gnome.org/show_bug.cgi?id=763862
2016-03-25 12:54:00 +02:00
Vineeth TM
8cdfb13658 bad: use new gst_element_class_add_static_pad_template()
https://bugzilla.gnome.org/show_bug.cgi?id=763081
2016-03-24 14:56:51 +02:00
Jimmy Ohn
74a90087c1 mxfdemux: Fix query memory leak
Peer query isn't being freed in case of GST_QUERY_SEEKING.

https://bugzilla.gnome.org/show_bug.cgi?id=763974
2016-03-21 10:44:02 +02:00
Sebastian Dröge
a032347c77 mxfmux: Fix typo in JPEG2000 colorspace
sRGC -> sRGB
2016-03-16 11:34:46 +02:00
Sebastian Dröge
129b04fad0 mxftypes: Generate UUIDs according to RFC4122 version 4 (aka random)
Instead of fully random UUIDs, these should follow a scheme.
2016-01-29 23:39:26 +01:00
Sebastian Dröge
4321fd94a1 mxfmetadata: Properly write video line map data as an array of 32 bit integers 2016-01-29 21:09:44 +01:00
Sebastian Dröge
4d13ef1034 mxfmetadata: DMSchemes in the Preface is a required field
Even if it has 0 entries.
2016-01-29 20:58:27 +01:00
Sebastian Dröge
9c39e6769d mxful: Fix Content Storage UL 2016-01-29 18:41:52 +01:00
Sebastian Dröge
e222f28bf3 mxfmetadata: Best effort values must be written and if unset must contain the distinguished value
It's invalid to not write them at all.
2016-01-29 18:28:03 +01:00
Sebastian Dröge
070d4312a8 mxful: Add missing OperationalPattern UL, which fixes an off-by-one with the others 2016-01-29 17:36:11 +01:00
Sebastian Dröge
2f40450d8e mxfmux: Our body partition is always complete and closed
We have no metadata in it.
2016-01-29 17:07:08 +01:00
Sebastian Dröge
5f3e444aff mxfmux: Use IndexSID of 2 instead of 1
Some tools complain if essence and index have the same SID.
2016-01-29 17:02:32 +01:00
Sebastian Dröge
cd17ea1070 mxfmux: Rewrite body partition pack on EOS and mark it as complete/closed 2016-01-29 17:02:32 +01:00
Sebastian Dröge
cd2a8036f2 mxfmpeg: Write the correct essence container UL for all codecs 2016-01-28 18:54:29 +01:00
Sebastian Dröge
45048662a1 mxfmpeg: Write version number into the picture essence coding UL 2016-01-28 18:54:29 +01:00
Sebastian Dröge
e48c5ed816 mxfmux: Write a timecode track into the source package too 2016-01-28 18:54:29 +01:00
Sebastian Dröge
3df615a503 mxfmux: Write This Generation UID into the Identification metadata
It's required according to the standard and we forgot to actually write it to
the file although we stored it in the data structures.
2016-01-28 15:38:45 +01:00
Sebastian Dröge
3a72574c59 mxfmetadata: Add workaround for ffmpeg only writing one Video Line Map value
https://ffmpeg.org/pipermail/ffmpeg-devel/2016-January/188202.html
2016-01-28 15:29:44 +01:00
Sebastian Dröge
b6696122a0 mxftypes: Don't store pointers in stack allocated guints
This works usually in this place, unless the compiler optimizes things in
interesting ways in which case it causes stack corruption and crashes later.

The compiler in question here is clang with -O1, which seems to pack the stack
a bit more and causes writing to the guint as pointer to overwrite map.memory,
which then later crashes during unmapping of the memory.
2016-01-07 18:13:08 +02:00
Sebastian Dröge
5a1953b31f mxfmetadata: Initialize boolean to FALSE to fix valgrind warning
Seems to be a false warning though.
2016-01-07 18:13:08 +02:00
Vineeth TM
7c42ba97d7 plugins-bad: Fix example pipelines
rename gst-launch --> gst-launch-1.0
replace old elements with new elements(ffmpegcolorspace -> videoconvert, ffenc_** -> avenc_**)
fix caps in examples

https://bugzilla.gnome.org/show_bug.cgi?id=759432
2015-12-15 10:30:49 +00:00
Sebastian Dröge
7ae23d13c8 mxfdemux: Only pre-set position for exactly the same essence track
The edit rate is only supposed to be the same in a source package, but there
might be multiple source packages with the same essence container. As such
just comparing the body/index SID is not sufficient.
2015-12-10 12:47:17 +02:00
Sebastian Dröge
39aa2aaa39 mxfdemux: Only pre-set the track position if it's for the same body/index SID 2015-12-10 12:27:04 +02:00
Sebastian Dröge
f2eaa68c90 mxfdemux: Only access the index table if it has enough elements 2015-12-09 16:55:00 +02:00
Sebastian Dröge
6e06f8c936 mxfdemux: Use keyframe information from index table segments if available
We don't implement keyframe detection for all codecs and this will allow us to
implement better seeking.
2015-12-09 16:49:30 +02:00
Sebastian Dröge
b504672fc4 mxfdemux: Collect all index table segments after finding the random index pack
That way we always have the index table information available, especially the
keyframe-ness of all buffers.
2015-12-09 16:33:39 +02:00
Sebastian Dröge
6d367d6b48 mxfdemux: Fix handling of IndexTableSegments
This was completely broken before and could only work on a very constrained
set of files. After these changes it should work except for situations where
PTS != DTS, which is not handled at all in mxfdemux currently.

https://bugzilla.gnome.org/show_bug.cgi?id=759118
2015-12-09 16:33:39 +02:00
Sebastian Dröge
c82d702985 mxftypes: Fix parsing of index table segments 2015-12-08 20:24:59 +02:00
Sebastian Dröge
41e500356f mxfmux: Handle aggregation with NULL buffers without crashing 2015-12-08 18:23:02 +02:00
Sebastian Dröge
a02708f924 mxfmux: Add FIXME about enforcing that all tracks in a source package have the same edit rate
The standard requires this and also the index table segments are not going to
work otherwise.
2015-12-08 16:45:33 +02:00
Sebastian Dröge
df7209a1c5 mxfmux: Write index table segments
But only for the first essence track, and once for every keyframe every 2
seconds.
2015-12-08 13:50:44 +02:00
Sebastian Dröge
1addfcc0b2 mxfmetadata: Fix static local tag for index sid 2015-12-08 10:14:41 +02:00
Sebastian Dröge
47da7565ce mxftypes: Add function to serialize an index table segment to a buffer 2015-12-08 10:14:41 +02:00
Sebastian Dröge
01f0d16db3 mxfmux: Index table segments must not use the primer pack
According to S377-1-2009c 9.2 the local tags must not be resolved from the
primer pack, which as a result means that there can't be any other tags than
statically assigned ones.
2015-12-08 10:14:41 +02:00
Edward Hervey
fe45de837c mxfmux: Remove more dead code
Coverity CID #1328818
2015-12-07 13:49:49 +01:00
Sebastian Dröge
2ab188bf29 mxfmux: Don't copy input buffers, just append them to the header 2015-12-04 18:06:30 +02:00
Sebastian Dröge
8541424d34 mxfmux: Error out if we get a timeout during live mixing
We can't handle that but need complete streams without gaps.
2015-11-21 01:56:46 +05:30
Sebastian Dröge
73beb1834e mxfmpeg: Use the correct sound essence compression UL for MP3
There's one for MPEG 1 Layer 1 and one for Layer 2 and 3. We previously
had the second for Layer 1 and 2 and nothing for Layer 3, which was wrong.
2015-11-21 01:56:46 +05:30
Sebastian Dröge
adb01a23da mxfmpeg: Set the essence container UL byte 13 to 0x10 for h264
0x04 signifies a MPEG elementary stream but according to RP2008, 0x10 should
be used for a h264 byte-stream. This also fixes compatibility of our files
with ffmpeg.
2015-11-21 01:56:46 +05:30
Sebastian Dröge
04a5eee15e mxfmux: Remove some dead code that could never be called
Coverity CIDs #1328818, #1328819, #1328820.
2015-10-27 16:32:48 +02:00
Sebastian Dröge
4cdc83fe5d mxfmux: Remove empty set/get_property()
We can add them again if we ever add properties.
2015-10-23 18:58:41 +03:00
Sebastian Dröge
d6a5e4ff16 mxfmux: Port to GstAggregator 2015-10-23 18:58:15 +03:00
Sebastian Dröge
8b3953b887 mxfmux: Set GC essence element UL version to 0x01
ffmpeg otherwise rejects it and the spec is not 100% clear about that.
2015-10-23 16:38:22 +03:00
Sebastian Dröge
cb5c1e8fd4 mxf: Reorder CFLAGS and LIBS 2015-10-23 16:31:49 +03:00
Sebastian Dröge
0b48144f07 mxfmux: Set KAG size to 1
We're not aligning our output in any way, and 0 is invalid.
2015-10-21 19:54:15 +03:00
Sebastian Dröge
8b15b609d2 mxfmux: Don't let the header partition's prev_partition point forward to the footer 2015-10-21 19:54:15 +03:00
Sebastian Dröge
a1e240ca6b mxftypes: Fix generation of operational pattern UL 2015-10-21 19:54:15 +03:00
Sebastian Dröge
f11a3ccf9d mxfmpeg: h264 is always byte-stream inside MXF 2015-10-21 19:54:15 +03:00
Sebastian Dröge
d571b4f8fa mxfmux: Don't leak SEEK events when dropping them 2015-10-21 19:54:15 +03:00
Sebastian Dröge
770d94f4b5 mxfvc3: The wrapping is the 15th byte of the essence container UL, not the 16th
In other mappings it is the 16th though.
2015-10-21 19:54:15 +03:00
Sebastian Dröge
41982e6ccf mxfdemux: If seeking to the remaining parts of the file fails on EOS, consider the stream done
Without this we would run this while loop forever, always seeking again for
the same stream.
2015-10-21 19:54:15 +03:00
Sebastian Dröge
9af6a1a617 mxf: Re-enable mxfmux element 2015-10-21 19:54:15 +03:00
Sebastian Dröge
d388655756 mxfjpeg2000: Fix caps
There is no fields field anymore.
2015-10-21 19:54:15 +03:00
Sebastian Dröge
9c9dd9d369 mxfmux: Don't fail SEGMENT events 2015-10-21 19:54:15 +03:00
Sebastian Dröge
38e75d93dc mxfmux: Push stream-start and caps event before segment event
And don't push the caps event during instance initialization already.
2015-10-21 19:54:15 +03:00
Sebastian Dröge
5d7367ef47 mxfaes-bwf: Format is unsigned if it's 1 byte per channel
... not 1 byte per block.
2015-10-21 19:54:15 +03:00
Luis de Bethencourt
8899efae60 Update references to decodebin
Update old references for decodebin2 to decodebin.
2015-05-08 13:54:08 +01:00
Guillaume Desmottes
da113b5ad7 mxf: fix descriptor leak
Free the existing descriptor array, if any, before replacing it.

Fix leaks with the
validate.file.playback.scrub_forward_seeking.test-mpeg2-mp3_mxf scenario.

https://bugzilla.gnome.org/show_bug.cgi?id=748580
2015-04-28 11:53:52 -03:00
Tim-Philipp Müller
699452ef31 Remove obsolete Android build cruft
This is not needed any longer.
2015-04-26 18:59:32 +01:00
Guillaume Desmottes
4d790dae67 mxfdemux: fix memory leak
Reset the internal segment before freeing it.

mxf_index_table_segment_parse() allocates data inside the segment
(like segment->delta_entries) which have to be freed using
mxf_index_table_segment_reset().

https://bugzilla.gnome.org/show_bug.cgi?id=746803
2015-04-04 19:47:40 +01:00
Mark Nauwelaerts
32e87b1024 mxfdemux: resurrect some flow return handling
https://bugzilla.gnome.org/show_bug.cgi?id=744572
2015-03-28 18:22:29 +01:00
Jan Schmidt
f150cf2d2e Remove a bunch of silly ';;' typos at the end of lines 2015-03-12 01:33:03 +11:00
Luis de Bethencourt
9909d1f770 mxfdemux: remove unneeded values
No need to store the GstFlowReturn when we can check if it is not OK directly
2015-02-18 19:27:46 +00:00
Luis de Bethencourt
4d43472c2b mxfdemux: renaming GstFlowReturn variable
Having a variable named ret in a static void function is very confusing since
this usually is to store what the function will return.
2015-02-18 19:26:43 +00:00
Luis de Bethencourt
b7e0c7a163 mxfdemux: remove ignored value
Value stored in ret will be ovewritten in the next iteration of the loop. Which
means it is never used.

Plus a style issue to make gst-indent happy and allow the commit.
2015-02-18 18:00:54 +00:00
Mathieu Duponchelle
631663b854 mxfdemux: Use IndexTableSegments.
This speeds up seeking drastically.
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=732294
2014-12-14 12:53:55 +01:00
Vineeth T M
14acb6fb37 gst: remove unnecessary GLIB_DISABLE_DEPRECATION_WARNINGS
There are unnecessary definitions for disabling deprecation warnings.
Since GLIB_DISABLE_DEPRECATION_WARNINGS is not needed anymore in these files,
removing the same.

https://bugzilla.gnome.org/show_bug.cgi?id=737559
2014-10-02 10:51:35 +03:00
Sebastian Rasmussen
e79e96e59d mxfmux: Avoid taking unnecessary ref
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=733123
2014-07-16 16:47:21 +02:00
Thiago Santos
b8d87c11ab mxfdemux: remove unread last_flow variable
it isn't necessary anymore and is already unused
2014-05-27 07:42:46 -03:00
Sebastian Dröge
a3489ffa83 mxfdemux: Compare positions to find the earliest pad, not flow returns 2014-05-27 12:24:43 +02:00
Thiago Santos
ae839d8dc2 mxfdemux: use GstFlowCombiner
Removes flow return combination code to use the newly added GstFlowCombiner

https://bugzilla.gnome.org/show_bug.cgi?id=709224
2014-05-26 23:29:43 -03:00
Tim-Philipp Müller
f8d63c5ad9 mxfdemux: post error message when erroring out on unsupported essence wrapping 2014-05-14 00:25:09 +01:00
Vincent Penquerc'h
60d7e45cab mxf: fix MP2 case
Testing mpegversion when mpegaudioversion was likely meant.

Similar tests in sys/androidmedia/gstamcaudiodec.c also test
mpegaudioversion with the same conditional code.

Coverity 206071
2014-04-21 13:23:46 +01:00
Vincent Penquerc'h
d111287995 mxfmux: guard against dividing by 0
Use a placeholder value in that case, it's better than crashing.

Coverity 1139697
2014-04-21 13:23:46 +01:00
Vincent Penquerc'h
52981d5a4a mxfdemux: guard against NULL non source components
This component is dereferenced, and later code checking for
NULL in particular cases implies it can be NULL. This likely
does not fix the coverity warning as it was seeing another
path setting component to NULL explicitely, but this was
spotted by looking at:

Coverity 1139736

Which is actually OK from what I can see since the actual
dereference of the explicit NULL pointer will not happen
if the condition that led to the NULL pointer assignment
is met, since the assignment and defeference have mutually
exclusive tests.
2014-04-21 09:24:00 +01:00
Edward Hervey
3d6265a9f5 mxfdemux: Fix copy/paste error
We want to check whether the rate is different. We check changes in
numerator *and* denominator.

CID #1139631
CID #1139642
2014-04-16 16:25:29 +02:00
Edward Hervey
be859d02a6 mxf: Handle fraction parsing failure
And properly cleanup/reset the segment before returning on errors

CID #206012
2014-04-16 16:19:47 +02:00
Edward Hervey
fa72b4c870 mxf: Remove useless check
a guint will always smaller or equal to the maximum value it can
contain

CID #206049
2014-04-16 16:12:02 +02:00
Vincent Penquerc'h
172c398127 mxf: avoid dereferencing NULL mapping data pointer
Also unref buffers on error, as it seems to be done in one, but
not all, error paths.

The NULL pointer part is Coverity 206112

https://bugzilla.gnome.org/show_bug.cgi?id=727889
2014-04-16 16:08:38 +02:00
Tim-Philipp Müller
39dc1f0ebb mxfdemux: guard against NULL material track
Just to be on the safe side.
2014-04-08 16:53:41 +01:00
Tim-Philipp Müller
6e764e5b11 mxfdemux: implement simple KEY_UNIT seeking
If a KEY_UNIT seek was requested, adjust segment
start to position of the key frame.
2014-04-08 14:37:34 +01:00
Tim-Philipp Müller
4898a51afe mxfdemux: fix seeking, send data starting from a key unit
Fixes multiple seeking issues. When doing ACCURATE or normal
non-KEYUNIT seeks, mxfdemux would just send data from the
edit unit that covered the seek position, whether that's
a keyframe or not. Decoders would only output things from
the next keyframe then, which means there's a gap between
the start of the segment and the first decoded data in
some cases. In combination with gst-editing-services this
might result in a frozen picture for the duration of that
gap at the beginning (if videorate fixes up the first
buffer's start timestamp to cover the entire gap), or
a black frame (if no videorate is used and videomixer
fills the gap). Also fixes A/V sync issue when requesting
a KEYUNIT seek.
2014-04-08 13:26:49 +01:00
Vincent Penquerc'h
8e580ea6f1 mxf: fix stop date parsing using the wrong input
Coverity 1139645
2014-04-07 13:54:50 +01:00
Sjoerd Simons
f6da7ea8bb mxfdemux: Don't go into pull mode when the sequential flag is set
When the scheduling query results has GST_SCHEDULING_FLAG_SEQUENTIAL set
in its flags don't go into pull mode to prevent over-eager seeking.

https://bugzilla.gnome.org/show_bug.cgi?id=722934
2014-01-24 22:14:47 +01:00
Sebastian Dröge
6812f96de4 gst: Don't swap start/stop for negative rates in the SEGMENT query 2013-07-29 12:14:08 +02:00
Sebastian Dröge
6b78fa336d mxfdemux: Implement SEGMENT query 2013-07-29 11:02:54 +02:00
Sebastian Dröge
46e85b4a6c mxfdemux: Add support for group-id in the stream-start event 2013-07-23 10:33:31 +02:00
Sebastian Dröge
e51cd4fe2f gst: Add better support for static plugins 2013-04-15 15:59:22 +02:00
Stefan Sauer
2991e1ed48 mfxdemus: update todo (ther eis a muxer) 2013-04-11 10:06:23 +02:00
David Schleef
65cb59912b mxfdemux: Use %03u for format in gst_pad_create_stream_id_printf() 2013-03-25 18:57:32 -07:00
David Schleef
6005ab322d mxfdemux: Add a second MXF UL for uncompressed audio 2013-03-14 14:41:38 -07:00
David Schleef
f0ab12fe89 mxfdemux: Ignore missing metadata descriptors 2013-03-14 14:41:37 -07:00
Tim-Philipp Müller
dee6536421 mxfdemux: fix taglist leak
Don't leak demuxer tag list.
2013-02-11 20:24:14 +00:00