Commit graph

7142 commits

Author SHA1 Message Date
Vincent Penquerc'h
5b786ce5b7 interlace: fix negotiation with fixed framerate downstream
https://bugzilla.gnome.org/show_bug.cgi?id=762924
2016-03-24 14:54:36 +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
Aleksander Wabik
d8e681bb63 h264parse, h265parse: fix handling of downstream force-key-unit events
The parser handles the downstream force-key-unit event incorrectly,
it tries to parse it as an upstream force-key-unit event, does not
check the return value, and then uses uninitialized memory in
"all_headers" boolean variable.

https://bugzilla.gnome.org/show_bug.cgi?id=763793
2016-03-17 19:24:32 +00:00
Sebastian Dröge
a032347c77 mxfmux: Fix typo in JPEG2000 colorspace
sRGC -> sRGB
2016-03-16 11:34:46 +02:00
Tim-Philipp Müller
5ec337f8ae tsdemux: add video/x-h265 to template caps 2016-03-12 15:44:54 +00:00
Jan Schmidt
6de7f0c0fa mpegts: Don't leave freed programs in the hash table
When the sub-class claims a program for later freeing, make
sure it's not left in the hash table, or it can cause crashes on shutdown.

Make sure tsdemux frees any program it has kept around at shutdown
if it wasn't freed already.

https://bugzilla.gnome.org/show_bug.cgi?id=763503
2016-03-12 03:32:32 +11:00
Sreerenj Balachandran
92f4eb45ab videoparsers: h265: Fix segfault while transforming hevc to nal aligned bytestream
Create temporary ParseFrame and copy the nal size buffer region
for each nal unit like we did for h264.

https://bugzilla.gnome.org/show_bug.cgi?id=763494
2016-03-11 17:34:03 +02:00
Edward Hervey
5ebf1d477d mpegvideoparser: Handle non-hierarchical profiles again
This is a regression from since mpegvideoparser was switched to
use the codecparsing library.

The problem is that the high bit of the profile_and_level is used
to specify non-hierarchical profiles and levels. Unfortunately we
were discarding that information.

Expose that escape bit, and use it in the element

https://bugzilla.gnome.org/show_bug.cgi?id=763220
2016-03-09 15:18:42 +01:00
Edward Hervey
215c9eb71a tsdemux: Don't reset/recalculate segments with accurate seeks
When dealing with accurate seeks, we must send out a segment which
is exactly what is requested.

https://bugzilla.gnome.org/show_bug.cgi?id=763262
2016-03-08 15:13:40 +01:00
Aurélien Zanelli
d87177b69b mpegtspacketizer: handle early PTS conversion when a group has been found
In some cases, the PTS might be smaller than the first observed PCR
value which causes element to apply wraparound leading to bogus
timestamp. To solve this, we only apply it if the PTS-PCR difference is
greater that 1 second to be sure that it's a real wraparound.

Moreover, using unsigned 32 bits values to handle wrapover could end up
with bogus value, so it use pts value to handle it.

Also, convert pcr time to gst time before comparing it to pts.
Since refpcr is expressed in PCR time base while pts is expressed in GStreamer
time.

https://bugzilla.gnome.org/show_bug.cgi?id=743259
2016-03-03 00:50:15 +11:00
Sreerenj Balachandran
cf7056a312 videoparsers: h264: Disable passthorugh mode enabling
Enabling passthorugh mode is causing multiple issue:
For nal aligned multiresoluton streams, passthrough mode
make h264parse unable to advertise the new resoultions.
Also causing issues while parsing MVC streams which have two
separate layers (base-view and non-base-view).

This fix is only a temporary workaround.

For MVC, proper fixes needed in many places:
(handle prefix nal unit, handle non-base-view slice nal extension,
fix the picture_start detection for multi-layer-mvc streams etc)

https://bugzilla.gnome.org/show_bug.cgi?id=758656
2016-02-29 12:35:58 +02:00
Sebastian Dröge
019bc67837 sdpdemux: Set caps to application/x-rtp instead of application/x-unknown as returned by the SDP helpers
The SDP helpers can't know if this is going to be RTP, SRTP, or ....

https://bugzilla.gnome.org/show_bug.cgi?id=762860
2016-02-29 12:03:43 +02:00
Sebastian Dröge
cbfbc6ed88 sdpdemux: Add pads with the correct names in case an rtpbin is used
They're supposed to be stream_%u and not recv_rtp_src_%u_%u_%u.

https://bugzilla.gnome.org/show_bug.cgi?id=762860
2016-02-29 12:03:43 +02:00
Sebastian Dröge
fd42320ec1 dataurisrc: Don't assume that get_current_caps() returns non-NULL caps after has_current_caps()
Remove calls to gst_pad_has_current_caps() which then go on to call
gst_pad_get_current_caps() as the caps can go to NULL in between. Instead just
use gst_pad_get_current_caps() and check for NULL.

https://bugzilla.gnome.org/show_bug.cgi?id=759539
2016-02-23 18:17:42 +02:00
Tim-Philipp Müller
a3019ffb63 aiffparse: fix negotiation errors with multi-channel files
Set fallback channel layout on files with more than two
channels. Not clear where to retrieve the real layout from
or what the default layout is for AIFF files, the spec
only seems to specify some layout for up to 6 channels
and the file in question doesn't have a CHAN chunk.

https://bugzilla.gnome.org/show_bug.cgi?id=676425
2016-02-21 12:20:10 +00:00
Tim-Philipp Müller
5b5398d613 win32: remove outdated build cruft
This hasn't been touched for generations, doesn't work,
and is just causing confusion. We also don't want to
maintain these files manually.
2016-02-21 10:34:56 +00:00
Edward Hervey
ab31900b64 tsparse: Fix per-program-pad pushing
This fixes a couple of issues regarding the output of (request)
per-program pads output:

We would never push out PAT sections (ok, that was one reallly stupid
mistake. I guess nobody ever uses this feature ...).

In the case where the PMT section of a program was bigger than one
packet, we would only end up pushing the last packet of that PMT. Which
obviously results in the resulting stream never containing the proper
(complete) PMT.

The problem was that the program is only started (in the base class)
after the PMT section is completely parsed. When dealing with single-program
pads, tsparse only wants to push the PMT corresponding to the requested
program (and not the other ones). tsparse did that check by looking
at the streams of the program...
... but that program doesn't exist for the first packets of the initial
PMT.

The fix is to use the base class program information (if it parsed the
PAT it already has some information, like the PMT PID for a given program)
if the program hasn't started yet.
2016-02-19 18:12:59 +01:00
Edward Hervey
00a1879d65 tsparse: Use GstFlowCombiner
In addition to the fact that it's a sane thing to do for multi-source
pad elements, it also avoids the situation where just using a request
pad (and not the main static pad) would result in the processing
stopping.
2016-02-19 18:04:23 +01:00
Vineeth TM
ee8a5455d0 mpegtsbase: Refactor code to check for subclass seek handling
If subclass is not able to handle seek event, then there is no need to
stop streaming and send flush events. We should simply return FALSE

https://bugzilla.gnome.org/show_bug.cgi?id=758516
2016-02-17 10:51:07 +02:00
Vineeth TM
6676ed6cb0 mpegtsbase: Add condition to check for non working negative rate
tsdemux is not able to handle negative playback rates.
But in mpegtsbase, the same check is not being done.
added a check to not handle negative rate while seeking unless
the same is handled upstream.

https://bugzilla.gnome.org/show_bug.cgi?id=758516
2016-02-17 10:51:07 +02:00
Tim-Philipp Müller
f649e85bc9 rtp: move RTP H.265 payloader/depayloader to -good
https://bugzilla.gnome.org/show_bug.cgi?id=761606
2016-02-16 00:33:50 +00:00
Stian Selnes
e3f9e854f0 netsim: Add netsim element
Resurrected from the Farstream repository and given an
overhaul to fix races, deadlocks etc.

