Seungha Yang
00e1561bf2
d3d11decoder: Set flushing to internal pool on flush event
...
d3d11 decoders use internal pool for DPB texture and
Gst*Decoder::new_picture() will be blocked if internal pool is full.
We should be able to unblock in on flush-start event as expected.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2192 >
2021-04-24 01:37:01 +09:00
Seungha Yang
6eb9856f59
codecs: vp9decoder: Pass GstVideoCodecFrame to duplicate_picture()
...
... and fix picture duplication logic for vavp9dec
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2112 >
2021-04-07 19:32:29 +00:00
Seungha Yang
1f769839c0
codecs: vp9decoder: Port to GstVp9StatefulParser
...
Use newly implemented VP9 parser. Since new GstVp9FrameHeader
struct holds all the information of the stream, baseclass will not
pass parser object to new_sequence() method anymore.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2112 >
2021-04-07 19:32:29 +00:00
Seungha Yang
f369ca1b32
d3d11vp9dec: Remove debug dump functions
...
Existing debug messages are not quite useful
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2117 >
2021-03-28 18:00:39 +09:00
Seungha Yang
bcdd2c4984
d3d11decoder: Move zero-copy decision logic into decoder object
...
Get rid of all duplicated code for zero-copy decision and output buffer
allocation
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2117 >
2021-03-28 18:00:28 +09:00
Seungha Yang
03f1ff2042
d3d11vp9dec: Ignore show_frame flag in output_picture()
...
baseclass will not call output_picture() if it shouldn't be ouputted.
Note that the show_frame flag can be zero when show_existing_frame is set
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2114 >
2021-03-26 14:50:18 +00:00
Seungha Yang
c9518780fd
d3d11decoder: Do not hardcode the limit minimum resolution to 64
...
Decoder should be able to support lower resolution than 64x64
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2113 >
2021-03-26 22:04:19 +09:00
Seungha Yang
b392ed82ba
d3d11decoder: Implement array-of-texture DPB again
...
Re-implementation of array-of-texture based on d3d11 memory pool.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2097 >
2021-03-24 15:44:42 +00:00
Seungha Yang
309a940614
d3d11decoder: Do negotiation again per forward/reverse playback mode change
...
For reverse playback, we are always copying decoded
frame to downstream buffer. So the pool size can be
and need to be large enough.
In case that forward playback, however, we need to restrict
the max pool size for performance reason. Otherwise decoder
will keep copying decoded texture to downstream buffer pool
if decoding is faster than downstream throughput
performance and also there are queue element between them.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2083 >
2021-03-16 05:54:41 +00:00
Seungha Yang
72345875b1
d3d11decoder: Refactor device open step and negotiation
...
* Remove redundant method arguments
* Don't allocate staging texture if downstream supports d3d11 memory
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2079 >
2021-03-14 17:34:20 +09:00
Seungha Yang
347d9ceb4e
d3d11decoder: Move profile GUID handling into decoder object
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2079 >
2021-03-14 16:31:31 +09:00
Seungha Yang
1c1cfc4ba7
d3d11decoder: Get rid of private struct
...
Completely hide member variables
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2079 >
2021-03-14 16:30:19 +09:00
Seungha Yang
78e4251750
Revert "d3d11vp9dec: Add support for internal frame resizing"
...
This reverts commit 58a4c33a0e
We should use ID3D11VideoProcessor instead of shader
to avoid copy. We need to revisit this topic later
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2079 >
2021-03-14 16:30:15 +09:00
Seungha Yang
5b3e316039
d3d11: Port to C++
...
Direct3D11 objects are COM, and most COM C APIs are verbose
(C++ is a little better). So, by using C++ APIs, we can make code
shorter and more readable.
Moreover, "ComPtr" helper class (which is C++ only) can be
utilized, that is very helpful for avoiding error-prone COM refcounting
issue/leak.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2077 >
2021-03-14 13:05:22 +09:00