Commit graph

6664 commits

Author SHA1 Message Date
Vincent Penquerc'h
1dd94be326 tsdemux: fix buffer timestamp not being in stream time
Timestamps should start at the segment start, rather than 0, so
we need to not subtract the first timestamp. This makes the sink
correctly account for running time when switching PMTs where a
stream starts not quite at zero, causing timing offsets that can
become noticeable and causing dropped frames after a few times.
2015-05-15 14:50:35 +01:00
Vincent Penquerc'h
4a219df304 tsdemux: accumulate previous segment base time 2015-05-15 14:49:04 +01:00
Vincent Penquerc'h
29fd6332a4 tsdemux: fix refcounting when applying a new PMT
A new program object is created to replace an existing one
in the programs hash table, so its refcount needs to match.

With the default of 0 refcount on creation, the next PAT
change will cause that refcount to be both incremented and
decremented (assuming the new PAT references that stream too),
which will cause the program to be destroyed.

https://bugzilla.gnome.org/show_bug.cgi?id=748412
2015-05-15 14:45:49 +01:00
Matthew Waters
0871b7b43d compositor: implement proper par handling
We were previously failing on different input and output par
2015-05-14 14:58:07 +10:00
Thiago Santos
d60c171ad2 mpegtsmux: the parent is provided in the function
No need to get it again
2015-05-13 13:35:14 -03:00
Lyon Wang
6adf3c2499 h263parse: fix custom picture format (CPFMT) parsing
In the H263 spec, CPFMT is present only if the use of a custom
picture format is signalled in PLUSEPTYPE and UFEP is "001",
so we need to check params->format and only if the value is
6 (custom source format) the CPFMT should be read, otherwise
it's not present and wrong data will be parsed.

When reading the CPFMT, the width and height were not
calculated correctly (wrong bitmask).

https://bugzilla.gnome.org//show_bug.cgi?id=749253
2015-05-13 11:51:20 +01:00
Matthew Waters
c519169052 compositor: fix rectangle obscure test to clamp against the output frame size
Rather than one of the input pad video info's.

The test checking this was not constraining the output frame size
to ensure that the out of frame stream was not being displayed.
2015-05-13 17:44:30 +10:00
Luis de Bethencourt
6a71b91c6e removesilence: remove gst_remove_silence_reset()
No need to call gst_remove_silence_reset() in gst_remove_silence_init() because
vad_new() already calls this function. Since there are no more uses of
_silence_reset(), we can remove it altogether.
2015-05-08 14:24:07 +01:00
Luis de Bethencourt
8899efae60 Update references to decodebin
Update old references for decodebin2 to decodebin.
2015-05-08 13:54:08 +01:00
Luis de Bethencourt
d1f7c0e6fe removesilence: update example launch line 2015-05-08 13:49:38 +01:00
Sreerenj Balachandran
3fae18b5d2 h264parse: Fix profile and level setting in caps
Don't use the apis in codec-utils to extract the profile and level
syntax elements since it is wrong if there are emulation prevention
bytes existing in the byte-stream data.

https://bugzilla.gnome.org/show_bug.cgi?id=747613
2015-05-04 09:30:05 +02:00
Thiago Santos
f9f6bbf4f5 wrappercamerabinsrc: handle when source creation fail
Remember to set the source to NULL state as adding it to the pipeline
will set it to the READY state.
2015-05-01 19:45:00 -03:00
Thiago Santos
fc4f95bb7c wrappercamerabinsrc: fix element linking order
Video source should be linked to videocrop and not to
videoconvert as it is done in the main linking path
2015-05-01 19:44:40 -03:00
Nirbheek Chauhan
1c60de8ad7 compositor: Only map the frame from a buffer if it will be used
It's a waste of resources to map it if it won't be converted
or used at all. Since we moved the frame mapping down, we need
to use the GST_VIDEO_INFO accessor macros now in the code above
that instead of the GST_VIDEO_FRAME accessor macros.

