summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Release 1.13.11.13.1Tim-Philipp Müller2018-02-154-624/+114
|
* Dist compositor crossfade example and pythons script for meson buildTim-Philipp Müller2018-02-156-3/+11
| | | | And add to autotools build so it gets disted.
* configure: fix build with --disable-externalTim-Philipp Müller2018-02-151-1/+5
|
* po: update translationsTim-Philipp Müller2018-02-158-665/+810
|
* docs: update plugin docsTim-Philipp Müller2018-02-15128-1152/+1393
|
* decklink: Fix array of devices usageEdward Hervey2018-02-141-31/+31
| | | | | | | We need to allocate actual Device structures since we are going to be setting callbacks with address to that structure https://bugzilla.gnome.org/show_bug.cgi?id=777239
* Update ORC fallback disted codeEdward Hervey2018-02-144-118/+118
|
* aom: Implement cpu-used in av1encSean DuBois2018-02-142-6/+47
| | | | https://bugzilla.gnome.org/show_bug.cgi?id=791674
* pnm: Fixed segfault in pnmencDimitrios Katsaros2018-02-141-12/+14
| | | | | | | | | | The pnmenc was not mapping the input buffers as video buffers. Because of this, the video frame stride was not being set based on frame but based on the caps, which make the assumption that the strides are a power of 4. For input that is not a power of 4, this would lead to a SIGSEGV. https://bugzilla.gnome.org/show_bug.cgi?id=793419
* build: check gudev dependency for msdk pluginSreerenj Balachandran2018-02-131-2/+7
| | | | | | gudev is the dependecy for rendernode support in MediaSDK plugin. https://bugzilla.gnome.org/show_bug.cgi?id=791599
* msdk: vc1_dec: Add Advanced profile (WVC1) supportSreerenj Balachandran2018-02-131-5/+25
| | | | | | | Only supporting asf header-format having BDUs with startcode. It might be possible to support other formats too, but haven't tested. https://bugzilla.gnome.org/show_bug.cgi?id=792589
* msdk: dec: Add non-packetized stream handling supportSreerenj Balachandran2018-02-132-3/+34
| | | | | | | | | | | | | | | | | | | The gst-msdk decoders prefer packetized streams as input and in this case we can avoid unnecessary input bitstream copy to mfxBitstream. This works fine for codecs like h264 where we only support byte-stream with au alignment. Other format conversions should be done thorugh parsers. But this won't work for codecs like vc1 where we don't have an autoplugged parser. Even the parser is not capable to do format conversions. Packetizing through base decoders parse() routine will bring a lot of uncecessary of complexities and codecparser libraray dependency. So we just use an interal gst_adaper to keep track of bitstream which is not consumed by msdk durig AsynchronusDecoding. This adapter will get used only if subclass implementations set the "is_packetized" to FALSE for msdk base encoder. https://bugzilla.gnome.org/show_bug.cgi?id=792589
* msdk: Add VC1 decoder (simple and main profiles)Sreerenj Balachandran2018-02-135-1/+189
| | | | | | | | | | | | | | | | | Adding Simple and Main profiles decode support. Currently msdkvc1dec is not capable to handle the codec_data, only instream headers are supported. Also msdk vc1 decoder expecting instream with Sequence header as per SMPTE 421M Annex L. Most of the decdoebin/playbin pipeline won't work with the above constraints because vc1parse is still not an autoplug element. Only way to make mskdvc1dec work is by connecting a vc1parse as an upstream element. https://bugzilla.gnome.org/show_bug.cgi?id=792589
* msdk : Add RenderNode supportSreerenj Balachandran2018-02-133-9/+69
| | | | | | | | | | | | | Use drm render node as the first choice of device node file. Fall backs to use drm primary (/dev/dri/card[0-9]) if there is no render node available Basic logic is inherited from gstreamer-vaapi, but using gudev API rather than libudev directly. Added gudev library as dependency for msdk. https://bugzilla.gnome.org/show_bug.cgi?id=791599
* msdk: Avoid build failures on Windows until d3d allocator is implementedHyunjun Ko2018-02-134-3/+102
| | | | https://bugzilla.gnome.org/show_bug.cgi?id=790752
* msdkdec: use video memory if there's another MSDK context in a pipelineHyunjun Ko2018-02-131-9/+14
| | | | | | | | | | | 1\ If downstream's pool is MSDK bufferpool, 2\ If there's shared GstMsdkContext in the pipeline, a decoder decides to use video memory. This policy should be improved to handle more cases. https://bugzilla.gnome.org/show_bug.cgi?id=790752
* msdk: add async depth from each msdk element to GstMsdkContext to be sharedHyunjun Ko2018-02-134-1/+36
| | | | | | | | | | | | In case that pipeline is like ".. ! decoder ! encoder ! ..." with using video memory, decoder needs to know the async depth of the following msdk element so that it could allocate the correct number of video memory. Otherwise, decoder's memory is exhausted while processing. https://bugzilla.gnome.org/show_bug.cgi?id=790752
* msdkdec/enc: query GstContext to share GstMsdkContextHyunjun Ko2018-02-134-33/+133
| | | | | | | | | | | | | | How to share/create GstMsdkcontext is the following: - Search GstMsdkContext if there's in the pipeline. - If found, check if it's decoder, encoder or vpp by job type. - If it's same job type, it creates another instance of GstMsdkContext with joined-session. - Otherwise just use the shared GstMsdkContext. - If not found, just creates new instance of GstMsdkContext. https://bugzilla.gnome.org/show_bug.cgi?id=790752
* msdk: context: add job type to figure out if joining session is necessaryHyunjun Ko2018-02-136-9/+85
| | | | | | | | | | | | | | | | | According to the driver's instruction, if there are two or more encoders or decoders in a process, the session should be joined by MFXJoinSession. To achieve this successfully by GstContext, this patch adds job type specified if it's encoder, decoder or vpp. If a msdk element gets to know if joining session is needed by the shared context, it should create another instance of GstContext with joined session, which is not shared. https://bugzilla.gnome.org/show_bug.cgi?id=790752
* msdk: adds util functions to handle GstContextHyunjun Ko2018-02-134-0/+294
| | | | | | | | | To share GstMsdkContext with each msdk element, it will be using GstContext. Most common code is from gstreamer-vaapi. https://bugzilla.gnome.org/show_bug.cgi?id=790752
* msdkdec: use bufferpoolHyunjun Ko2018-02-132-151/+349
| | | | | | | | | | | | | | | | 1\ In decide_allocation, it makes its own msdk bufferpool. - If downstream supports video meta, it just replace it with the msdk bufferpool. - If not, it uses the msdk bufferpool as a side pool, which will be decoded into. and will copy it to downstream's bufferpool. 2\ Decide if using video memory or system memory. - This is not completed in this patch. - It might be decided in update_src_caps. - But tested for both system memory and video memory cases. https://bugzilla.gnome.org/show_bug.cgi?id=790752
* msdkenc: use bufferpoolHyunjun Ko2018-02-134-155/+382
| | | | | | | | | | | | | | | | | | 1\ Proposes msdk bufferpool to upstream. - If upstream has accepted the proposed msdk bufferpool, encoder can get msdk surface from the buffer directly. - If not, encoder get msdk surface its own msdk bufferpool and copy from upstream's frame to the surface. 2\ Replace arrays of surfaces with msdk bufferpool. 3\ In case of using VPP, there should be another msdk bufferpool with NV12 info so that it could convert first and encode. Calls gst_msdk_set_frame_allocator and uses video memory only on linux. and uses system memory on Windows until d3d allocator is implemented. https://bugzilla.gnome.org/show_bug.cgi?id=790752
* msdk: supports bufferpoolHyunjun Ko2018-02-138-0/+1178
| | | | | | | | | | | | | | Implements 2 memory allocators: 1\ GstMsdkSystemAllocator: This will allocate system memory. 2\ GstMsdkVideoAllocator: This will allocate device memory depending on the platform. (eg. VASurface) Currently GstMsdkBufferPool uses video allocator currently by default only on linux. On Windows, we should use system memory until d3d allocator is implemented. https://bugzilla.gnome.org/show_bug.cgi?id=790752
* msdk: adds frame allocator using libvaHyunjun Ko2018-02-136-2/+487
| | | | | | | | | | | Implements msdk frame allocator which is required from the driver. Also makes these functions global so that GstMsdkAllocator could use the allocated video memory later and couple with GstMsdkMemory. GstMsdkContext keeps allocation information such as mfxFrameAllocRequest and mfxFrameAllocResponse after allocation. https://bugzilla.gnome.org/show_bug.cgi?id=790752
* msdkdec: fix typoHyunjun Ko2018-02-131-1/+1
| | | | https://bugzilla.gnome.org/show_bug.cgi?id=790752
* msdk: implements GstMsdkContext.Hyunjun Ko2018-02-1315-154/+339
| | | | | | | | | | Makes GstMsdkContext to be a descendant of GstObject so that we could track the life-cycle of the session of the driver. Also replaces MsdkContext with this one. Keeps msdk_d3d.c alive for the future. https://bugzilla.gnome.org/show_bug.cgi?id=790752
* msdk: libva: adds utility function between mfx and libvaHyunjun Ko2018-02-132-0/+195
| | | | https://bugzilla.gnome.org/show_bug.cgi?id=790752
* msdk: adds new utility functions for conversion from gstreamer to libmfxHyunjun Ko2018-02-132-0/+77
| | | | https://bugzilla.gnome.org/show_bug.cgi?id=790752
* msdk: move and rename the function msdk_video_alignmentHyunjun Ko2018-02-133-15/+25
| | | | | | | | Move the msdk_video_alignment function from decoder to msdk.c and rename so that others could call this function without duplicated declaration. https://bugzilla.gnome.org/show_bug.cgi?id=790752
* audioaggregator: remove, moved to -baseTim-Philipp Müller2018-02-136-2238/+3
| | | | https://bugzilla.gnome.org/show_bug.cgi?id=791218
* audiomixer: remove, moved to -baseTim-Philipp Müller2018-02-1320-7763/+3
| | | | https://bugzilla.gnome.org/show_bug.cgi?id=791218
* proxy: remove unneeded object private structsTim-Philipp Müller2018-02-125-88/+75
| | | | | | Plugin headers are not installed. Also mark internal funcs as internal.
* qt: remove plugin, moved to -goodTim-Philipp Müller2018-02-1234-3659/+3
| | | | https://bugzilla.gnome.org/show_bug.cgi?id=754094
* configure: remove two more unneeded gtk conditionalsTim-Philipp Müller2018-02-121-2/+0
|
* gtk: remove, plugin has moved to -goodTim-Philipp Müller2018-02-1231-3822/+5
|
* interaudio: Make sure both PTS and DTS values are definedCarlos Rafael Giani2018-02-111-1/+2
| | | | | | | | | The inter plugin originated in 0.10, which had only one timestamp. As a result, during the port to 1.0, the DTS were left undefined. This can cause subtle bugs with basesrc, which can end up incorrectly picking DTS over PTS and producing output buffers with incorrect timestamps. https://bugzilla.gnome.org/show_bug.cgi?id=791347
* wasapisrc: Re-align device period if necessaryNirbheek Chauhan2018-02-092-4/+32
| | | | | | | Same changes as done for wasapisink in cbe2fc40a. Turns out this is sometimes also needed for capture. Reported by Mathieu_Du. Also improve logging in that case for easier debugging.
* meson: make version numbers ints and fix int/string comparisonTim-Philipp Müller2018-02-081-6/+6
| | | | | | WARNING: Trying to compare values of different types (str, int). The result of this is undefined and will become a hard error in a future Meson release.
* Revert "gdpdepay: don't use allocator if it has custom alloc"Víctor Manuel Jáquez Leal2018-02-081-9/+0
| | | | This reverts commit f6cb16ab8cecfe683473b173732ad040e858abd5.
* proxy: Fix plugin definitionNirbheek Chauhan2018-02-081-1/+1
| | | | I'm not sure how this was missed in review...
* proxy: Remove dead code from Makefile.amNirbheek Chauhan2018-02-081-11/+0
| | | | There is no gstproxytest.c
* meson: Fix wasapi build on WindowsNirbheek Chauhan2018-02-081-1/+3
| | | | Was missing device prober and avrt (on msvc)
* wasapi: Unprepare when src/sink_prepare failsNirbheek Chauhan2018-02-082-28/+17
| | | | | | unprepare() is not called automatically on failure. https://bugzilla.gnome.org/show_bug.cgi?id=793289
* wasapisink: Re-align device period if necessaryNirbheek Chauhan2018-02-081-3/+30
| | | | | | | | | | | | Sometimes the minimum period advertised by a card results in an unaligned buffer size error during initialization in exclusive mode. In that case, we can fetch the actual buffer size in frames and calculate the period from that. We can't do this pre-emptively because we can't call GetBufferSize till Initialize has been called at least once. https://bugzilla.gnome.org/show_bug.cgi?id=793289
* wasapisink: pre-load the buffer with silenceNirbheek Chauhan2018-02-082-29/+80
| | | | | | | | | This reduces the chances of startup glitches, and also reduces the chances that we'll get garbled output due to driver bugs. Recommended by the WASAPI documentation. https://bugzilla.gnome.org/show_bug.cgi?id=793289
* wasapi: Try to use latency-time and buffer-timeNirbheek Chauhan2018-02-086-53/+143
| | | | | | | | | | | | | | | | | | | | So far, we have been completely discarding the values of latency-time and buffer-time and trying to always open the device in the lowest latency mode possible. However, sometimes this is a bad idea: 1. When we want to save power/CPU and don't want low latency 2. When the lowest latency setting causes glitches 3. Other audio-driver bugs Now we will try to follow the user-set values of latency-time and buffer-time in shared mode, and only latency-time in exclusive mode (we have no control over the hardware buffer size, and there is no use in setting GstAudioRingBuffer size to something larger). The elements will still try to open the devices in the lowest latency mode possible if you set the "low-latency" property to "true". https://bugzilla.gnome.org/show_bug.cgi?id=793289
* wasapi: Cover more HRESULT error messagesNirbheek Chauhan2018-02-084-50/+115
| | | | | | | | This requires using allocated strings, but it's the best option. For instance, a call could fail because CoInitialize() wasn't called, or because some other thing in the stack failed. https://bugzilla.gnome.org/show_bug.cgi?id=793289
* wasapi: Increase thread priority to reduce glitchesNirbheek Chauhan2018-02-084-0/+38
| | | | | | | | | | | | | | This is particularly important when running in exclusive mode because any delays will immediately cause glitching. The MinGW version in Cerbero is too old, so we can only enable this when building with MSVC or when people build GStreamer for MSYS2 or other MinGW-based distributions. To force-enable this code when building with MinGW, build with CFLAGS="-DGST_FORCE_WIN_AVRT -lavrt". https://bugzilla.gnome.org/show_bug.cgi?id=793289
* wasapi: Allow opening devices in exclusive modeNirbheek Chauhan2018-02-086-68/+232
| | | | | | | | | | | | | | | | | | | | This provides much lower latency compared to opening in shared mode, but it also means that the device cannot be opened by any other application. The advantage is that the achievable latency is much lower. In shared mode, WASAPI's engine period is 10ms, and so that is the lowest latency achievable. In exclusive mode, the limit is the device period itself, which in my testing with USB DACs, on-board PCI sound-cards, and HDMI cards is between 2ms and 3.33ms. We set our audioringbuffer limits to match the device, so the achievable sink latency is 6-9ms. Further improvements can be made if needed. https://bugzilla.gnome.org/show_bug.cgi?id=793289
* wasapi: Rename struct element for device nameNirbheek Chauhan2018-02-084-20/+24
| | | | | | | | We will use ->device for storing a pointer to the IMMDevice structure which is needed for fetching the caps supported by devices in exclusive mode. https://bugzilla.gnome.org/show_bug.cgi?id=793289