Seungha Yang
009fa58df1
mfvideoenc: Allow only even resolution numbers
...
Some H/W vendors support odd resolution if D3D11 texture is used
or via IMF2DBuffer, but not all vendors support it.
Also software MFT does not allow odd resolution.
Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1165
Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2537
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4548 >
2023-05-05 09:57:37 +01:00
Seungha Yang
a3b352c99d
mfvideosrc: Fix buffer leak
...
The allocated buffer should be released
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3479 >
2022-11-28 18:50:03 +00:00
Seungha Yang
581481c12f
mediafoundation: Chain up from GObject::constructed
...
... so that GstTracer can trace it
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3479 >
2022-11-28 18:50:03 +00:00
Jan Lorenz
47b8762774
mfvideosrc: check HRESULT of CreateClassEnumerator correctly
...
Fixes a crash during direct show device enumeration
Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1599
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3460 >
2022-11-23 14:45:50 +00:00
Seungha Yang
93b6cf7adb
mfvideosrc: Return S_OK from ISampleGrabberCB callback
...
The Microsoft's ISampleGrabber implementation seems to be ignoring
the HRESULT return value from the callback though,
S_OK is the right HRESULT code.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3379 >
2022-11-10 06:03:45 +09:00
Seungha Yang
4b05736c63
mfvideosrc: Add support for DirectShow capture filter
...
Adding DirecShow video capture filter mode, in addition
to existing MediaFoundation and WinRT(UWP) mode, to support
DirectShow only filters (not KS driver compatible)
such as custom virtual camera filters.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3350 >
2022-11-08 01:33:14 +09:00
Seungha Yang
7ce3fccf25
mediafoundation: Update for documentation
...
* Use GST_PARAM_DOC_SHOW_DEFAULT flags for GPU ID related
properties
* Add doc caps
* Add since markers
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3250 >
2022-10-24 12:42:51 +00:00
Seungha Yang
9d926ae8b1
mfvideoencoder: Document only hardware encoders
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3250 >
2022-10-24 12:42:51 +00:00
Seungha Yang
e9415aafb5
mfvideoencoder: Fix device enumeration
...
Although a GPU does not support the codec, the other GPU might
be able to support the codec
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3250 >
2022-10-24 12:42:51 +00:00
Thibault Saunier
6a4425e46a
meson: Call pkgconfig.generate in the loop where we declare plugins dependencies
...
Removing some copy pasted code
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2970 >
2022-09-01 21:17:35 +00:00
Seungha Yang
6fff608f27
d3d11: Port to GstD3D11Fence
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2790 >
2022-07-23 16:53:14 +00:00
Seungha Yang
236378c9d5
mfvideoenc: Fix broken encoding when resolution is not an even number
...
Width and height values of 4:2:0 subsampled YUV format should be even number,
and if it's not the case, there should be padding which is not a contiguous memory layout.
Do copy input frames to MediaFoundation's memory in that case for now.
Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1165
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2661 >
2022-06-29 08:26:45 +00:00
Seungha Yang
5762dfb15d
mfvideoencoder: Handle dynamic property update
...
Re-init MFT on property update to apply new encoding options
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2037 >
2022-05-28 23:12:53 +09:00
Seungha Yang
2db6e0ac3c
mediafoundation: Run indent
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2037 >
2022-05-28 23:12:53 +09:00
Seungha Yang
9fbf4f9c10
mfvideoenc: Remove redundant bitwise or operation
...
MFT_ENUM_FLAG_SORTANDFILTER_APPROVED_ONLY (0xc0) covers
MFT_ENUM_FLAG_SORTANDFILTER (0x40)
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2037 >
2022-05-28 23:12:53 +09:00
Seungha Yang
442d21ab2a
mfvideoencoder: Early terminate d3d11 interop
...
Shared texture will work only for the same GPU
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2037 >
2022-05-28 23:12:53 +09:00
Seungha Yang
39dd92fa5e
mfvideoencoder: Check HRESULT code as well for GPU sync
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2037 >
2022-05-28 23:12:53 +09:00
Seungha Yang
00ae87cbb5
mfvideoencoder: Don't specify keyed mutex misc flag
...
Current implemetation copies textures using non-keyed mutex way.
D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX is pointless
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2037 >
2022-05-28 23:12:53 +09:00
Seungha Yang
dd906f9610
d3d11: Store device format in struct
...
Holding pointer to struct was unsafe approach because
the pointer to d3d11 format will be invalidated once d3d11 device
object is released
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1699 >
2022-02-16 18:41:05 +00:00
Seungha Yang
e1f0687b09
meson: Do hard build error for some MSVC warnings
...
Handle various MSVC warnings as errors for development version.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1006 >
2022-02-16 17:03:29 +00:00
Seungha Yang
e96687d88d
d3d11: Update build-time dependency
...
Remove all the d3d11 and dxgi header version dependent ifdef
and bump the minimum requirement to d3d11_4.h and dxgi1_6.h.
We are already failing support old Visual Studio (Windows SDK actually)
such as Visual Studio 2015. Note that our MinGW toolchain satisfies
the requirement.
From runtime point of view, this change should be fine since
we are checking OS version with IUnknown::QueryInterface()
everywhere in order to check API availability
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1684 >
2022-02-11 20:01:52 +00:00
Seungha Yang
2c93afd8bb
mediafoundation: Add support for MP3 decoding
...
See also
https://docs.microsoft.com/en-us/windows/win32/medfound/windows-media-mp3-decoder
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1596 >
2022-02-11 04:16:23 +09:00
Seungha Yang
be957f6c61
mediafoundation: Add support for AAC decoding
...
See also
https://docs.microsoft.com/en-us/windows/win32/medfound/aac-decoder
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1596 >
2022-02-11 04:16:22 +09:00
Seungha Yang
0b26254a6a
mediafoundation: Cosmetic changes
...
Rename baseclass to be consistent with other Windows plugins
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1596 >
2022-02-11 04:16:22 +09:00
Seungha Yang
ce4875ccde
mediafoundation: Use & operator instead of GetAddressOf()
...
Use shorter expression
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1596 >
2022-02-11 04:16:22 +09:00
Seungha Yang
36020c7549
mediafoundation: Port to C++
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1596 >
2022-02-11 04:16:15 +09:00
Seungha Yang
090b50e549
mfaudioenc: Handle empty IMFMediaBuffer
...
IMFMediaBuffer may not hold encoded data, which seems to happen
while draining.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1679 >
2022-02-10 01:49:55 +09:00
Seungha Yang
6acf89b3d3
mediafoundation: Skip doc for non-default encoder elements
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1360 >
2021-11-19 13:38:19 +00:00
Seungha Yang
8b6c3e030b
mediafoundation: Fix for UWP build
...
We don't support D3D11 interop for UWP because some APIs
(specifically MFTEnum2) are desktop application only.
However, the code for symbol loading is commonly used by both UWP and WIN32.
Just link GModule unconditionally which is UWP compatible, and simply don't
try to load any library/symbol dynamically when D3D11 interop is unavailable.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1216 >
2021-10-21 05:11:40 +00:00
Seungha Yang
47a53f5063
meson: wasapi2,mediafoundation: Work around Windows SDK header issue
...
Some SDK headers are not standard compliant, so MSVC will
complain when such headers are in use with "/permissive-" compile
option. Use "/Zc:twoPhase-" to work around the issue as documented in
https://docs.microsoft.com/en-us/cpp/build/reference/permissive-standards-conformance?view=msvc-160#windows-header-issues
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1174 >
2021-10-17 08:01:47 +00:00
Seungha Yang
d0c86365d2
mediafoundation: Use GetProcAddress() for OS version dependent symbols
...
We are using some symbols which are not available on Windows 7,
specifically D3D11 interop related ones
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1167 >
2021-10-16 18:07:06 +09:00
Seungha Yang
ba79339d56
mediafoundation: Fix various string constness handling
...
... with fixing typo (g_strup -> g_strdup)
Constness needs to be explicit in C++ world otherwise compiler
would complain about that.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1164 >
2021-10-15 23:38:48 +09:00
Seungha Yang
0d96e43c91
mediafoundation: mfvideoenc: Use DXGI adapter LUID
...
Make use of new DXGI adapter LUID based device context sharing.
Note that we were using DXGI adapter LUID to open MFT already.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/1098 >
2021-10-10 03:23:58 +09:00
Seungha Yang
feb5a5aae6
mfdeviceprovider: Add support for device update
...
Similar to the wasapi2 plugin, GstWinRT library will be used for UWP,
and adding new GstWin32DeviceWatcher object implementation for
Win32 desktop application.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/947 >
2021-09-30 06:13:07 +00:00
Thibault Saunier
019971a3c7
Move files from gst-plugins-bad into the "subprojects/gst-plugins-bad/" subdir
2021-09-24 16:14:36 -03:00