https://bugzilla.gnome.org/show_bug.cgi?id=756252
2016-02-12 10:08:06 +00:00
Luis de Bethencourt
682bce33a5 gstrtph265depay: keep consistency with rtph264depay
Use gst_rtp_drop_meta() and the same function prototype for
gst_rtp_copy_meta() to keep consistency with the RTP elements in
gst-plugins-good
2016-02-05 17:53:30 +00:00
Luis de Bethencourt
463ea1a9c7 rtph265depay: fix termination of access unit
Only consider the access unit complete when the next-occurring VCL NAL unit
has the first bit after its NAL unit header equal to 1.
2016-02-05 14:04:50 +00:00
Luis de Bethencourt
63af4649c6 h264parse: remove unused mview_mode value
Since commit b77f8e172a the new value
assigned to mview_mode hasn't been used. That commit changed the following
"if" check to an "else if", which means the original value of mview_mode
is used.
2016-02-04 12:50:47 +00:00
Matthew Waters
2a49811721 h265parse: avoid sending unnecessary downstream caps queries/events
h265 versions of the following commits:
f352691a04
try the current caps before querying downstream
72bc7d7f73
increase caps equality check for no codec_data

https://bugzilla.gnome.org/show_bug.cgi?id=761014
2016-02-04 18:19:40 +11:00
Matthew Waters
72bc7d7f73 h264parse: increase caps equality check for no codec_data
When converting from avc to byte-stream, there will not be any codec_data
in the src caps.  Remove it before the equality check to avoid sending caps
events downstream on every SPS/PPS change.

https://bugzilla.gnome.org/show_bug.cgi?id=761014
2016-02-04 18:07:57 +11:00
Matthew Waters
f352691a04 h264parse: try the current caps before querying downstream
If we have a stream that contains an unchanging SPS/PPS for every video frame,
we don't need to to constantly query downstream for it's supported caps if the
current caps are compatible with the negotiated caps.

https://bugzilla.gnome.org/show_bug.cgi?id=761014
2016-02-04 18:07:47 +11:00
Tim-Philipp Müller
fdb45d84fa docs: remove some leftover 'Since 0.10.x' markers 2016-02-03 21:16:18 +00:00
Tim-Philipp Müller
a2d3231ec7 debugutils: use generic marshaller 2016-02-03 21:13:58 +00: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
Aurélien Zanelli
5fd3511859 videoparse: initialize update_size to FALSE when updating info
Otherwise, behavior will be undefined when no strides/offsets are set
and it will likely go wrong.

https://bugzilla.gnome.org/show_bug.cgi?id=760270
2016-01-28 14:48:11 -05:00
Nicolas Dufresne
acb7205f91 videoparse: Fix framesize calculation
When the framesize is not specified, we try and calculate a size from
the strides and offset information. This was done with the sum of
offsets + the size of the last frame. That is just wrong method. We also
need to account for video meta that may be flipping two planes. An
example is if you convert I420 to YV12 by flipping the two last offsets.

https://bugzilla.gnome.org/show_bug.cgi?id=760270
2016-01-28 14:48:11 -05:00
Sebastian Dröge
80c72169c6 gdpdepay: Add ts-offset property to adjust buffer timestamps 2016-01-28 19:38:22 +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
Aurélien Zanelli
fd33314f03 videoparse: use decide_allocation to check if downstream supports videometa
If yes, we add them to each output buffers and we avoid frame copy.

https://bugzilla.gnome.org/show_bug.cgi?id=760270
2016-01-28 10:02:55 -05:00
Aurélien Zanelli
354f16a5ca rawparse: add 'decide_allocation' vfunc to let subclass parse an allocation query
And so send an allocation query. This could be used to check whether
downstream element supports some metas or not.

https://bugzilla.gnome.org/show_bug.cgi?id=760270
2016-01-28 10:02:54 -05:00
Aurélien Zanelli
6e8278c51e rawparse: use size of buffer we got from adapter
Otherwise position in stream could be wrong if subclass 'pre_push_frame'
method changes the buffer size.

https://bugzilla.gnome.org/show_bug.cgi?id=760270
2016-01-28 10:02:54 -05:00
Aurélien Zanelli
a90f35e14b videoparse: add properties to set framesize, strides and planes offsets
To make parser work with image having non-standard strides, plane
offsets or with padding between images.
For now, since element doesn't check for videometa, we can't directly
push buffers when these properties are set so it convert the frame
in the pre_push_buffer method to remove any custom padding.

https://bugzilla.gnome.org/show_bug.cgi?id=760270
2016-01-28 10:02:54 -05:00
Aurélien Zanelli
04d59ffd4d rawparse: rename 'set_buffer_flags' vfunc to 'pre_push_buffer'
to allow subclass to change other fields of the buffer.

https://bugzilla.gnome.org/show_bug.cgi?id=760270
2016-01-28 10:02:54 -05:00
Aurélien Zanelli
cf25e09b1a videoparse: cache video info in instance
To avoid initializing and filling video info each time we need it.

https://bugzilla.gnome.org/show_bug.cgi?id=760270
2016-01-28 10:02:54 -05: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
Matthew Waters
87031b14cb videoaggregator: don't do caps processing that is not overridable
Allows the subclass to completely override the chosen src caps.

This is needed as videoaggregator generally has no idea exactly
what operation is being performed.

- Adds a fixate_caps vfunc for fixation
- Merges gst_video_aggregator_update_converters() into
  gst_videoaggregator_update_src_caps() as we need some of its info
  for proper caps handling.
- Pass the downstream caps to the update_caps vfunc

https://bugzilla.gnome.org/show_bug.cgi?id=756207
2016-01-27 20:36:25 +11:00
Vineeth TM
e389211aa5 h265parse: Fix buffer leak when sps is not present
When sps data is NULL, the buffer allocated and mapped is not being freed.
In this scenario there is no need to allocate the buffer as we are supposed to return NULL.

https://bugzilla.gnome.org/show_bug.cgi?id=761070
2016-01-25 10:07:55 -03:00
Vineeth TM
6a35a4018e h265parse: Fix buffer memory leak.
While setting caps, codec_data buffer is mapped, but not being unmapped
leading to memory leaks.

https://bugzilla.gnome.org/show_bug.cgi?id=761070
2016-01-25 10:07:55 -03:00
Sebastian Dröge
8a1fa31c67 audio: Move audioaggregator base class to a library
It's useful enough already to be used in other elements for audio aggregation,
let's give people the opportunity to use it and give it some API testing.

https://bugzilla.gnome.org/show_bug.cgi?id=760733
2016-01-22 12:39:48 +02:00
Hyunjun Ko
a274299f48 mpegtsmux: set non-0 payload length in PES header if video ES packet is small enough
https://bugzilla.gnome.org/show_bug.cgi?id=748507
2016-01-19 19:32:27 +00:00
Hyunjun Ko
f9ef150652 mpegtsmux: reset pes_bytes_written when starting to write new PES packet
In case of an unbounded packet (video usually), pes_bytes_written was
no reset.

https://bugzilla.gnome.org/show_bug.cgi?id=748507
2016-01-19 19:19:38 +00:00
Tim-Philipp Müller
ab5aab60a9 mpegtsmux: add support for H.265/HEVC video
https://bugzilla.gnome.org/show_bug.cgi?id=744367
2016-01-19 17:08:50 +00:00
Luis de Bethencourt
63ffe374ab rtph265depay: fix unneeded sub-buffer creation
We create a sub-buffer just to copy over its metas and then throw it
away immediately, just use the original input buffer directly.
2016-01-15 16:10:04 +00:00
Luis de Bethencourt
6f8f82164a rtph265pay: add "send VPS/SPS/PPS with every key frame" mode
It's not enough to have timeout or event based VPS/SPS/PPS information
sent in RTP packets. There are some scenarios when key frames may appear
more frequently than once a second, in which case the minimum timeout
for "config-interval" of 1 second for sending VPS/SPS/PPS isn't enough.
It might also be desirable in general to make sure the VPS/SPS/PPS is
available with every keyframe (packet loss aside), so receivers can
actually pick up decoding immediately from the first keyframe if
VPS/SPS/PPS is not signaled out of band.

