remove the d3d12->d3d11 workaround (d3d12 is now fixed)

This commit is contained in:
F. Duncanh
2025-08-30 18:01:42 -04:00
parent 8ff22f17ac
commit b682eea323
5 changed files with 23 additions and 31 deletions

View File

@@ -999,10 +999,11 @@ used.</p>
<code>&lt;videosink&gt;</code> are <code>d3d12videosink</code>,
<code>d3d11videosink</code>, <code>d3dvideosink</code>,
<code>glimagesink</code>, <code>gtksink</code>,
<code>autovideosink</code>. If you do not specify the videosink, the
d3d11videosink will be used (users have reported segfaults of the newer
d3d12 videodecoder on certain older Nvidia cards when the image
resolution changes: d3d11 will used by default until this is fixed).</p>
<code>autovideosink</code>. <em>There have been reports of segfaults of
the newer d3d12 videodecoder on certain older Nvidia cards when the
image resolution changes, e.g., when the iOS client is rotated between
portrait and landcape modes: this was a GStreamer issue that is
apparently now fixed (a workaround is to use d3d11).</em></p>
<ul>
<li>With Direct3D 11.0 or greater, various options can be set using
e.g. <code>-vs "d3d11videosink &lt;options&gt;"</code> (see the

View File

@@ -987,10 +987,11 @@ like `\{0.0.0.00000000\}.\{98e35b2b-8eba-412e-b840-fd2c2492cf44\}`. If
If you wish to specify the videosink using the `-vs <videosink>` option,
some choices for `<videosink>` are `d3d12videosink`, ``d3d11videosink``, ```d3dvideosink```,
`glimagesink`, ``gtksink``, ```autovideosink```. If you do not specify the videosink,
the d3d11videosink will be used (users have reported segfaults of the newer d3d12 videodecoder
on certain older Nvidia cards when the image resolution changes:
d3d11 will used by default until this is fixed).
`glimagesink`, ``gtksink``, ```autovideosink```. _There have been reports of
segfaults of the newer d3d12 videodecoder
on certain older Nvidia cards when the image resolution changes, e.g., when the iOS client
is rotated between portrait and landcape modes: this was a GStreamer issue
that is apparently now fixed (a workaround is to use d3d11)._
- With Direct3D 11.0 or greater, various options can be set
using e.g. `-vs "d3d11videosink <options>"` (see the gstreamer videosink

View File

@@ -1011,11 +1011,12 @@ like `\{0.0.0.00000000\}.\{98e35b2b-8eba-412e-b840-fd2c2492cf44\}`. If
If you wish to specify the videosink using the `-vs <videosink>` option,
some choices for `<videosink>` are `d3d12videosink`, `d3d11videosink`,
`d3dvideosink`, `glimagesink`, `gtksink`, `autovideosink`. If you do not
specify the videosink, the d3d11videosink will be used (users have
reported segfaults of the newer d3d12 videodecoder on certain older
Nvidia cards when the image resolution changes: d3d11 will used by
default until this is fixed).
`d3dvideosink`, `glimagesink`, `gtksink`, `autovideosink`. *There have
been reports of segfaults of the newer d3d12 videodecoder on certain
older Nvidia cards when the image resolution changes, e.g., when the iOS
client is rotated between portrait and landcape modes: this was a
GStreamer issue that is apparently now fixed (a workaround is to use
d3d11).*
- With Direct3D 11.0 or greater, various options can be set using
e.g. `-vs "d3d11videosink <options>"` (see the gstreamer videosink

View File

@@ -91,7 +91,9 @@ UxPlay 1.72: An open\-source AirPlay mirroring (+ audio streaming) server:
.IP
choices: ximagesink,xvimagesink,vaapisink,glimagesink,
.IP
gtksink,waylandsink,osxvideosink,kmssink,d3d11videosink,...
gtksink,waylandsink,kmssink,fbdevsink,osxvideosink,
.IP
d3d11videosink,d3d12videosink ...
.PP
.TP
\fB\-vs\fR 0 Streamed audio only, with no video display window.

View File

@@ -806,7 +806,7 @@ static void print_info (char *name) {
printf("-s wxh[@r]Request to client for video display resolution [refresh_rate]\n");
printf(" default 1920x1080[@60] (or 3840x2160[@60] with -h265 option)\n");
printf("-o Set display \"overscanned\" mode on (not usually needed)\n");
printf("-fs Full-screen (only with X11, Wayland, VAAPI, D3D11, kms)\n");
printf("-fs Full-screen (only with X11, Wayland, VAAPI, D3D11/12, kms)\n");
printf("-p Use legacy ports UDP 6000:6001:7011 TCP 7000:7001:7100\n");
printf("-p n Use TCP and UDP ports n,n+1,n+2. range %d-%d\n", LOWEST_ALLOWED_PORT, HIGHEST_PORT);
printf(" use \"-p n1,n2,n3\" to set each port, \"n1,n2\" for n3 = n2+1\n");
@@ -821,7 +821,8 @@ static void print_info (char *name) {
printf(" another choice when using v4l2h264dec: v4l2convert\n");
printf("-vs ... Choose the GStreamer videosink; default \"autovideosink\"\n");
printf(" some choices: ximagesink,xvimagesink,vaapisink,glimagesink,\n");
printf(" gtksink,waylandsink,osxvideosink,kmssink,d3d11videosink etc.\n");
printf(" gtksink,waylandsink,kmssink,fbdevsink,osxvideosink,\n");
printf(" d3d11videosink,d3v12videosink, etc.\n");
printf("-vs 0 Streamed audio only, with no video display window\n");
printf("-v4l2 Use Video4Linux2 for GPU hardware h264 decoding\n");
printf("-bt709 Sometimes needed for Raspberry Pi models using Video4Linux2 \n");
@@ -2608,20 +2609,6 @@ int main (int argc, char *argv[]) {
}
#endif
#ifdef _WIN32
/* because of issues in videosink dvd312videosink (segfault when resolution changes
with certain Nvdia graphics cards) make the default videosink d3d11videosink, and
use its decoder */
if (videosink == "autovideosink") {
videosink.erase();
videosink.append("d3d11videosink");
}
if (videosink == "d3d11videosink") {
video_decoder.erase();
video_decoder.append("d3d11h264dec");
}
#endif
if (videosink == "0") {
use_video = false;
videosink.erase();