https://bugzilla.gnome.org/show_bug.cgi?id=746147
2015-05-01 11:27:55 +01:00
Nirbheek Chauhan
cc2de817ae compositor: use accessor macros for consistency
https://bugzilla.gnome.org/show_bug.cgi?id=746147
2015-05-01 10:57:08 +01:00
Nirbheek Chauhan
e0fd23cb23 compositor: Skip pads that are completely obscured by a higher zorder pad
For each frame, compare the frame boundaries, check if the format contains an
alpha channel, check opacity, and skip the frame if it's going to be completely
overwritten by a higher zorder frame. The check is O(n^2), but that doesn't
matter here because the number of sinkpads is small.

More can be done to avoid needless drawing, but this covers the majority of
cases. See TODOs. Ideally, a reverse painter's algorithm should be used for
optimal drawing, but memcpy during compositing is small compared to the CPU used
for frame conversion on each pad.

https://bugzilla.gnome.org/show_bug.cgi?id=746147
2015-05-01 10:56:32 +01:00
Sreerenj Balachandran
6fc55a997e h265parse: Fix source caps to report cropped dimensions
https://bugzilla.gnome.org/show_bug.cgi?id=747613
2015-04-30 21:49:56 +02:00
Sreerenj Balachandran
5770a96c8d h265parse: Fix the memory freeing of stored VPS nals
https://bugzilla.gnome.org/show_bug.cgi?id=747613
2015-04-30 21:49:17 +02:00
Sreerenj Balachandran
a70c4f319d h265parse: Fix profile, tier and level setting in caps
Don't use the apis in codec-utils to extract the profile,tier and level
syntax elements since it is wrong if there are emulation prevention
bytes existing in the byte-stream data.

https://bugzilla.gnome.org/show_bug.cgi?id=747613
2015-04-30 21:48:35 +02:00
Luis de Bethencourt
cf210bac27 rtjpeg: remove unused quality property 2015-04-30 10:50:19 +01:00
Luis de Bethencourt
b7ffc524cc mixmatrix: remove unused property enum items
These two properties have been there since the origin of the element but they
aren't used. Removing them.
2015-04-29 17:22:06 +01:00
Edward Hervey
93b19d06b6 aiff: Re-add noinst_HEADERS instruction
Was removed in the previous android cleanup commit
2015-04-29 10:56:24 +02:00
Tim-Philipp Müller
f0a9c246a3 gst: remove some unnecessary glib version checks
We require 2.32, no need to check for anything older
than that.
2015-04-28 16:02:27 +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
Guillaume Desmottes
94446498de tsdemux: fix taglist leak
If the stream which is about to be removed still has a ref on a tag list we
should drop it.

Fix a leak which was occasionally happening with the
validate.file.playback.change_state_intensive.tron_en_ge_aac_h264_ts scenario.

https://bugzilla.gnome.org/show_bug.cgi?id=748576
2015-04-28 14:58:03 +01:00
Jimmy Ohn
365375a1de mpegtspacketizer: fix find_subtable() return value
find_subtable() returns a pointer, so return NULL and
not FALSE when nothing is found.

https://bugzilla.gnome.org/show_bug.cgi?id=748527
2015-04-28 14:48:22 +01:00
Thiago Santos
2690cd33ce wrappercamerabinsrc: remove unused code
The structure is created and never used anymore. Remove it.
2015-04-27 21:14:09 -03:00
Thiago Santos
5e0e02553d wrappercamerabinsrc: use digitalzoom element
Replace videocrop ! videoscale ! capsfilter with the digitalzoom
bin that has the same pipeline internally and already updates
the capsfilter automatically when caps change, removing this code
from wrappercamerabinsrc and making it cleaner.
2015-04-27 21:14:09 -03:00
Thiago Santos
ca96378ebf digitalzoom: change videocrop parameters before passing caps event
Avoids one extra uneeded renegotiation if the elements are already
configured to their final property values when the caps event
goes through.

Also avoids hitting bug https://bugzilla.gnome.org/show_bug.cgi?id=748344
2015-04-27 21:14:02 -03:00
Thiago Santos
239cb53e06 digitalzoom: also skip internal pipeline in upstream caps query
To avoid going through our capsfilter which would limit the choices.
2015-04-27 21:13:55 -03:00
Thiago Santos
539db6f68b digitalzoom: prevent assertion when caps is any 2015-04-27 21:13:55 -03:00
Thiago Santos
3a70cf5667 camerabin: digitalzoom: create a bin element for digital zooming
It contains videocrop ! videoscale ! capsfilter and implements digital
zooming.