This commit adds the possibility to send VPS/SPS/PPS with every key frame.
This mode can be enabled by setting "config-interval" property to -1. In
this case the payloader will add VPS, SPS and PPS before every key (IDR)
frame.

https://bugzilla.gnome.org/show_bug.cgi?id=757892
2016-01-15 15:57:41 +00:00
Luis de Bethencourt
31a7ad77b6 rtph265pay: change config-interval property type from uint to int
This way we can use -1 as special value, which is nicer than MAXUINT.

https://bugzilla.gnome.org/show_bug.cgi?id=757892
2016-01-15 15:19:47 +00:00
Luis de Bethencourt
3fd44b2dde videosegmentclip: fail to set_caps if problem in caps structure
gst_video_segment_clip_set_caps () should return FALSE if there was a
problem reading the framerate values from the caps structure.
2016-01-15 11:51:15 +00:00
Thiago Santos
f94079c1a9 frei0rmixer: replace accept-caps with caps query
It wants to check if upstream can produce a certain format,
accept-caps might only check if the next element can produce it.
2016-01-11 17:00:17 -03:00
Bob Holcomb
cb520dce26 mpegtsmux: fix reserve bits so they are 1's
The MPEG standard (ISO-13880-1) says the reserve bits need to be set
to one (2.1.64). This is causing transport streams to fail validation
on some systems.

https://bugzilla.gnome.org/show_bug.cgi?id=760127
2016-01-09 16:38:04 +00: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
Hyunjun Ko
1e5eb72532 sdpdemux: replace duplicated codes to call new base sdp apis
https://bugzilla.gnome.org/show_bug.cgi?id=745880
2015-12-31 17:15:55 +02:00
Tim-Philipp Müller
9a20a7c77b pcapparse: don't crash on 0-sized packets
https://bugzilla.gnome.org/show_bug.cgi?id=756573
2015-12-23 23:14:17 +00:00
Tim-Philipp Müller
384987341b assrender, dvbsuboverlay: fix example pipelines in docs 2015-12-19 21:25:49 +00:00
Vineeth TM
10ed707b60 pnmenc: Fix wrong logic leading to memory mishandling
While encoding the frame in ASCII mode, per component four bytes are needed
and after every 20 bytes, a \n will be added. So the calculation should be
size = size * (4 + 1 / 20). This should exclude the header being written.
Since header is also being included in the calculations, memory mishandlings
are happening.

https://bugzilla.gnome.org/show_bug.cgi?id=759520
2015-12-17 10:26:48 +01:00
Dave Craig
88d7beb921 videoparsers: Check for NULL return value of gst_pad_get_current_caps()
https://bugzilla.gnome.org/show_bug.cgi?id=759503
2015-12-16 10:08:43 +01:00
Vineeth TM
720b9bef05 ivtc: Fix value memory leak
gvalue variable should be unset instead of reset.

https://bugzilla.gnome.org/show_bug.cgi?id=759525
2015-12-16 09:59:39 +01:00
Vineeth TM
c5130b1dfe combdetect: Fix value memory leak
gvalue variable should be unset instead of reset.

https://bugzilla.gnome.org/show_bug.cgi?id=759523
2015-12-16 09:58:29 +01:00
Vineeth TM
7c65a5ccd5 pnmdec: Fix scanner memory leak
For corrupted files, scanner memory is being leaked.

https://bugzilla.gnome.org/show_bug.cgi?id=759522
2015-12-16 09:56:33 +01:00
Vineeth TM
319d9efb2d pnmdec: Fix buffer memory leak
In case of corrupted file, s->buf allocated is not being freed

https://bugzilla.gnome.org/show_bug.cgi?id=759522
2015-12-16 09:56:33 +01:00
Vineeth TM
6cb6903f82 pnmenc: Fix string memory leak
header being allocated is not freed resulting in leak

https://bugzilla.gnome.org/show_bug.cgi?id=759520
2015-12-16 09:42:42 +01:00
Vineeth TM
1b2a9a9c84 gdppay: Fix buffer memory leak
outbuffer being allocated is not being pushed to queue for EOS event and hence
should be freed.

https://bugzilla.gnome.org/show_bug.cgi?id=759519
2015-12-16 09:40:39 +01:00
Vineeth TM
50978ccd1a yadif: Fix illegal memory access
When applying the spatial prediction, there is an illegal access of -1 index of array.
Hence adding a condition to avoid this.

https://bugzilla.gnome.org/show_bug.cgi?id=759518
2015-12-16 09:33:25 +01:00
Vineeth TM
eb7deb4418 yadif: Fix gvalue memory leak
gvalue variable should be unset instead of reset.

https://bugzilla.gnome.org/show_bug.cgi?id=759518
2015-12-16 09:32:25 +01:00
Luis de Bethencourt
ef53eabee3 geometrictransform: add headers with example launch lines
Add description headers for all geometrictransform elements so we can have
gst-launch-1.0 example launch lines for all of them.
2015-12-15 12:01:00 +00: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
Vivia Nikolaidou
dc9cf44697 videoframe-audiolevel: Fix possible division by zero
In update_rms_from_buffer(), division by "frames" wasn't checking whether
"frames" is zero.

CID 1341519.

https://bugzilla.gnome.org/show_bug.cgi?id=759443
2015-12-14 12:54:59 +01: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
Nicolas Dufresne
fe116092cd h26xparse: Resend PPS/SPS after seek
This is to support byte-stream decoder that does not remember the
PPS/SPS after a flush. This is not needed by all decoders, but is
harmless for those that do remember.

https://bugzilla.gnome.org/show_bug.cgi?id=758405
2015-12-05 19:05:26 -05: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
Edward Hervey
a21c2618c5 tsdemux: Expose DVB Subpicture as subpictures
For some reason we were considering them as private data.
2015-12-02 14:15:04 +01:00
Edward Hervey
531117b7df tsdemux: Push GAP events *after* deactivating old programs
The order in which program switch must happen is:
1) drain all data on old pads (but don't push EOS)
2) add new pads (but don't push any data on them)
3) Push EOS and remove old pads
4) Start pushing data on new pads

There was one caveat in this implementation, which is that when
we activate a sparse pad (step 2) we would push a GAP event. The problem
is that, while being an event, it is actually *data*.

We therefore need to make sure pushing those GAP event is done at the step
we start pushing data.

https://bugzilla.gnome.org/show_bug.cgi?id=750402
2015-12-02 14:15:04 +01:00
Edward Hervey
7336294635 tsdemux: Make sure old streams are drained before switching
Before we add any streams, make sure we drain all streams. This ensures
there's consistency that only "new" data will be pushed on buffers once
the new pads are added

https://bugzilla.gnome.org/show_bug.cgi?id=750402
2015-12-02 14:15:04 +01:00
Edward Hervey
14e6d2d427 mpegtsdemux: Allow deactivation of programs to be delayed
When changing programs, the order of events needs to be the following:
* add pads from new program
* send EOS on old pads
* remove old pads
* emit 'no-more-pads'

Previously tsdemux was not doing that, and was first deactivating and
removing old pads before adding new ones.

We fix this by allowing subclasses of mpegtsbase to be able to handle
themselves the deactivation of programs. In this case tsdemux will
properly deactivate it once it has activated the new program.

