Seungha Yang
52a82f5b84
mftransform: Fix deadlock when MFT requests processing output twice
...
This sequence of event/data flow might happen
1) Initially we have one pending output event
1-1) Then, process the pending output data
2) No pending input event, then we should wait new pending input event
2-1) Wakeup by new pending event (but it's pending output event)
In above case, MFT will not report new pending input event
if pending output is not processed.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1325 >
2020-06-08 23:46:43 +09:00
Seungha Yang
309c679c43
mftransform: Add some debug log
...
Add some trace level log for debugging
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1325 >
2020-06-08 23:42:22 +09:00
Seungha Yang
0f74785b8e
mfvideoenc: Set PAR to output IMFMediaType
...
We've set it to input IMFMediaType but not for output.
So, if PAR is not 1:1, the input IMFMediaType will be accepted
by MFT (default is 1:1).
The PAR of input/output IMFMediaType must be identical
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1322 >
2020-06-06 21:19:48 +09:00
Seungha Yang
cec6858401
mftransform: Don't try to drain if MFT is not running
...
Otherwise MFT will be blocked forever as no event can be generated by
IMFMediaEventGenerator.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1322 >
2020-06-06 21:03:05 +09:00
Seungha Yang
12532cc8bb
mediafoundation: Use core dispatcher of current view instead of main view
...
Main view might be hidden depending on application's view tree.
In that case, ICoreApplication object doesn't return get_MainView() method
Note that nothing about this behavior was documented by Microsoft
https://docs.microsoft.com/en-us/uwp/api/windows.applicationmodel.core.coreapplication.mainview
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1310 >
2020-05-29 23:01:08 +09:00
Seungha Yang
2dc689c2c8
mediafoundation: Fix undeclared identifier error on UWP build
...
Some symbols are not available in case of UWP
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1306 >
2020-05-28 12:04:43 +00:00
Seungha Yang
7b5f99b47a
mediafoundation: Add support MP3 audio encoding
...
Add MediaFoundation MP3 encoder
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1280 >
2020-05-27 10:34:47 +00:00
Seungha Yang
cee619486a
mediafoundation: Add support for AAC encoding
...
Add MediaFoundation AAC encoder element.
Before Windows 10, mono and stereo channels were supported audio channels
configuration by AAC encoder MFT. However, on Windows 10,
5.1 channels support was introduced.
To expose correct range of support format by this element
whatever the OS version is, this element will enumerate
all the supported format by the AAC encoder MFT
and then will configure sink/src templates while plugin init.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1280 >
2020-05-27 10:34:47 +00:00
Seungha Yang
18f5bdee16
mfutils: Move IMediaType release function to common utility
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1280 >
2020-05-27 10:34:47 +00:00
Seungha Yang
c8469644dd
mediafoundation: Add util function to dump IMFAttributes values
...
It would be useful for debugging.
Reference: https://docs.microsoft.com/en-us/windows/win32/medfound/media-type-debugging-code
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1280 >
2020-05-27 10:34:47 +00:00
Seungha Yang
8ce4980273
mfsourceobject: Remove useless null check for string
...
We can pass null for the value of string type property.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1241 >
2020-05-25 15:09:20 +00:00
Seungha Yang
50b36ce257
mediafoundation: Use G_BEGIN_DECLS/G_END_DECLS pair everywhere
...
... instead of extern "c" {} block.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1241 >
2020-05-25 15:09:20 +00:00
Seungha Yang
c4cb51c63d
mediafoundation: Add support video capture on UWP app
...
New video capture implementation using WinRT Media APIs for UWP app.
Due to the strict permission policy of UWP, device enumeration and
open should be done via new WinRT APIs and to get permission from users,
it will invoke permission dialog on UI.
Strictly saying, this implementation is not a part of MediaFoundation
but structurally it's very similar to MediaFoundation API.
So we can avoid some code duplication by adding this implementation
into MediaFoundation plugin.
This implementation requires UniversalApiContract version >= 6.0
which is part of Windows 10 version 1803 (Redstone 4)
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1241 >
2020-05-25 15:09:20 +00:00
Seungha Yang
e580676747
mfsourceobject: Move device name, path, and index to public struct
...
... so that subclass can access each value and update them.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1241 >
2020-05-25 15:09:20 +00:00
Seungha Yang
6ae478946c
mediafoundation: Fix typo in source object impl.
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1241 >
2020-05-25 15:09:20 +00:00
Seungha Yang
3efc8f5de9
mftransform: Clear unused output IMediaSample
...
If MFT doesn't produce encoded output, need to free allocated
output sample and buffer.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1297 >
2020-05-25 10:25:37 +00:00
Seungha Yang
b93fbdd3cd
mfvideoenc: Fix huge memory leak
...
Subclass must unref passed GstVideoCodecFrame on GstVideoEncoder::handle_frame()
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1294 >
2020-05-24 19:12:28 +09:00
Seungha Yang
dac36cb98f
mediafoundation: Add device provider implementation
...
Only static device probing is supported for now
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1236 >
2020-05-20 11:06:09 +00:00
Seungha Yang
ba45e3f82b
mfsourceobject: Store selected device path, name and index
...
Update path, name and index with selected device so that checked by
get_property() after constructed.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1236 >
2020-05-20 11:06:09 +00:00
Seungha Yang
8afc283b51
mediafoundation: Refactor GstMFSourceObject implementation
...
* Move CoInitializeEx/CoUninitialize pair into thread function in order to
ensure MTA COM thread
* Move common code to baseclass
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1269 >
2020-05-15 09:03:13 +00:00
Seungha Yang
c29c71ae9d
mediafoundation: Remove COM thread constraints from GstMFTransform object
...
Move CoInitializeEx/CoUninitialize pair into our dedicated thread so that
we can ensure COM thread is MTA. This will remove thread constraints
around plugin init.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1269 >
2020-05-15 09:03:13 +00:00
Joshua M. Doe
bfc605a666
mfvideosrc: add GRAY16_LE format support
...
FOURCC "Y16 " is used by FLIR Boson USB Video Class (UVC) camera
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1222 >
2020-04-28 15:14:50 -04:00
Seungha Yang
912b2d7af9
mediafoundation: Disable querying supprted maximum resolution
...
Initializing MFT for checking supported maximum resolution is too
slow.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/760 >
2020-04-28 14:37:31 +00:00
Seungha Yang
565817abd8
mediafoundation: Add h265 encoder
...
Add Media Foundation HEVC encoder
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/760 >
2020-04-28 14:37:31 +00:00
Seungha Yang
9625d19279
mediafoundation: Add h264 encoder
...
Add Media Foundation h264 encoder. If hardware encoders are available
on system, they will have higher rank than software encoder.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/760 >
2020-04-28 14:37:31 +00:00
Seungha Yang
eece89042a
mediafoundation: Introduce Microsoft Media Foundation plugin
...
The Microsoft Media Foundation (MF) is the successor of DirectShow.
This commit includes two kinds of video capture implementation,
one uses IMFSourceReader interface which is available since Windows Vista
and the other is based on IMFCaptureEngine interface which is available
since Windows 8.
Note that this new video source element cannot be used in UWP app
for now, since device activation using those APIs are not allowed by MS.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/760 >
2020-04-28 14:37:31 +00:00