summaryrefslogtreecommitdiff
path: root/ext
Commit message (Collapse)AuthorAgeFilesLines
* webrtcdsp: Workaround GCC/MingW 4.7 limitationsNicolas Dufresne2016-07-051-10/+12
| | | | | It refuses to initialize a classes using brackets notation. This is to allow building using our mingw version.
* lv2: add support for saving presetsStefan Sauer2016-07-044-8/+112
| | | | Plugns supporting the state interface can now save their presets under '.lv2'.
* lv2: support for loading presetsStefan Sauer2016-07-047-35/+362
| | | | | Detect if plugins can do presets. Lazily read a list of presets and add support for loading.
* musepackdec: port to 1.0Wim Taymans2016-07-042-114/+140
|
* qt: fix build some more when QPA is not availableTim-Philipp Müller2016-07-011-1/+0
| | | | | | | | Compiler would complain about include directory that didn't exist because QPA_INCLUDE_PATH gets subst-ed regardless (and if it didn't we'd have just an empty -I argument). https://bugzilla.gnome.org/show_bug.cgi?id=767553
* dashdemux: Implement SIDX tracking based on buffer offsetSebastian Dröge2016-07-012-15/+7
| | | | | | | | This simplifies the code but also removes a bug with tracking of the remaining size for the initial subfragment: we were not considering the size between the index and the start of the first moof here. https://bugzilla.gnome.org/show_bug.cgi?id=764684
* dashdemux: Properly keep track of current offsetSebastian Dröge2016-07-012-19/+80
| | | | | | | GstAdapter does not guarantee to pass through all the offsets, we have to keep track of it ourselves. https://bugzilla.gnome.org/show_bug.cgi?id=764684
* hlsdemux: Properly keep track of current offsetSebastian Dröge2016-07-012-2/+13
| | | | | | | GstAdapter does not guarantee to pass through all the offsets, we have to keep track of it ourselves. https://bugzilla.gnome.org/show_bug.cgi?id=764684
* hlsdemux: Clear pending data when neededSebastian Dröge2016-07-011-6/+15
| | | | | | | | When switching fragments we don't want to keep any data around from the last one, and also forget about all data when doing flushing seeks or selecting new bitrates. https://bugzilla.gnome.org/show_bug.cgi?id=764684
* adaptivedemux: Get rid of internal stream adapter and let subclasses handle ↵Sebastian Dröge2016-07-014-60/+63
| | | | | | | | | this directly This allows subclasses to have more control and especially ensure that they push data downstream with the correct offsets. https://bugzilla.gnome.org/show_bug.cgi?id=764684
* openh264enc: Set frame timestamps before sending to the encoderSebastian Dröge2016-06-301-1/+1
|
* openh264enc: Fix initial time-per-frame calculationSebastian Dröge2016-06-301-1/+1
|
* openh264enc: Remove meaningless drop bitrate handlingSebastian Dröge2016-06-302-12/+0
| | | | This doesn't even have a property.
* openh264enc: Expose maximum bitrate settingSebastian Dröge2016-06-302-3/+23
|
* openh264enc: Actually hook up the rate-control propertySebastian Dröge2016-06-301-1/+1
|
* openh264enc: Use a constant SPS/PPS ID no matter if openh264 older or newer ↵Sebastian Dröge2016-06-301-1/+1
| | | | than 1.4 is used
* openh264enc: Make slice settings more explicit and don't set any number if ↵Sebastian Dröge2016-06-301-4/+11
| | | | not a fixed number of slices is selected
* webrtcdsp: Rewrite echo data synchronizationNicolas Dufresne2016-06-303-123/+143
| | | | | | | | | | | | | | | The previous code would run out of sync if there was packet lost or clock skews. When that happened, the echo cancellation feature would completely stop working. As this is crucial for audio calls, this patch re-implement synchronization completely. Instead of letting it drift until next discont, we now synchronize against the record data at every iteration. This way we simply never let the stream drift for longer then 10ms period. We also shorter the delay by using the latency up the probe (basically excluding the sink latency. This is a decent delay to avoid starving in the probe queue. https://bugzilla.gnome.org/show_bug.cgi?id=768009
* webrtcdsp: We now fail if there is no echo probeNicolas Dufresne2016-06-301-1/+1
| | | | | | When echo cancel is enabled, we now fail the pipeline if there is not echo probe. For this reason there is no need to check if probe pointer is set anymore.
* openh264enc: Remove broken byte-stream to avc conversion and just output ↵Sebastian Dröge2016-06-301-114/+31
| | | | | | | | | | | | byte-stream as generated by the encoder The byte-stream to avc conversion did not consider NAL sizes bigger than 2^16, multiple layers, multiple NALs per layer, and various other things. This caused corrupted streams in higher bitrates and other circumstances. Let's just forward byte-stream as generated by the encoder and let h264parse handle conversion to avc if needed. That way we only have to keep around one version of the conversion and don't have to fix it in multiple places.
* glmemory: add the texture type to allocate to parametersMatthew Waters2016-06-291-2/+4
| | | | | | Rather than assuming something. e.g. zerocopy on iOS with GLES3 requires the use of Luminance/Luminance Alpha formats and does not work with Red/RG textures.
* qmlglsink: Fix build error when don't have QPA installed.Haihua Hu2016-06-271-1/+1
| | | | | | | Check header file existance and wrap the header file include in the necessary #ifdef to avoid build error. https://bugzilla.gnome.org/show_bug.cgi?id=767553
* openjpeg: fix more broken includesTim-Philipp Müller2016-06-243-3/+3
|
* jpeg2000parse: use enums for colorspace and sampling, rather than stringsAaron Boxer2016-06-244-69/+37
| | | | | | Also, move gstjpeg2000sampling to codecparsers project https://bugzilla.gnome.org/show_bug.cgi?id=767908
* webrtcdsp: Offset timestamp with durationNicolas Dufresne2016-06-231-3/+11
| | | | | | | The saved timestamp is used to compute the delay of the probe data. As it's used at the following incoming buffer, it needs to be offset with the duration of the buffer to represent the end position. Also, properly initialize the saved timestamp and protect against TIME_NONE.
* webrtcdsp: Synchronize with delaysNicolas Dufresne2016-06-221-21/+5
| | | | | | | | | Until now, we were synchronizing both DSP and Probe adapter by waiting and clipping the probe adapter data. This increases the CPU usage, can cause copies if the audio is not 10ms aligned and the worst is that it prevents the processing from compensating for inaccurate latency. This is also a step forward toward supporting playback filters.
* webrtdsp: Remove restriction on channels numberNicolas Dufresne2016-06-221-6/+4
| | | | | Unlike 0.1, in 0.2 the reverse stream can have different number of channels. Remove the check that restrict it.
* webrtcdsp: Style fixNicolas Dufresne2016-06-221-1/+1
|
* qmlglsink: add win32 supportMatthew Waters2016-06-222-41/+91
| | | | | | | | | | | | | | | | | | | The current state of c++ ABI's on Window's and Gst's/Qt's conflicting mingw builds means that we cannot use mingw for building the qt plugin. Instead, a qmake .pro file is provided that is expected to be used with the msvc binaries provided by Qt like so: (with the PATH environment variable containing the path to the qt biniaries and PKG_CONFIG_PATH containing the path to GStreamer modules) cd /path/to/sources/gst-plugins-bad/ext/qt qmake -tp vc Then open the resulting VS project and build the library. Then cp debug/libgstqtsink.dll /path/to/prefix/lib/gstreamer-1.0/libgstqtsink.cll https://bugzilla.gnome.org/show_bug.cgi?id=761260
* webrtcdsp: Add WebRTC Audio Processing supportNicolas Dufresne2016-06-216-2/+1279
| | | | | | | | | | | | | | | | | | | This DSP library can be used to enhance voice signal for real time communication call. In implements multiple filters like noise reduction, high pass filter, echo cancellation, automatic gain control, etc. The webrtcdsp element can be used along, or with the help of the webrtcechoprobe if echo cancellation is enabled. The echo probe should be placed as close as possible to the audio sink, while the DSP is generally place close to the audio capture. For local testing, one can use an echo loop pipeline like the following: autoaudiosrc ! webrtcdsp ! webrtcechoprobe ! autoaudiosink This pipeline should produce a single echo rather then repeated echo. Those elements works if they are placed in the same top level pipeline. https://bugzilla.gnome.org/show_bug.cgi?id=767800
* openjpegdec: use sampling field to determine RGB channelAaron Boxer2016-06-212-11/+60
| | | | https://bugzilla.gnome.org/show_bug.cgi?id=767402
* dc1394src: check for disabled transmission in _stop_camJoan Pau Beltran2016-06-201-0/+22
| | | | | | | For symetry with _start_cam, check that the transmission is effectively disabled in _stop_cam. https://bugzilla.gnome.org/show_bug.cgi?id=763026
* qml: Enable qmlglsink for eglfsSergey Borovkov2016-06-161-3/+9
| | | | https://bugzilla.gnome.org/show_bug.cgi?id=763044
* qmlglsink: propagate GL context creation failure upwardsMatthew Waters2016-06-161-2/+8
| | | | | Otherwise an application cannot know if the qmlglsink will be displaying frames incorrectly/at all.
* qmlglsink: also allow wayland-egl as a platform nameMatthew Waters2016-06-161-1/+4
|
* qmlglsink: Add Wayland supportHaihua Hu2016-06-162-0/+13
| | | | | | | Don't use gstgldisplay to get wayland display. Should use QPA on wayland to get wayland display for QT. https://bugzilla.gnome.org/show_bug.cgi?id=767553
* ladspa: simplify registry cache structure creationStefan Sauer2016-06-151-2/+1
| | | | Create and fill structure in one go.
* gleffects: fix little rectangle that appears at the center of squeeze and ↵Haihua Hu2016-06-151-2/+4
| | | | | | | | | | tunnel effects These two shader will calculate the vector length and use it as denominator. But length could be zero which will cause undefine behaviour. Add protection for this condition https://bugzilla.gnome.org/show_bug.cgi?id=767635
* gldeinterlace: remove dead code accessing filter->in_tex_idMatthew Waters2016-06-151-15/+3
| | | | It's not set by anyone or anything and gldeinterlace is the only user of it now.
* srtpenc: remove get-rollover-counter signal and add stats propertyAleix Conchillo Flaqué2016-06-132-41/+43
| | | | | | | | | | We remove get-rollover-counter signal in favor of the "stats" property. The "stats" property is a GstStructure with caps application/x-srtp-encoder-stats that contains an array of structures with caps application/x-srtp-stream. Each stream structure contains "ssrc" and "roc" fields. https://bugzilla.gnome.org/show_bug.cgi?id=733265
* curlsmtpsink: Lock and don't send final boundary upon errorSebastian Rasmussen2016-06-111-12/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously GstCurlSmtpSink could cause the pipeline thread to end up waiting for a stopped thread to perform work. The scenario was that the sink could be rendering a buffer and waiting for the curl transfer thread to have sent the data. As soon as the transfer thread has copied all data to curl's data buffer in gst_curl_base_sink_transfer_read_cb() then the render call would stop waiting and return GST_FLOW_OK. While this takes place the transfer thread may suffer from an error e.g. due gst_poll_wait() timing out. This causes the transfer thread to record the error, claim (it is not really true since there was an error) that the data has been sent and that a response has been received by trying to signal the pipeline thread (but this has already stopped waiting). Finally the transfer thread stops itself. A short while later the pipeline thread may attempt to push an EOS event into GstCurlSmtpSink. Since there is no check in gst_curl_smtp_sink_event() to check if the sink has suffered from any error it may attempt to add a final boundary and ask the, now deceased, transfer thread to transfer the new data. Next the sink element would have waited for the transfer to complete (using a different mechanism than normal transfers through GstCurlBaseSink). In this case there was an error check to avoid waiting if an error had already been seen. Finally GstCurlSmtpSink would chain up to GstCurlBaseSink which would then block waiting for a response (normally this would be prevented by the transfer thread suffering the error claiming that it had been received, but GstCurlSmtpSink clobbered this flag after the fact). Now GstCurlSmtpSink avoids this by locking over the entire event handing (preventing simultaneous changes to flags by the two threads) and also by avoiding to initiate transfer of final boundary if an error has already been seen. Also add GST_FIXME() for remaining similar issue where the pipeline thread may block indefinitely waiting for transfer thread to transfer data but the transfer thread errors out and fails to notify the pipeline thread that the transfer failed. https://bugzilla.gnome.org/show_bug.cgi?id=767501
* facedetect: Fix compiler warning with clang 3.8Heinrich Fink2016-06-101-2/+2
| | | | | | | | Use namespace only after it was actually defined by a header. gstfacedetect.cpp:79:17: error: using directive refers to implicitly-defined namespace 'std' [-Werror] using namespace std; ^
* dc1394src: minor clean-upTim-Philipp Müller2016-06-091-20/+11
| | | | We always call _parse_caps() with non-NULL out vars.
* dc1394src: fix some more c99-ismsTim-Philipp Müller2016-06-091-13/+17
|
* dc1394src: prefix and file names according to Gstreamer conventionsJoan Pau Beltran2016-06-093-122/+130
| | | | | | | | | | | | | Replace the type and function prefix to follow the conventions: - Use `GST_TYPE_DC1394_SRC` instead of `GST_TYPE_DC1394`. - Use `GstDC1394Src` and `GstDC1394SrcClass` instead of `GstDc1394` and `GstDc1394Class`. - Use `gst_dc1394_src` instead of `gst_dc1394`. https://bugzilla.gnome.org/show_bug.cgi?id=763026
* dc1394src: port to 1.XJoan Pau Beltran2016-06-093-1118/+990
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The dc1394src is a PushSrc element for IIDC cameras based on libdc1394. The implementation from the 0.x series is deffective: caps negotiation does not work, and some video formats provided by the camera are not supported. Refactor the code to port it to 1.X and enhance the support for the full set of video options of IIDC cameras: - The IIDC specification includes a set of camera video modes (video format, frame size, and frame rates). They do not map perfectly to Gstreamer formats, but those that do not match are very rare (if used at all by any camera). In addition, although the specification includes a raw format, some cameras use mono video formats to capture in Bayer format. Map corresponding video modes to Gstreamer formats in capabilities, allowing both gray raw and Bayer video formats for mono video modes. - The specification includes scalable video modes (Format7), where the frame size and rate can be set to arbitrary values (within the limits of the camera and the bus transport). Allow the use of such mode, using the frame size and rate from the negotiatied caps, and set the camera frame rate adjusting the packet size as in: <http://damien.douxchamps.net/ieee1394/libdc1394/faq/#How_do_I_set_the_frame_rate> The scalable modes also allow for a custom ROI offset. Support for it can be easily added later using properties. - Camera operation using libdc1394 is as follows: 1. Enumerate cameras on the system and open the camera identified the enumeration index or by a GUID (64bit hex code). 2. Query the video formats supported by the camera. 3. Configure the camera for the desired video format. 4. Setup the capture resources for the configured video format and start the camera transmission. 5. Capture frames from the camera and release them when not used. 6. Stop the camera transmission and clear the capture resources. 7. Close the camera freeing its resources. Do steps 2 and 3 when getting and setting the caps respectively. Ideally 4 and 6 would be done when going from PAUSED to PLAYING and viceversa, but since caps might not be set yet, the video mode is not properly configured leaving the camera in a broken state. Hence, setup capture and start transmission in the set caps method, and consequently clear the capture and stop the transmission when going from PAUSED to READY (instead of PLAYING to PAUSED). Symmetrycally, open the camera when going from READY to PAUSED, allowing to probe the camera caps in the negotiation stage. Implement that using the `start` and `stop` methods of `GstBaseSrc`, instead of the `change-state` method of `GstElement`. Stop the camera before setting new caps and restarting it again to handle caps reconfiguration while in PLAYING (it has no effect if the camera is not started). - Create buffers copying the bytes of the captured frames. Alternatively, the buffers could just wrap the bytes of the frames, releasing the frame in the buffer's destroy notify function, if all buffers were destroyed before going from PLAYING to PAUSED. - No timestamp nor offset is set when creating buffers. Timestamping is delegated to the parent class BaseSrc, setting `gst_base_src_set_live` TRUE, `gst_base_src_set_format` with GST_FORMAT_TIME and `gst_base_src_set_do_timestamp`. Captured frames have a timestamp field with the system time at the completion of the transmission of the frame, but it is not sure that this comes from a monotonic clock, and it seems to be left NULL in Windows. - Use GUID and unit properties to select the camera to operate on. The camera number used in version 0.X does not uniquely identify the device (it depends on the set of cameras currently detected). Since the GUID is 64bit identifier (same as MAC address), handle it with a string property with its hexadecimal representation. For practicality, operate on the first camera available if the GUID is null (default) and match any camera unit number if unit is -1. Alternatively, the GUID could be handed with an unsigned 64 bit integer type property, using `0xffffffffffffffff` as default value to select the first camera available (it is not a valid GUID value). - Keep name `GstDc1394` and prefix `gst_dc1394` as in version 0.X, although `GstDC1394Src` and `gst_dc1394_src` are more descriptive. - Adjust build files to reenable the compilation of the plugin. Remove dc1394 from the list of unported plugins in configure.ac. Add the missing flags and libraries to Makefile. Use `$()` for variable substitution, as many plugins do, although other plugins use `@@` instead. https://bugzilla.gnome.org/show_bug.cgi?id=763026
* webpdec: Wait for segment event before checking itNicolas Dufresne2016-06-071-7/+22
| | | | | | | | | | The heuristic to choose between packetise or not was changed to use the segment format. The problem is that this change is reading the segment during the caps event handling. The segment event will only be sent after. That prevented the decoder to go in packetize mode, and avoid useless parsing. https://bugzilla.gnome.org/show_bug.cgi?id=736252
* openjpeg: fix builddir != srcdir build, and distcheckTim-Philipp Müller2016-06-071-1/+1
|
* openjpeg: set sampling in the capsAaron Boxer2016-06-071-12/+66
| | | | https://bugzilla.gnome.org/show_bug.cgi?id=766236
* gltestsrc: gltestsrc.h already defines GstGLTestSrcHavard Graff2016-05-281-1/+0
| | | | | | And redefinition is not allowed. https://bugzilla.gnome.org/show_bug.cgi?id=766973