https://bugzilla.gnome.org/show_bug.cgi?id=750402
2015-12-02 14:15:04 +01:00
Sebastian Dröge
92d926d733 videoframe-audiolevel: Fix compilation of static plugin and some compiler warnings
Use G_GSIZE_FORMAT for gsize instead of %ld and make sure that the plugin name
is a valid C identifier, i.e. contains no spaces or dashes.
2015-12-02 14:36:42 +02:00
Vivia Nikolaidou
978bcd7181 alevel: New audio/video level element
The videoframe-audiolevel element acts like a synchronized audio/video "level"
element. For each video frame, it posts a level-style message containing the
RMS value of the corresponding audio frames. This element needs both video and
audio to pass through it. Furthermore, it needs a queue after its video
source.

https://bugzilla.gnome.org/show_bug.cgi?id=748259
2015-12-02 12:52:57 +02:00
Paolo Pettinato
ce67e8934d pcapparse: Forward FLUSH_STOP events downstream too
https://bugzilla.gnome.org/show_bug.cgi?id=758913
2015-12-01 20:03:29 +02:00
Tim-Philipp Müller
b79cfc68cb tsmux: fix wrong log message level
ERROR level is debugging left-over.
2015-12-01 17:07:44 +00:00
Ravi Kiran K N
6b643fdff6 id3mux: write private data tag
Handle "PRIV" tag in id3mux. Write owner
identifier and private data and add to the
id3v2 frame.

https://bugzilla.gnome.org/show_bug.cgi?id=758728
2015-11-27 12:16:57 +00:00
Vineeth T M
b328fbe31a spu-pgs: Fix array memory leak
https://bugzilla.gnome.org/show_bug.cgi?id=758517
2015-11-24 15:23:00 +00:00
Tim-Philipp Müller
01f23d88f3 audiomixer: register function name for debugging just once
Not every time aggregate is called...
2015-11-24 15:17:30 +00: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
Luis de Bethencourt
49ccb72b47 docs: update gst-launch-0.10 lines
Update references to gst-launch-0.10 to gst-launch-1.0
2015-11-19 17:25:01 +00:00
Reynaldo H. Verdejo Pinochet
86ec812429 Remove unnecessary NULL checks before g_free()
g_free() is NULL-safe
2015-11-18 16:05:42 -08:00
Olivier Crête
d673e7cd58 autoconvert: Add support for bufferlists 2015-11-16 21:53:48 -05:00
Olivier Crête
8e75bea378 autoconvert: Always give a valid reply to internal caps queries
Caps queries can always have a valid reply, either the filter or ANY.
If the caps are ANY, then accept-caps always returns TRUE.
2015-11-13 17:21:17 -05:00
Nicolas Huet
d65d8657e6 mpegtsdemux: fix section_data leak
If packet->payload_unit_start_indicator is true and pointer 0, there is no
discontinuity check. Therefore there could be a previous section not complete
that need to be cleared.

https://bugzilla.gnome.org/show_bug.cgi?id=758010
2015-11-13 09:37:53 +01:00
Luis de Bethencourt
fc23467152 tsdemux: remove memory leak
The values of channel_mapping are copied by gst_codec_utils_opus_create_caps ()
but it doesn't free or take ownership of the g_new0 allocated memory. This
needs to be freed before going out of scope.

CID 1338692
2015-11-12 12:08:15 +00:00
Luis de Bethencourt
7bec955fe0 mpegtsmux: remove unnecessary buffer check
buf surely isn't NULL inside the block conditional to a buffer size bigger
than (G_MAXUINT16 - 3). Plus gst_buffer_unref() checks if the buffer is
NULL and does nothing if it is.

CID 1338693
2015-11-12 11:42:40 +00:00
Nicolas Huet
21a025c2a1 tsdemux: fix pending buffers leak when flushing
https://bugzilla.gnome.org/show_bug.cgi?id=757895
2015-11-11 15:35:54 +01:00
Etienne Peron
a336181ef5 tsdemux: Fix pad leak when the pad is never exposed
If tsdemux never receives data for a stream, the corresponding pad will never
be added and stream->active will remain FALSE. When the stream is removed, the
pad will not be unreffed and will be leaked.

https://bugzilla.gnome.org/show_bug.cgi?id=757873
2015-11-11 15:32:30 +01:00
Sreerenj Balachandran
c3b28700d9 ivfparse: Fix the wrong width & height parsing of vp9 bitstream
The current implementation for detecting the resolution changes
on key frames is based on vp8 bitstream alignment. Avoid this
width and height parsing for vp9 bitstream, which requires proper
frame header parsing inorder to detect the resolution change (Fixme).

https://bugzilla.gnome.org/show_bug.cgi?id=757825
2015-11-11 15:30:25 +01:00
Matthew Waters
ac9a2971bd tsdemux: provide our own definition of log2()
The log2 function/macro doesn't exist when targetting android API < 18 (or MSVC
< 2013) whereas our current baseline is API 9.
2015-11-11 18:57:55 +11:00
Edward Hervey
1a1bfb19d4 dvbsuboverlay: Don't send flush events
It is up to the element handling the seek to send flush events
downstream, otherwise we end up with a situation where upstream
would get unexpected GST_FLOW_FLUSHING
2015-11-06 19:29:49 +00:00
Tim-Philipp Müller
734d5a79c5 Fix code indentation 2015-11-06 19:29:49 +00:00
Branko Subasic
4c482befbd rtponviftimestamp: use stream time for timestamp
The Onvif Streaming Specification specifies that the NTP timestamps
in the Onvif extension header indicaes the absolute UTC time associated
with the access unit. But by using running time we can not achieve that,
since a frame's running time depends on the played interval, whether a
non-flushing is done, etc. Instead we have to use the stream time.

https://bugzilla.gnome.org/show_bug.cgi?id=757688
2015-11-06 12:55:25 -05:00
Linus Svensson
6f6fe37ed9 rtponviftimestamp: Update ntp-offset and d/e-bits with a GstEvent
It is now possible to update the currently used ntp-offset with a
custom serialized downstream event. The element will read the ntp-offset
property when doing the state transition from READY to PAUSED and
use that offset until it receives a "GstNtpOffset" event, which also
has a "ntp-offset" attribute in that it's structure. In case the
property is not set and no event has been received, the element will
guess the npt-offset with help of the clock. If no clock can be
retrieved, the element will error out and stop the data flow.

The same event is also used for updating the D/E-bits in the RTP
extension header. The discont flag in a buffer can be set whenver a
live/network source looses a frame, but that is not the type of
discontinuity that the onvif extension header should reflect. The
header is mainly used for playback of a track concept, in which
gaps can be present, and it's those kind of gaps that should be
highlighted with the D- and E-bits.

https://bugzilla.gnome.org/show_bug.cgi?id=757688
2015-11-06 12:55:25 -05:00
Linus Svensson
a58826292e rtponviftimestamp: Do not rearange order of data
If a buffer or a buffer list is cached, no events serialized with the
data stream should get through. The cached buffers and events should
be purged when we stop flushing.

https://bugzilla.gnome.org/show_bug.cgi?id=757688
2015-11-06 12:55:25 -05:00
Tim-Philipp Müller
edab4deb3a glshader, tsdemux: simplify code
Jus use _delete_link() instead of _remove_link() + _free1()
2015-11-06 13:00:55 +00:00
Sebastian Dröge
ee2e082a27 tsdemux: Don't create an incomplete OpusHead but set all the other caps fields instead
OpusHead is optional, the other fields are not.

