Matthew Waters
1c6f3e4b84
vulkan/macos: link directly to MoltenVK
...
It's currently the only sane way we can use MoltenVK functions to
integrate with Metal API.
It also removes the need to specify the VK_ICD_FILENAMES environment
variable pointing to MoltenVK_icd.json.
2019-12-09 01:49:30 +00:00
Matthew Waters
acac78c1ce
applemedia: rename IOSurfaceMemory -> IOSurfaceGLMemory
2019-12-09 01:49:30 +00:00
Matthew Waters
0560946c82
videotexturecache: implement GL specifics as a subclass
2019-12-09 01:49:30 +00:00
Matthew Waters
ff5ba2f126
applemedia/videocache: make a GObject subclass
2019-12-09 01:49:30 +00:00
Matthew Waters
27f4fb060d
avfvideosrc: don't leak texture caches
...
If decide_allocation is called multiple times, then we would continually
overwrite the previous cache without freeing
2019-12-09 01:49:30 +00:00
Aaron Boxer
e9891dfe14
d3d11: translate windows error codes to human readable strings
...
This will help with debugging.
2019-12-07 16:09:03 -06:00
Xavier Claessens
da584995f6
mlaudiosink: Fix crash when stopping pipeline
...
This is a bug in LuminOS 0.97.0.
2019-12-06 15:29:29 +00:00
Xavier Claessens
380ab8123b
Add mlaudiosink element
2019-12-06 15:29:29 +00:00
Stéphane Cerveau
1711369526
openh264enc: keep the headers
...
be able to resend the headers on demand after a key-unit request
2019-12-06 08:35:00 +00:00
Sebastian Dröge
f776e2df96
decklink: Return new references to the devices from get_devices()
...
Otherwise the caller will free the devices we store internally.
2019-12-05 21:22:18 +02:00
Stéphane Cerveau
c28e7d928d
dash: move parser nodes/types to separated files
...
Rename GstMpdClient to GstMPDClient and use GObject model.
Move nodes to file from gstmpdparser.c:
- GstMPDRootNode
- GstMPDBaseURLNode
- GstMPDUTCTimingNode
- GstMPDMetricsNode
- GstMPDMetricsRangeNode
- GstMPDSNode
- GstMPDSegmentTimelineNode
- GstSegmentTemplateNode
- GstMPDSegmentURLNode
- GstMPDSegmentListNode
- GstMPDPeriodNode
- GstMPDRepresentationNode
- GstMPDsubRepresentationNode
- GstMPDAdaptationSetNode
- GstMPDContentComponentNode
- GstMPDSubsetNode
- GstMPDProgramInformationNode
Move types to gstmpdhelper from gstmpdparser.c:
- GstURLType
- GstDescriptorType
- GstSegmentBaseType
- GstMPDMultSegmentBaseType
- GstMPDRepresentationBaseType
Cleanup naming when possible.
2019-12-05 09:06:37 +00:00
Stéphane Cerveau
86b251b7d1
dash: split mpdparser, mpdclient and xmlhelper
...
provide a separate namespace for mpd helper
for xml parsing and the real mpd parsing.
2019-12-05 09:06:37 +00:00
Seungha Yang
4eac9d0ae6
d3dvideosink: Fix warning for unhandled enum in switch
...
d3dhelpers.c:135:3: warning: enumeration value 'D3DFMT_D32_LOCKABLE' not handled in switch [-Wswitch]
2019-12-05 04:31:54 +00:00
Matthew Waters
c3685bafa4
vulkanviewconvert: clear the cached uniforms on caps change
...
Caps changes can change the output/input layout which needs to be
reflected in the input uniforms to the shader.
2019-12-05 03:21:21 +00:00
Seungha Yang
199caccc41
d3d11: Initialize debug categories of non-GstElement implementation in plugin init
...
That's the way to expose debug category to --gst-debug-help
2019-12-05 02:29:18 +00:00
Seungha Yang
71befc477f
d3d11window: Invoke resize task with high priority
...
On resize event, swapchain should be configured with higher priority
than the other tasks since it's directly related to visual artifacts.
2019-12-05 02:29:18 +00:00
Seungha Yang
d2b85683de
d3d11device: Add gst_d3d11_device_thread_add_full method
...
I would be used to invoke GPU task with specified priority.
2019-12-05 02:29:18 +00:00
Seungha Yang
7cab47ddda
d3d11videosinkbin: Drop d3d11 color convert element
...
d3d11videosink can convert color space now, so the conversion element
seems to be redundant.
2019-12-05 02:29:18 +00:00
Seungha Yang
ca3ddf7848
d3d11videosink: Add color conversion support
...
Draw to back buffer texture directly. It would reduce the number of
copy at least once when color conversion is required.
2019-12-05 02:29:18 +00:00
Seungha Yang
622733ed0d
d3d11converter: Skip setup converter if input and output formats are equal
2019-12-05 02:29:18 +00:00
Seungha Yang
c9cb08fcd4
d3d11colorconvert: Split color space converter to reuse code
2019-12-05 02:29:18 +00:00
Seungha Yang
42ca123f0f
d3d11: Split shader to reuse code
2019-12-05 02:29:18 +00:00
Seungha Yang
59d9589722
d3d11videosink: Draw window with cached texture on resize
...
This would render nicer than presenting scene with broken aspect ratio,
especially in case of low framerate.
2019-12-05 02:29:18 +00:00
Seungha Yang
ddd13fc7c0
d3d11: Add support for D3D11_USAGE_DYNAMIC
...
D3D11 dynamic texture is a special memory type, which is mainly used for
frequent CPU write access to the texture. For now, this texture type
does not support gst_memory_{map,unmap}
2019-12-05 02:29:18 +00:00
Seungha Yang
5ce4748cc0
d3d11device: Add debug message for CreateTexture2D failure
2019-12-05 02:29:18 +00:00
Seungha Yang
914d2df79e
d3d11device: Fix misreading debug message
2019-12-05 02:29:18 +00:00
Seungha Yang
71ae632b25
d3d11colorconvert: Disable color conversion with software rasterizer
...
It's much slower than our CPU based color-converter in most case.
2019-12-05 02:29:18 +00:00
Seungha Yang
79e88b76da
d3d11videosink: Handle context query
...
Propagate d3d11device via context query.
2019-12-05 02:29:18 +00:00
Seungha Yang
5edf64d655
d3d11colorconvert: Avoid copy in/out texture if possible
...
When input and/or output d3d11memory has its own view, use them for
rendering to avoid texture copy
2019-12-05 02:29:18 +00:00
Seungha Yang
da3545e8c8
d3d11memory: Allocate texture with required views
...
Store required resource views with d3d11 texture when it requested.
2019-12-05 02:29:18 +00:00
Seungha Yang
4e4fb8a577
d3d11: Add d3d11videosinkbin element
...
New wrapper element to support d3d11 memory upload, color conversion, and
rendering at once.
2019-12-05 02:29:18 +00:00
Seungha Yang
79ac41ec5b
d3d11: Add color space conversion element using shader
...
Add d3d11colorconvert element for color space conversion.
Currently {RGB, YUV} to RGB conversion is supported.
2019-12-05 02:29:18 +00:00
Seungha Yang
01903c47f7
d3d11memory: Register mininal compare function for GstD3D11AllocationParams
...
The d3d11 allocation param is stored in GstStructure so it should
provide compare function for later use such as gst_structure_is_equal()
2019-12-05 02:29:18 +00:00
Seungha Yang
0778fa8043
d3d11window: Set render target whenever drawing
...
Device context's render target might be updated for offscreen rendering
2019-12-05 02:29:18 +00:00
Seungha Yang
a687f06b59
d3d11videosink: Specify d3d11 memory caps feature on sinkpad template
2019-12-05 02:29:18 +00:00
Seungha Yang
c17c1346ee
d3d11: Introduce d3d11 upload/download element
...
That's equivalent to glupload and gldownload elements but for d3d11
2019-12-05 02:29:18 +00:00
Seungha Yang
6c3311a39e
d3d11: Refactor d3d11 memory and dxgi format usage
...
* Create staging texture only when the CPU access is requested.
Note that we should avoid the CPU access to d3d11 memory as mush as possible.
Incoming d3d11upload and d3d11download will take this GPU memory upload/download.
* Upload/Download texture memory from/to staging only if it needed, similar to
GstGL PBO implementation.
* Define more dxgi formats for future usage (e.g., color conversion, dxva2 decoder).
Because I420_* formats are not supported formats by dxgi, each plane should
be handled likewise GstGL separately, but NV12/P10 formats might be supported ones.
So we decide the number of d3d11memory per GstBuffer for video memory depending on
OS version and dxgi format. For instance, if NV12 is supported by OS,
only one d3d11memory with DXGI_FORMAT_NV12 texture can be allocated by this commit.
One use case of such texture is DXVA. In case DXVA decoder, it might need to produce decoded data
to one DXGI_FORMAT_NV12 instead of seperate Y and UV planes.
Such behavior will be controlled via configuration of GstD3D11BufferPool and
default configuration is separate resources per plane.
2019-12-05 02:29:18 +00:00
Seungha Yang
d4c75f32dd
d3d11: Add method for querying d3d11 memory type
...
... and fix misreading "private" annotation.
2019-12-05 02:29:18 +00:00
Seungha Yang
8da5237e22
d3d11device: Store selected d3d feature level
...
Depending on selected feature level, d3d11 API usage can be different.
Instead of querying the selected feature level by user whenever required,
store it once by d3d11device.
2019-12-05 02:29:18 +00:00
Seungha Yang
4ff0e62b72
d3d11: Don't share d3d11 device context unconditionally without checking adapter
...
Do not accept any GstD3D11Device context which has different adapter
index from the required one. For example, if a d3d11 element is expecting
d3d11 device with adapter 1 (i.e., the second GPU), any d3d11 device
context having different adapter could not be shared with
the d3d11 element.
2019-12-05 02:29:18 +00:00
Seungha Yang
7ae4105c6e
d3d11device: Don't allow auto adapter selection
...
Change to d3d11device to be created with explicit target adapter index,
and expose some readonly device properties
2019-12-05 02:29:18 +00:00
Seungha Yang
494ec13316
d3d11: Rename native handle getter and context utils functions
...
Make them consistent with cuda context utils functions.
Put in-only parameter before all in-out parameters, and add _handle()
suffix to native handle getter functions.
2019-12-05 02:29:18 +00:00
Aaron Boxer
d3426cf15b
d3dvideosink: use parent buffer pool to release buffers
...
In certain cases, the sink's buffer pool will not call the parent's
release_buffer method, so the pool does not clean up properly
after the buffer is released.
2019-12-04 23:00:35 +00:00
Matthew Waters
81d1e16b6b
vulkan: move fullscreenquad object to library
...
It's useful and extensible enough to be used by us and other elements
2019-12-04 07:20:27 +00:00
Matthew Waters
dee29aa8e7
vulkan: fix up some gir annotations
2019-12-04 07:20:27 +00:00
Sebastian Dröge
812d593c4e
interlace: Store unsigned integers in unsigned integer types
...
And add some assertions to guard against overflows and out of bounds
reads.
2019-12-03 21:12:26 +00:00
Sebastian Dröge
c67146b27a
interlace: Increment phase_index before checking if we're at the end of the phase
...
Incrementing it afterwards will always have to phase_index >= 1 and we
will never be at the beginning (0) of the phase again, and thus never
reset timestamp tracking accordingly.
This was broken in bea13ef43b
in 2010, and
causes interlace to run into integer overflows after 2^31 frames or
about 5 hours at 29.97fps. Due to usage of wrong types for the integers
this then causes negative numbers to be used in calculations and all
calculations spectacularly fail, leading to all following buffers to
have the timestamp of the first buffer minus one nanosecond.
2019-12-03 21:12:26 +00:00
Jan Alexander Steffens (heftig)
fd6c51b2e7
rtmp2sink: Only apply @setDataFrame to onMetaData messages
...
Only the metadata needs to be made "sticky". Custom data messages should
be passed on unmodified.
https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/merge_requests/878
2019-12-03 14:11:47 +01:00
Jan Alexander Steffens (heftig)
042e439829
rtmp2: Add gst_rtmp_message_is_metadata
...
https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/merge_requests/878
2019-12-03 14:11:47 +01:00
Jan Alexander Steffens (heftig)
e07a1bb48f
rtmp2: Add gst_rtmp_connection_set_data_frame
...
https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/merge_requests/878
2019-12-03 14:11:47 +01:00