At this moment, it is a private element of the camerabin plugin.

This will remove some code used in wrappercamerabinsrc to make
code clearer and digitalzoom can potentially be used by other
applications in the future, it has nothing camerabin specific.
2015-04-27 21:13:47 -03:00
Luis de Bethencourt
d45a1253b1 mpegdemux: remove unused property enum item
The property enum item has been there since the origin of the element but it
has never been used. Removing it.
2015-04-27 14:56:13 +01:00
Luis de Bethencourt
925b65b02e Rename property enums from ARG_ to PROP_
Property enum items should be named PROP_ for consistency and readability.
2015-04-27 10:55:18 +01: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
Stefan Sauer
707b0ffcd6 audiovisualizer: fix the license from GPL to LGPL
This was a copy'n'paste buf in the initial commit done by myself.
2015-04-25 18:50:52 +02:00
Stefan Sauer
da29bdc71a audiovisualizer: fix the license from GPL to LGPL
This was a copy'n'paste buf in the initial commit done by myself.
2015-04-25 18:46:41 +02:00
Thiago Santos
c6f4e4cfd8 wrappercamerabinsrc: Rework cropping for zoom and dimension reduction
wrappercamerabinsrc has a videocrop element to be used for
zooming and for cropping when input caps is different when used
with the GstPhotography interface. The zooming part needs
the following elements:

capsfilter ! videocrop ! videoscale ! capsfilter

The capsfilters should always have the same caps to ensure the
zooming is done and preserves dimensions, unless when it is needed
to do more cropping due to input dimensions those caps
need to be modified accordingly to preserve the output dimensions.

This, however, makes it hard to get caps negotiation to work properly
as we need to have different caps in the capsfilters to account for
the extra cropping needed. It could be simple for fixed caps but it
gets tricky with unfixed ones.

To solve this, this patch splits the zooming and dimension reduction
cropping into 2 separate videocrop elements. The first one does
the dimension cropping, which is only needed when the GstPhotography
API is used and the source provides a caps that is different than
what is requested, while the second is dedicated to zoom crop only.

The first part of the pipeline goes from:

src ! videoconvert ! capsfilter ! videocrop ! videoscale ! capsfilter

to

src ! videocrop ! videoconvert ! capsfilter ! videocrop ! videoscale ! capsfilter

It might add an extra overhead in the image capture as the image might need
to be cropped twice but this can be solved by enabling videocrop to use
crop metas so only the later one does the real cropping.

It also makes the code a bit simpler.
2015-04-24 15:12:47 -03:00
Thiago Santos
524e536a91 wrappercamerabinsrc: remove obsolete comment
This is already handled in another place and doesn't make sense
in the function context anymore
2015-04-24 15:12:47 -03:00
Thiago Santos
7b834cb0b3 wrappercamerabinsrc: error out if source fails to prepare for capture
Post an error when preparing the image capture through photography
interface fails
2015-04-24 15:12:46 -03:00
Thiago Santos
0c04f2f0ff wrappercamerabinsrc: intersect instead of compare for equality
Intersect is enough to check if the requested caps are compatible
with what the source is going to provide. Equality will be too strict.
2015-04-24 15:12:46 -03:00
Thiago Santos
af1dda2ecd wrappercamerabinsrc: fix typo 2015-04-24 15:12:46 -03:00
Luis de Bethencourt
c944093d08 remove unused enum items PROP_LAST
This were probably added to the enums due to cargo cult programming and are
unused.
2015-04-24 16:48:26 +01:00
Luis de Bethencourt
e5d62b073b gaudi: don't run gaussian function if sigma is 0 2015-04-23 11:47:37 +01:00
Luis de Bethencourt
8305f14ded gaudi: fix to 30780db1
The second check for (factor == 0) creeped in the last commit.
Apologies.
2015-04-22 15:04:05 +01:00
Luis de Bethencourt
30780db15b gaudi: fix exclusion's factor range
Avoid dividing by zero when the factor is zero. Instead, output a buffer with
all color values as zero.
2015-04-22 14:55:33 +01:00
Luis de Bethencourt
1fee98f5dd gaudi: remove floor variable in solarize
Floor variable has no effect and it isn't worth it to have it adjustable.
2015-04-22 14:15:17 +01:00
Luis de Bethencourt
2fbbdb5529 gaudi: remove unused property 2015-04-22 14:06:53 +01:00
Thiago Santos
70193761b8 wrappercamerabinsrc: Reset zoom element caps to go to viewfinder mode
Avoids not-negotiated failures related to using image capture caps
still when adjusting to go back to viewfinder.
2015-04-21 10:00:44 -03:00
Thiago Santos
ef5b7ca93e wrappercamerabinsrc: fix leak of drain query
gst_pad_peer_query doesn't take ownership of the query object
2015-04-21 10:00:44 -03:00
Thiago Santos
b74770bd05 wrappercamerabinsrc: Refactor internal pipeline
Remove tee and output-selector and just link the source
pad to the outputs we want as needed.