https://bugzilla.gnome.org/show_bug.cgi?id=757152
2015-11-03 20:35:41 +02:00
Sebastian Dröge
2609c394d7 tsmux: Simplify Opus caps parsing by using codecutils helpers
https://bugzilla.gnome.org/show_bug.cgi?id=757152
2015-11-03 20:35:41 +02:00
Sebastian Dröge
ecf7c7742c tsdemux/mux: Add support for GstAudioClippingMeta for Opus
https://bugzilla.gnome.org/show_bug.cgi?id=757153
2015-11-03 20:35:41 +02:00
Sebastian Dröge
e75a9edff1 tsmux: Add support for Opus
https://bugzilla.gnome.org/show_bug.cgi?id=757049
2015-11-03 20:35:41 +02:00
Sebastian Dröge
1e785a3778 tsdemux: Add support for Opus
Code partially based on
  https://git.videolan.org/?p=ffmpeg.git;a=commit;h=74141f693ded2fbf75af56fff309d2db35183635
and based on the spec draft at
  https://wiki.xiph.org/OpusTS

Makes it possible to demux
  http://www.obe.tv/Downloads/opus.ts

https://bugzilla.gnome.org/show_bug.cgi?id=757049
2015-11-03 20:35:41 +02:00
Sebastian Dröge
23a9e4323a tsmux: Don't leak buffer in error cases
https://bugzilla.gnome.org/show_bug.cgi?id=757049
2015-11-03 20:35:41 +02:00
Sebastian Dröge
4e803d0bb3 tsmux: Call prepare function for each collected buffer
Not when clipping buffers, as that doesn't happen for every buffer.

https://bugzilla.gnome.org/show_bug.cgi?id=757049
2015-11-03 20:35:41 +02:00
Olivier Crête
f0cbeb4140 audioaggregator: Improve log messages
Make the level of log messages saner and improve some.
2015-11-02 19:40:28 -05:00
Luis de Bethencourt
fa4b58f1cd mpegtsmux: use GST_STIME_ARGS for GstClockTimeDiff
No need to manually handle negative values of best->dts in
GST_DEBUG_OBJECT. Use GST_STIME_ARGS for this.
2015-11-02 17:02:51 +00:00
Sreerenj Balachandran
d7a167c5b4 ivfparse: Add vp9 support
Differentiate the vp8/vp9 bitstream based on fourcc.

https://bugzilla.gnome.org/show_bug.cgi?id=757251
2015-10-29 13:23:22 +00:00
Olivier Crête
0e2880ac2e liveadder: Make latency property be a uint in millisecs
This restores roughly the same behaviour as the old liveadder element.
Except that the latency now also includes the output-buffer-duration.

https://bugzilla.gnome.org/show_bug.cgi?id=757050
2015-10-28 18:52:24 -04:00
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
George Kiagiadakis
f1ced59ccb geometrictransform: rename gemetric math functions to have their symbols namespaced
Otherwise those symbols can conflict with external libraries when
linking everything statically for mobile targets.

Use the gst_gm_ prefix, short for gst geometric math.

https://bugzilla.gnome.org/show_bug.cgi?id=756882
2015-10-26 16:51:06 +01: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
Reynaldo H. Verdejo Pinochet
801c27689e pnmdec: drop frame in case of _handle() failure
Allows baseclass to handle it from there

Related to:

https://bugzilla.gnome.org/show_bug.cgi?id=756563
2015-10-18 14:53:01 -07:00
Reynaldo H. Verdejo Pinochet
ec5648763d pnmdec: propagate input state after parsing
Store and copy input state fields when setting the
output state of the decoder. Avoids problems like
the framerate set by an upstream element being ignored

Related to:

https://bugzilla.gnome.org/show_bug.cgi?id=756563
2015-10-18 14:53:01 -07:00
Reynaldo H. Verdejo Pinochet
4b5e2f68a3 pnmdec: completely reset parsing state at flush
Makes sure the mngr struct reflects a clean state
for the next frame, avoiding failures like:

https://bugzilla.gnome.org/show_bug.cgi?id=756563
2015-10-18 14:53:01 -07:00
Tim-Philipp Müller
b204d3b95e liveadder: latency property is an uint64 in audiomixer 2015-10-12 09:42:37 +01:00
Olivier Crête
305e5c7ac3 liveadder: Remove plugin, replace by compat subclass of audiomixer
New subclass with a similar behaviour as the old liveadder, but
a slightly different API as the latency is in nanoseconds, not
milliseconds. Also, the new liveadder has a effective latency that
is latency + output-buffer-duration. In practice, just setting a non-zero
latency with the new audiomixer gives you the right behavior in 99% of the
cases.
2015-10-11 11:04:38 +01:00
Vineeth TM
3b89dd4768 audioaggregator: Fix build error
Build error due to wrong argument type in debug message
aagg->priv->offset and next_offset are of type int64, but uint64
formatter is being used in logs. Changing all those to int64

https://bugzilla.gnome.org/show_bug.cgi?id=756065
2015-10-07 11:20:35 +01:00
Vineeth TM
43ce0c3142 id3tag: fix sample memory leak
When getting sample from taglist, the memory is not being freed resulting in memory leak.

https://bugzilla.gnome.org/show_bug.cgi?id=756070
2015-10-05 12:07:06 +01:00
Sebastian Dröge
f5dd41d710 Update GLib dependency to 2.40.0 2015-10-02 22:24:19 +03:00
Vineeth TM
8c9ca808af gstreamer: bad: Fix memory leaks when context parse fails
When g_option_context_parse fails, context and error variables are not getting free'd
which results in memory leaks. Free'ing the same.

And replacing g_error_free with g_clear_error, which checks if the error being passed
is not NULL and sets the variable to NULL on free'ing.

https://bugzilla.gnome.org/show_bug.cgi?id=753854
2015-10-02 17:24:35 +03:00
Sebastian Dröge
30d3db5bab audiovisualizers: Fix nodist_HEADERS 2015-10-02 11:31:50 +03:00
Sebastian Dröge
40a908b1d9 audioaggregator: Select the initial offset based on the start segment position
instead of always using 0. Otherwise we might output a lot of silence in the
beginning instead of outputting from the relevant position.

https://bugzilla.gnome.org/show_bug.cgi?id=755623
2015-10-01 17:40:59 +02:00
Luis de Bethencourt
9e97267ca0 audiovisualizers: merge audiovisualizer base classes
These plugins now use the audiovisualizer base class in pbutils

https://bugzilla.gnome.org/show_bug.cgi?id=742875
2015-10-01 16:07:25 +01:00
Tim-Philipp Müller
5bf7432f81 mpegtsmux: fix downstream key unit events handling with hlssink
The buffer timestamps in the collect function will already be
running time, don't try to convert them again to running time,
this would yield CLOCK_TIME_NONE now that the segment is shifted
to account for negative dts.

This fixes x264enc ! mpegtsmux ! hlssink, which was broken
because mpegtsmux would send a downstream key unit event with
running time NONE and then hlssink would immediately send
another one upstream and it would just be a flood of force
keyframe events in both directions after the first one. This
would then break hlssink because it uses multifilesink in
next-file=key-unit-event mode, and starting a new file after
every few kB does not work well for HLS.
2015-09-30 00:43:26 +01:00
Luis de Bethencourt
c8d4e85f9e vc1parse: add break to switch case
Even though all cases inside VC1_STREAM_FORMAT_ASF are goto or
g_assert_not_reached(), add a break at the end to appease Coverity.

CID #1320706
2015-09-29 13:34:15 +01:00
Stefan Sauer
a198e55b31 Revert "midi: add an ALSA MIDI sequencer source"
This reverts commit cd7f4e5247.
2015-09-28 15:31:08 +02:00
Antonio Ospite
cd7f4e5247 midi: add an ALSA MIDI sequencer source
The alsamidisrc element allows to get input event from ALSA MIDI
sequencer devices, and possibly convert them to sound using some
downstream element like fluiddec.

https://bugzilla.gnome.org/show_bug.cgi?id=738687
2015-09-28 13:21:24 +02:00
Jan Schmidt
7d27dc7e23 Revert "dvdspu: render to AYUV overlay"
This reverts commit 5016a73190.
2015-09-27 00:26:07 +10:00
Jan Schmidt
23771469ea Revert "dvdspu: render to ARGB overlay instead of AYUV"
This reverts commit dd3e9deb2a.
2015-09-27 00:26:07 +10:00
Jan Schmidt
a31978643c Revert "dvdspu: handle frame size event from upstream"
This reverts commit 46aaaa6c30.
2015-09-27 00:24:17 +10:00
Jan Schmidt
de568c4896 Revert "dvdspu: cache overlay composition"
This reverts commit aabb8a1a68.
2015-09-27 00:24:17 +10:00
Jan Schmidt
259a7bbf6c Revert "dvdspu: improve negotiation of overlay composition"
This reverts commit 1899e2a099.
2015-09-27 00:24:15 +10:00
Arnaud Vrac
7a7f358e6d dvdspu: fix pgs palette colors
U and V were inverted

https://bugzilla.gnome.org/show_bug.cgi?id=755239
2015-09-26 23:29:55 +10:00
Arnaud Vrac
1899e2a099 dvdspu: improve negotiation of overlay composition
Support negotiating GstVideoOverlayComposition downstream
while not providing it upstream.

https://bugzilla.gnome.org/show_bug.cgi?id=663750
2015-09-26 23:29:15 +10:00
Arnaud Vrac
aabb8a1a68 dvdspu: cache overlay composition
This avoids rendering the overlay buffer for each video frame.

https://bugzilla.gnome.org/show_bug.cgi?id=663750
2015-09-26 23:22:44 +10:00
Arnaud Vrac
46aaaa6c30 dvdspu: handle frame size event from upstream
An IDX file or codec_data normally contains the original frame size of
the video. Allow upstream to provide this information by sending a
custom event, which will allow scaling the overlay correctly.

https://bugzilla.gnome.org/show_bug.cgi?id=663750
2015-09-26 23:18:38 +10:00
Arnaud Vrac
a41e7c5bec dvdspu: allow suffix in dvd event name to allow multiple sticky dvd events
https://bugzilla.gnome.org/show_bug.cgi?id=663750
2015-09-26 23:18:32 +10:00
Arnaud Vrac
dd3e9deb2a dvdspu: render to ARGB overlay instead of AYUV
https://bugzilla.gnome.org/show_bug.cgi?id=663750
2015-09-26 23:17:58 +10:00
Arnaud Vrac
5016a73190 dvdspu: render to AYUV overlay
Instead of only supporting writing SPU data directly to YUV frames,
render the SPU data to an intermediate AYUV overlay buffer. The overlay
data is then attached to the video frame if downstream supports overlay
composition, otherwise the AYUV overlay is blended to the video frame.

For the PGS format, the overlay buffer size is set to the size of the
Composition Window, and its position in the overlay composition is set
to the window position. The objects to render are now cropped when the
cropping flag is set.

For the Vobsub format, the overlay buffer size is set to the size of the
Display Area.

Once rendered, the overlay composition rectangle is now moved and scaled
to fit the video output size, to avoid clipping.

https://bugzilla.gnome.org/show_bug.cgi?id=663750
2015-09-26 23:17:03 +10:00
Arnaud Vrac
35e6d79d40 dvdspu: pass dvdspu argument to set_caps functions
https://bugzilla.gnome.org/show_bug.cgi?id=663750
2015-09-26 23:16:51 +10:00
Arnaud Vrac
344fe03f09 dvdspu: skip unneeded reading of RLE data
The RLE data was being read for dumping the SPU image even when the
DUMP_FULL_IMAGE macro was not set.

https://bugzilla.gnome.org/show_bug.cgi?id=663750
2015-09-26 23:16:37 +10:00
Tim-Philipp Müller
fccee018f3 audiomixer: fix deadlock when G_DISABLE_ASSERT is not defined
This makes the audiomixer unit test time out in master.
Broke with 587e7c4
2015-09-26 10:21:41 +01:00
Sebastian Dröge
bed2c6820f audioaggregator: Stop using deprecated gst_segment_to_position() 2015-09-26 00:17:55 +02:00
Sebastian Dröge
3c44d3eca4 audioaggregator: Only skip the remaining part of a GAP buffer
We might've queued up a GAP buffer that is only partially inside the current
output buffer (i.e. we received it too late!). In that case we should only
skip the part of the GAP buffer that is inside the current output buffer, not
also the remaining part. Otherwise we forward this pad too far into the future
and break synchronization.
2015-09-18 18:00:05 +02:00
Tim-Philipp Müller
fade5a6d8a dvdspu: pgs: fix printf format/argument mismatch in debug statements
Fixes compiler warnings when extra debugging is enabled at compile time.
2015-09-17 19:57:16 +01:00
Jan Schmidt
e990e75e1e pcapparse: Hook up the recently added change_state vfunc.
The state change function was implemented, but not installed,
making the compiler complain about the unused function.
2015-09-18 00:29:51 +10:00
Jan Schmidt
587e7c4a23 Don't throw compiler warnings with G_DISABLE_ASSERT
Disable code that warns about unused variables when G_DISABLE_ASSERT
is defined, as it is in tarballs and pre-releases.
2015-09-18 00:29:51 +10:00
Tim-Philipp Müller
0cb160a685 intervideosink: render preroll frames as well
Derive from GstVideoSink so that preroll frames will automatically
get rendered too, unless the show-preroll-frame property is set to
FALSE. Fixes intervideosrc only picking up frames if intervideosink
is in PLAYING state.

https://bugzilla.gnome.org/show_bug.cgi?id=755049
2015-09-16 17:20:52 +01:00
Jan Schmidt
86a8ff50c0 dvbsuboverlay: Check if downstream supports GstVideoOverlayComposition.
Fix the negotiation of GstVideoOverlayComposition by checking
intersection with the peer caps, rather than just accept-caps,
which might only check the pad template.

https://bugzilla.gnome.org/show_bug.cgi?id=755113
2015-09-17 00:49:58 +10:00
Sebastian Dröge
637106e287 audioaggregator: Fix mixup of running times and segment positions
We have to queue buffers based on their running time, not based on
the segment position.

Also return running time from GstAggregator::get_next_time() instead of
a segment position, as required by the API.

Also only update the segment position after we pushed a buffer, otherwise
we're going to push down a segment event with the next position already.

https://bugzilla.gnome.org/show_bug.cgi?id=753196
2015-09-14 19:57:00 +02:00
Sebastian Dröge
97fe89f351 audioaggregator: Use stream time in the position query instead of segment position
https://bugzilla.gnome.org/show_bug.cgi?id=753196
2015-09-14 19:56:51 +02:00
Nirbheek Chauhan
cf786a9399 compositor: Ensure all arguments to CLAMP are signed int
If any of the arguments to CLAMP are unsigned integers, the comparison causes
an automatic conversion of the signed int to unsigned, which causes -1 to become
UINT_MAX and get clamped to the high value of the CLAMP instead of 0.

See 716 at http://c0x.coding-guidelines.com/6.3.1.8.html

Also add a test for this.

https://bugzilla.gnome.org/show_bug.cgi?id=754576
2015-09-04 23:32:36 +02:00
Olivier Crête
cf1d116b19 pcapparse: Reset state on flush and state changes
https://bugzilla.gnome.org/show_bug.cgi?id=753152
2015-08-31 14:42:27 -04:00
Nirbheek Chauhan
db49716c70 compositor: variables in clamp_rectangle() should be signed
x/y/w/h are signed integers. As can be seen in GstCompositorPad.
The prototype for clamp_rectangle was wrong. This commit reverts the change
and fixes the prototype.