The way we need to prioritize caps negotiation and allocation
queries depending on the mode enabled is too custom to be
handled using tee and output-selector.
This provides more flexibility and doesn't get in the way of proper
handling of negotiation and allocation queries.
2015-04-21 10:00:44 -03:00
Edward Hervey
8ba1fbbe64 h264parse: Remove dead code
The detection for missing format/alignment is done way before this
codepath is reached (at which point we have already decided of a
format and alignment).

CID #1232800
2015-04-20 14:35:19 +02:00
Luis de Bethencourt
fa4822a41b tsdemux: clean assignment typo
No need to set the value twice.

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

CID #295122
2015-04-20 11:30:28 +01:00
Luis de Bethencourt
f52cf2a7c4 tsdemux: remove dead code
position of GstSegment is an unsigned int64, it can never be below zero.

CID #1295123
2015-04-20 10:58:33 +01:00
Vineeth T M
3daa793494 fieldanalysis: exception when block width to 0
When block width property is set to 0, exception occurs.
This happens due to divide by zero errors in calculations.
block width property can never be 0. Hence adjusting the minimum value to 1.

https://bugzilla.gnome.org/show_bug.cgi?id=744188
2015-04-20 09:42:14 +01:00
Olivier Crête
b4219a3e63 mpegtsbase: Remove unused latency query code
The behavior changes based on the type of segment,
not on the liveness of the source.
2015-04-17 13:59:08 -06:00
Olivier Crête
a1f709c293 tsdemux: Cleanup latency query handling
The minimum latency is always 0 or more. And we should
requery upstream as it may have changed.
2015-04-17 13:59:08 -06:00
Edward Hervey
ed27244c03 mpegtspacketizer: Unify debug statements
Use 0x%04x for PIDs
2015-04-17 16:21:28 +02:00
Edward Hervey
b80ae9cdcd tsdemux: Unify duration querying code
And properly use it in the SEEKING query.

Fixes seeking with gst-play
2015-04-17 16:21:28 +02:00
Vincent Penquerc'h
d84d803431 mpegdemux: fix pad leak when not adding a new pad after no-more-pads 2015-04-16 13:35:40 +01:00
Vincent Penquerc'h
cb0eaeadfd tsdemux: fix segment position tracking for the general case
Different streams can have different PTS/DTS bases, and some
streams may not even have DTS.

https://bugzilla.gnome.org/show_bug.cgi?id=745102
2015-04-16 13:35:40 +01:00
Sebastian Dröge
9b50a12b52 h264parse: Don't unref buffer that was unreffed just a few lines before already 2015-04-15 21:07:59 +02:00
Olivier Crête
c4c9fe60b6 pcapparse: Take buffer directly from the adapter
No need to make a copy into a new buffer, just take the data
from the adapter.
2015-04-10 20:27:15 -04:00
Olivier Crête
a2b093af47 pcapparse: Produce GstBufferList 2015-04-10 20:27:15 -04:00
Thiago Santos
5a1c73a105 wrappercamerabinsrc: remove unused attribute and related pad probe
The variable was never set to true and can be removed along
with the probe in which it used to act
2015-04-10 16:23:25 -03:00
Vincent Penquerc'h
338bfe5e35 tsdemux: handle seeks with no target (ie, keep current position)
Such seeks are used to change playback rate and we do not want
to alter the position in that case, so we bypass the flush/seek
logic, and set things up so a new segment is scheduled to be
regenerated.

https://bugzilla.gnome.org/show_bug.cgi?id=735100
2015-04-09 15:44:20 +01:00
Vincent Penquerc'h
68f57d20b9 tsparse: fix timestamps not updating after a PMT change
The PCRs stay locked onto the same PID as before the change,
but the relevant PID has no reason to be the same after it.

https://bugzilla.gnome.org/show_bug.cgi?id=745102
2015-04-09 15:44:20 +01:00
Vincent Penquerc'h
ade79a9ad2 tsdemux: send new segment when a stream is added
This will happen when the PMT changes, replacing streams with
new ones. In that case, we need to accumulate the running time
from the previous chain in the segment base.

https://bugzilla.gnome.org/show_bug.cgi?id=745102
2015-04-09 15:44:20 +01:00
Vincent Penquerc'h
fc2460b331 tsdemux: keep track of current position
This allows seeking to correctly set the base on the segment.

https://bugzilla.gnome.org/show_bug.cgi?id=745102
2015-04-09 15:44:20 +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
Olivier Crête
34a921c31b audiomixer: Allow downstream caps with a non-default channel-mask
Instead of failing, take the downstream channel mask if the channel
count is 1.
2015-04-01 20:32:41 -04: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
Mark Nauwelaerts
b2d109242f mpegdemux: resurrect some flow return handling
https://bugzilla.gnome.org/show_bug.cgi?id=744572
2015-03-28 18:22:29 +01:00
Luis de Bethencourt
78ce8ff74f audioaggregator: check sink caps are valid 2015-03-24 16:18:22 +00:00
Luis de Bethencourt
cfdcb14730 Revert "audioaggregator: check sink caps are valid"
This reverts commit 6d4d0d1cdf.

Never put code with side effects into an assertion, it can be compiled out
2015-03-24 16:17:00 +00:00
Luis de Bethencourt
6d4d0d1cdf audioaggregator: check sink caps are valid
CID #1291622
2015-03-24 15:53:17 +00:00
Luis de Bethencourt
b3ad336af1 gaudieffects: clean solarize code 2015-03-23 15:10:39 +00:00
Luis de Bethencourt
70cc73fd70 gaudieffects: removing values only used once 2015-03-23 15:10:39 +00:00
Luis de Bethencourt
110fa9c09c gaudieffects: small cleanup in headers 2015-03-23 15:10:39 +00:00
Luis de Bethencourt
fd3c60de34 gaudieffects: update copyright dates of dilate 2015-03-19 13:59:42 +00:00
Luis de Bethencourt
78ebbb4fd7 gaudieffects: factorize transform code of dilate 2015-03-19 13:58:21 +00:00
Olivier Crête
224f14a299 audiointerleave: Set src caps in aggregate
This prevents races between the setcaps of the sink pads

https://bugzilla.gnome.org/show_bug.cgi?id=740236
2015-03-16 16:44:03 -04:00
Olivier Crête
b08b01895f audiointerleave: Add interleave element based on audioaggregator
https://bugzilla.gnome.org/show_bug.cgi?id=740236
2015-03-16 16:44:03 -04:00
Olivier Crête
c565877991 audioaggregator: Print a message when a buffer is late
https://bugzilla.gnome.org/show_bug.cgi?id=740236
2015-03-16 16:44:03 -04:00
Olivier Crête
01520c7e47 audioaggregator: Don't re-send the caps if they did not change
https://bugzilla.gnome.org/show_bug.cgi?id=740236
2015-03-16 16:41:45 -04:00
Olivier Crête
959f8e4a3e audioaggregator: Split base class from audiomixer
Also:
-  Don't modify size on early buffer
   The size is the size of the buffer, not of remaining part.
- Use the input caps when manipulating the input buffer
   Also store in in the sink pad
- Reply to the position query in bytes too
- Put GAP flag on output if all inputs are GAP data
- Only try to clip buffer if the incoming segment is in time or samples
- Use incoming segment with incoming timestamp
   Handle non-time segments and NONE timestamps
- Don't reset the position when pushing out new caps
- Make a number of member variables private
- Correctly handle case where no pad has a buffer
  If none of the pads have buffers that can be handled, don't claim to be EOS.
- Ensure proper locking
- Only support time segments