This reverts commit bca444ea4a.
2015-08-29 17:27:45 +01:00
Tim-Philipp Müller
536e3742aa Fix file permissions of some files 2015-08-28 19:55:59 +01:00
Luis de Bethencourt
bca444ea4a compositor: remove check for below zero for unsigned value
CLAMP checks both if value is '< 0' and '> max'. Value will never be a negative
number since it is an unsigned integer. Removing that check and only checking if
it is bigger than max by using MIN().

CID 1320707
2015-08-28 15:21:13 +01:00
Sebastian Dröge
50fc332ab5 dvbsuboverlay: Fix caps memory leak by making static caps actually static
See https://bugzilla.gnome.org/show_bug.cgi?id=754157
2015-08-27 11:10:53 +03:00
Nicolas Dufresne
b392a6e3b9 h264parse/h265parse: Fix negotiation crash
As it's recursive, gst_pad_get_allowed_caps() may also return
empty for anything incompatible downstream. EMPTY is not valid caps
value for gst_caps_fixate(). This lead to assertion and then crash.
Ideally, the negotiate function should be re-factored to have a return
value, and we could make the negotiation fails earlier.

https://bugzilla.gnome.org/show_bug.cgi?id=754122
2015-08-26 10:56:07 -04:00
Nirbheek Chauhan
9b59bb8630 compositor: Actually use the output resolution for clamping
The obscured check in compositor was using the dimensions of the pad to clamp
the h/w of the pad instead of the output resolution, and was doing an incorrect
calculation to do so. Fix that by simplifying the whole calculation by using
corner coordinates. Also add a test for this bug which fell through the cracks,
and just skip all the obscured tests if the pad's alpha is 0.0.

https://bugzilla.gnome.org/show_bug.cgi?id=754107
2015-08-26 15:03:05 +03:00
Tim-Philipp Müller
54fc1ed5f4 tsdemux: fix latency handling again
The tsdemux latency should always be added to the minimum
latency (which is always a valid clock time value). The
"cleanup" in commit a1f709c2 made it so that it would not
be added if upstream reported 0 as minimum latency (as
e.g. udpsrc would). This broke playback of live mpeg-ts
streaming in some cases, leading to playback stutter due
to a too-small configured latency for the pipeline.

https://bugzilla.gnome.org/show_bug.cgi?id=751508
2015-08-24 10:46:31 +01:00
Guillaume Marquebielle
30d58f4688 liveadder: fix assertion when copying buffer region
In gst_live_adder_chain() function, calls to gst_buffer_copy_region() can lead
to assertion as 'offset + size <= bufsize' is not respected.
Indeed 'offset' and 'size' parameters are calculated through calling gst_live_adder_length_from_duration(),
and thus gst_util_uint64_scale_int_round().
Depending on the nearest integers, rounded values 'offset' and 'size' can then trigger the assertion.
This case mainly occurs when 'skip' value is > 0 in chain function process.

https://bugzilla.gnome.org/show_bug.cgi?id=753759
2015-08-18 16:37:09 -04:00
Thiago Santos
a6dc5e19a2 videoencoders: use template subset check for accept-caps
It is faster than doing a query that propagates downstream and
should be enough

Elements: openjpegenc, schroenc, webpenc, pnmenc
2015-08-17 14:39:44 -03:00
Thiago Santos
6517282af7 audioencoders: use template subset check for accept-caps
It is faster than doing a query that propagates downstream and
should be enough

Elements: faac, gsmenc, opusenc, sbcenc, voamrwbenc, adpcmenc, sirenenc
2015-08-17 10:07:54 -03:00
Olivier Crête
567b1e8c46 videoparsers: Use gst_base_parse_merge_tags()
Instead of squashing all upstream tags

https://bugzilla.gnome.org/show_bug.cgi?id=679768
2015-08-16 17:28:29 +01:00
Edward Hervey
7ea4a66b9f mpegtsdemux: Fix illogical comparision
A variable can't be two values at once. We want to stop if it's not the
actual ts *AND* not the other ts

CID #1316475
2015-08-16 12:56:56 +02:00
Thiago Santos
56b822f9f6 audiodecoders: use default pad accept-caps handling
Avoids useless check of downstream caps when handling an
accept-caps query

Elements: dtsdec, faad, gsmdec, mpg123audiodec, opusdec,
          sbcdec, adpcmdec, sirendec
2015-08-15 13:51:16 -03:00
Thiago Santos
a5ed877783 videodecoders: use default pad accept-caps handling
Avoids useless check of downstream caps when handling an
accept-caps query

Elements: daaladec, libde265dec, openjpegdec, rsvgdec, schrodec,
          webpdec, pnmdec, vmncdec, openexrdec
2015-08-15 13:51:16 -03:00
Luis de Bethencourt
51dfa3b135 rtph265depay: make sure we call handle_nal for each NAL
Call handle_nal for each NAL in the STAP-A RTP packet. This makes sure
we correctly extract the SPS and PPS.

https://bugzilla.gnome.org/show_bug.cgi?id=730999
2015-08-15 16:22:22 +01:00
Luis de Bethencourt
4075b1112c rtph265pay: Copy metadata in the payloader, but only the relevant ones
The payloader didn't copy anything so far, the depayloader copied every
possible meta. Let's make it consistent and just copy all metas without
tags or with only the video tag.

https://bugzilla.gnome.org/show_bug.cgi?id=751774
2015-08-15 14:45:37 +01:00
Luis de Bethencourt
5b2ddfb90c rtph265pay: Use GST_WARNING_OBJECT() instead of GST_WARNING()
https://bugzilla.gnome.org/show_bug.cgi?id=753228
2015-08-15 11:41:43 +01:00
Luis de Bethencourt
585e042fca rtph265pay: fix potential crash when shutting down
A race condition in the state change function may cause buffers to be
unreffed while they are still used by the streaming thread in
gst_rtp_h265_pay_send_vps_sps_pps() resulting in a crash. Chain up to the
parent class first in the state change function to make sure streaming
has stopped and only then free those buffers.

https://bugzilla.gnome.org/show_bug.cgi?id=741381
2015-08-15 11:34:31 +01:00
Jan Schmidt
fdac09d843 h264parse: Clear SPS info after processing.
The SPS struct might be filled out by a call to
gst_h264_parser_parse_subset_sps, which fills out
dynamically allocated data and requires a call
to gst_h264_sps_clear() to free it. Also make sure
to clear out any allocated SPS data when returning
an error.

https://bugzilla.gnome.org/show_bug.cgi?id=753306
2015-08-15 15:39:23 +10:00
Thiago Santos
8f855a8b78 pngparse: enable accept-intersect and accept-template flags on sinkpad
Do a quick check with the pad template caps as it is enough. Users
should have figured the appropriate full caps on a previous caps query

https://bugzilla.gnome.org/show_bug.cgi?id=753623
2015-08-14 13:42:59 -03:00
Thiago Santos
c4cd1ce4fd videoparsers: enable accept-template flag
Do a quick check with the pad template caps as it is enough. Users
should have figured the appropriate full caps on a previous caps query

https://bugzilla.gnome.org/show_bug.cgi?id=753623
2015-08-14 13:42:59 -03:00
Luis de Bethencourt
b3418759d9 rtph265pay: fix buffer leak when using SPS/PPS
Fixes a buffer leak that would occur if the pipeline was shutdown while a
SPS/PPS header was being created.

https://bugzilla.gnome.org/show_bug.cgi?id=741271
2015-08-14 15:08:10 +01:00
Luis de Bethencourt
fd665514ba rtph265depay: copy metadata in the depayloader, but only the relevant ones
The payloader didn't copy anything so far, the depayloader copied every
possible meta. Let's make it consistent and just copy all metas without
tags or with only the video tag.

https://bugzilla.gnome.org/show_bug.cgi?id=751774
2015-08-14 12:00:23 +01:00
Vineeth TM
6fb346717b spu-pgs: fix buffer and event leak
When playing mts files with embedded subtitles, the buffer is mapped,
but not unmapped at the end resulting in a memory leak.

Also unref event in handle_dvd_event as it takes ownership of the event.

https://bugzilla.gnome.org/show_bug.cgi?id=753539
2015-08-13 14:56:00 +01:00
Vineeth TM
0812437293 dvdspu: Fix event leaks
When playing mts files with embedded subtitles, there are few event leaks.
Events are supposed to be transfer full. So if not forwarding the event,
they need to be freed.

https://bugzilla.gnome.org/show_bug.cgi?id=753539
2015-08-13 14:38:03 +01:00
Luis de Bethencourt
397b5d06ec rtph265depay: checking if depay has sps/pps nals before insertion
Related to: https://bugzilla.gnome.org/show_bug.cgi?id=753430

https://bugzilla.gnome.org/show_bug.cgi?id=753228
2015-08-12 17:54:55 +01:00
Luis de Bethencourt
ef9b7ef60a rtph265depay: only update the srcpad caps if something else than the codec_data changed
h264parse and gstrtph264depay do the same, let's keep the behaviour
consistent. As we now include the codec_data inside the stream, this causes
less caps renegotiation.

https://bugzilla.gnome.org/show_bug.cgi?id=753228
2015-08-12 17:22:44 +01:00
Luis de Bethencourt
4edf2ac1c5 rtph265depay: PPS replaces old PPS if it has the same id
https://bugzilla.gnome.org/show_bug.cgi?id=753228
2015-08-12 16:51:18 +01:00
Luis de Bethencourt
021333a9fc rtph265depay: Insert SPS/PPS NALs into the stream
rtph264depay does the same and this fixes decoding of some streams with 32
SPS (or 256 PPS). It is allowed to have SPS ID 0 to 31 (or PPS ID 0 to 255),
but the field in the codec_data for the number of SPS or PPS is only 5
(or 8) bit. As such, 32 SPS (or 256 PPS) are interpreted as 0 everywhere.

This looks like a mistake in the part of the spect about the codec_data.
2015-08-12 16:34:43 +01:00
Luis de Bethencourt
fee3129d49 rtph265depay: implement process_rtp_packet() vfunc
For more optimised RTP packet handling: means we don't need to map the
input buffer again but can just re-use the mapping the base class has
already done.

Based on: https://bugzilla.gnome.org/show_bug.cgi?id=750235

https://bugzilla.gnome.org/show_bug.cgi?id=753228
2015-08-12 15:53:23 +01:00
Luis de Bethencourt
2d3dc2caa6 rtph265depay: Use GST_BUFFER_PTS() instead of GST_BUFFER_TIMESTAMP()
Switching to GST_BUFFER_TIMESTAMP() to be consistent with other rtp code.
2015-08-12 15:14:52 +01:00
Luis de Bethencourt
9379933607 rtph265depay: prevent trying to get 0 bytes from adapter
This causes an assertion and would lead to getting a NULL instead
of a buffer. Without proper checking this would easily lead to a
segfault.

Related to rpth264depay: https://bugzilla.gnome.org/show_bug.cgi?id=737199
2015-08-12 15:05:02 +01:00
Nicolas Dufresne
e531ea9ff0 frei0r: Fix setting string parameters
String parameters are expected to be passed as (f0r_param_string *),
which actually map to char**. In the filters this is evaluated as
(*(char**)param) which currently lead to crash when passing char*.

Remove the special case for string, all types, including char* as
passed as a reference.

https://phabricator.freedesktop.org/T83
2015-08-11 15:11:01 -04:00
Sreerenj Balachandran
a83dabd5e8 videoparsers: h265: Fix the frame start detection code
Check slice headers in between GST_H265_NAL_SLICE_TRAIL_N
and GST_H265_NAL_SLICE_RASL_R for frame start detection.

https://bugzilla.gnome.org/show_bug.cgi?id=753497
2015-08-11 11:34:36 +01:00
Sreerenj Balachandran
2775b202dc videoparsers: h265: Avoid skipping of EOS and EOB nals
EndOfSequence and EndOfBitstream nal units have size of 2 bytes.
Don't consider them as broken nals.

https://bugzilla.gnome.org/show_bug.cgi?id=753497
2015-08-11 11:34:36 +01:00
Tim-Philipp Müller
424426f486 asfmux: output TIME segment if we output a stream and won't seek back later
Check if downstream is seekable via a SEEKING query and output a
BYTE segment if we want to seek back to fix up the headers later,
but if we're streaming send a TIME segment instead (which goes
down better with e.g. asfmux ! rtpasfpay).

https://bugzilla.gnome.org/show_bug.cgi?id=719553
2015-08-08 16:19:09 +01:00
Sreerenj Balachandran
69becd734d h265parse: expose compatible profiles to downstream
Some video bitstreams report a too restrictive set of profiles. If a video
decoder was to strictly follow the indicated profile, it wouldn't support that
stream, whereas it could in theory and in practice. So we should relax the
profile restriction for allowing the decoder to get connected with parser.

https://bugzilla.gnome.org/show_bug.cgi?id=747613
2015-08-07 13:11:53 +02:00
Nicolas Dufresne
ef7a074fa0 rgb2bayer: Use mapped frame stride 2015-08-06 18:12:07 -04:00
Nicolas Dufresne
97a0d9d72d rgb2bayer: Protect against failing map 2015-08-06 18:11:53 -04:00
Nicolas Dufresne
6bd93bd7e5 bayer2rgb: Read stride from the video info 2015-08-06 18:04:58 -04:00
Nicolas Dufresne
7d6fd42726 bayer2rgb: Protect against failing map 2015-08-06 18:04:41 -04:00
Nicolas Dufresne
3757e507f3 pcapparse: Segment should start at base ts
Instead we would use cur_ts which matches the last TS store
in the buffer list.

https://bugzilla.gnome.org/show_bug.cgi?id=753037
2015-08-05 14:54:05 -04:00
Anders Jonsson
3fb2222470 camerabin2: Fix string typo
https://bugzilla.gnome.org/show_bug.cgi?id=753241
2015-08-05 09:15:07 -04:00
Jimmy Ohn
be714c7441 rawparse: fix duplicated format in handle_seek_pull
GstFormat variable are duplicated in handle_seek_pull function.
So we need to move this variable in condition statement.

https://bugzilla.gnome.org/show_bug.cgi?id=753243
2015-08-04 12:29:40 -03:00
Olivier Crête
10ef6403b6 audiointerleave: Avoid caps processing if not yet negotiated
https://bugzilla.gnome.org/show_bug.cgi?id=745768
2015-07-30 14:00:05 -04:00
Olivier Crête
3f2bc1e4b2 audioaggregator: On timeout, resync pads with not enough data
https://bugzilla.gnome.org/show_bug.cgi?id=745768
2015-07-30 14:00:05 -04:00
Olivier Crête
6efc106a67 aggregator: Queue "latency" buffers at each sink pad.
In the case where you have a source giving the GstAggregator smaller
buffers than it uses, when it reaches a timeout, it will consume the
first buffer, then try to read another buffer for the pad. If the
previous element is not fast enough, it may get the next buffer even
though it may be queued just before. To prevent that race, the easiest
solution is to move the queue inside the GstAggregatorPad itself. It
also means that there is no need for strange code cause by increasing
the min latency without increasing the max latency proportionally.

This also means queuing the synchronized events and possibly acting
on them on the src task.

https://bugzilla.gnome.org/show_bug.cgi?id=745768
2015-07-30 14:00:05 -04:00
Vineeth TM
09992f32dc h265parse: Avoid checking for Non Mandatory VPS NAL
VPS is not mandatory, and need not check for its presence before setting
the caps. Because of the check, in streams which don't have VPS,
sticky event mishandling happens.

https://bugzilla.gnome.org/show_bug.cgi?id=752807
2015-07-30 15:10:05 +01:00