https://bugzilla.gnome.org/show_bug.cgi?id=740236
2015-03-16 16:41:45 -04:00
Olivier Crête
ff9be3ba34 audiomixer: Release pad object lock before dropping buffer
Otherwise, the locking order is violated and deadlocks happen.

https://bugzilla.gnome.org/show_bug.cgi?id=745768
2015-03-16 14:31:50 -04:00
Olivier Crête
2d553d1b25 audiomixer: Only ignore pads with no buffers on timeout
When the timeout is reached, only ignore pads with no buffers, iterate
over the other pads until all buffers have been read. This is important
in the cases where the input buffers are smaller than the output buffer.

https://bugzilla.gnome.org/show_bug.cgi?id=745768
2015-03-16 14:31:50 -04:00
Olivier Crête
9c49624610 audiomixer: Only advance by the buffer size when a buffer is late
https://bugzilla.gnome.org/show_bug.cgi?id=745768
2015-03-16 14:31:50 -04:00
Jan Schmidt
d5ca311a0d compositor: Revert most of previous patch.
The calculation doesn't produce the same results.
Keep just the change to divide alpha by 255 instead of 256,
for slightly better accuracy
2015-03-16 04:00:44 +11:00
Tim-Philipp Müller
5c3652dd22 mpegtsmux: drop some superfluous assertions
g_return_*_if_fail() is for public API to catch
programming errors. For internal code, we should
just use g_assert() to check internal state.
2015-03-15 16:10:31 +00:00
Jesper Larsen
67d46d9934 mpegtsmux: Fix namespace of some internal functions
https://bugzilla.gnome.org/show_bug.cgi?id=733347
2015-03-15 14:10:32 +00:00
Jan Schmidt
badc0438d6 compositor: Fix blending functions
Correctly calculate alpha in a few places by dividing by 255,
not 256.

Fix the argb and bgra blending functions to avoid an off-by-one
error in the calculations, so painting with alpha = 0xff doesn't
ever bleed through from behind
2015-03-16 00:33:23 +11:00
Tim-Philipp Müller
09c05df889 mpegtsmux: make "alignment" property more useful for packetisation
Currently the alignment property just makes sure that we
output things in multiples of align*packet_size bytes, but
with no clear maximum size. When streaming MPEG-TS over
UDP one wants buffers with a maximum packet size of 1316.
The alignment property so far would just output buffers
that are a multiple of 1316 then.

Instead we now make the alignment property output
individual buffers with the alignment size, which
is entirely backwards compatible with the expected
behaviour up until now. For efficiency reason
collect all those buffers in a buffer list and
send that downstream.

Also collect data to push downstream in a buffer
list from the adapter if we don't align things,
which is still more efficient because of the
silly way the muxer currently creates output
packets.

https://bugzilla.gnome.org/show_bug.cgi?id=722129
2015-03-15 12:07:03 +00:00
Thiago Santos
187d4441eb camerabin: remove hack around bug 648359
It is already fixed
2015-03-14 18:29:28 +00:00
Thiago Santos
888414ed11 camerabin: remove deprecated g_atomic function
We depend on 2.32 already
2015-03-14 18:29:28 +00:00
Thiago Santos
5c20c2e211 wrappercamerabinsrc: fix pad leak
Only get the pad if it is really going to be used to avoid
leaking it
2015-03-14 18:29:28 +00:00
Ramiro Polla
f532a72406 sdpdemux: properly escape percent sign in documentation 2015-03-14 14:24:17 +00:00
Sebastian Dröge
472069a699 audiomixer: Fix discont detection and buffer alignment code
Actually accumulate the sample counter to check the accumulated error
between actual timestamps and expected ones instead of just resetting
the error back to 0 with every new buffer.

Also don't reset discont_time whenever we don't resync. The whole point of
discont_time is to remember when we first detected a discont until we actually
act on it a bit later if the discont stayed around for discont_wait time.

https://bugzilla.gnome.org/show_bug.cgi?id=746032
2015-03-12 17:14:33 +00:00
Nirbheek Chauhan
3d9020e564 audiomixer: Add locking to fill_buffer and fix mix_buffer
The audiomixer pad struct fields may be changed from other threads
2015-03-12 09:53:28 +00:00