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>&lt;videosink&gt;</code> are <code>d3d12videosink</code>,
<code>d3d11videosink</code>, <code>d3dvideosink</code>, <code>d3d11videosink</code>, <code>d3dvideosink</code>,
<code>glimagesink</code>, <code>gtksink</code>, <code>glimagesink</code>, <code>gtksink</code>,
<code>autovideosink</code>. If you do not specify the videosink, the <code>autovideosink</code>. <em>There have been reports of segfaults of
d3d11videosink will be used (users have reported segfaults of the newer the newer d3d12 videodecoder on certain older Nvidia cards when the
d3d12 videodecoder on certain older Nvidia cards when the image image resolution changes, e.g., when the iOS client is rotated between
resolution changes: d3d11 will used by default until this is fixed).</p> portrait and landcape modes: this was a GStreamer issue that is
apparently now fixed (a workaround is to use d3d11).</em></p>
<ul> <ul>
<li>With Direct3D 11.0 or greater, various options can be set using <li>With Direct3D 11.0 or greater, various options can be set using
e.g. <code>-vs "d3d11videosink &lt;options&gt;"</code> (see the 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, If you wish to specify the videosink using the `-vs <videosink>` option,
some choices for `<videosink>` are `d3d12videosink`, ``d3d11videosink``, ```d3dvideosink```, some choices for `<videosink>` are `d3d12videosink`, ``d3d11videosink``, ```d3dvideosink```,
`glimagesink`, ``gtksink``, ```autovideosink```. If you do not specify the videosink, `glimagesink`, ``gtksink``, ```autovideosink```. _There have been reports of
the d3d11videosink will be used (users have reported segfaults of the newer d3d12 videodecoder segfaults of the newer d3d12 videodecoder
on certain older Nvidia cards when the image resolution changes: on certain older Nvidia cards when the image resolution changes, e.g., when the iOS client
d3d11 will used by default until this is fixed). 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 - With Direct3D 11.0 or greater, various options can be set
using e.g. `-vs "d3d11videosink <options>"` (see the gstreamer videosink 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, If you wish to specify the videosink using the `-vs <videosink>` option,
some choices for `<videosink>` are `d3d12videosink`, `d3d11videosink`, some choices for `<videosink>` are `d3d12videosink`, `d3d11videosink`,
`d3dvideosink`, `glimagesink`, `gtksink`, `autovideosink`. If you do not `d3dvideosink`, `glimagesink`, `gtksink`, `autovideosink`. *There have
specify the videosink, the d3d11videosink will be used (users have been reports of segfaults of the newer d3d12 videodecoder on certain
reported segfaults of the newer d3d12 videodecoder on certain older older Nvidia cards when the image resolution changes, e.g., when the iOS
Nvidia cards when the image resolution changes: d3d11 will used by client is rotated between portrait and landcape modes: this was a
default until this is fixed). 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 - With Direct3D 11.0 or greater, various options can be set using
e.g. `-vs "d3d11videosink <options>"` (see the gstreamer videosink 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 .IP
choices: ximagesink,xvimagesink,vaapisink,glimagesink, choices: ximagesink,xvimagesink,vaapisink,glimagesink,
.IP .IP
gtksink,waylandsink,osxvideosink,kmssink,d3d11videosink,... gtksink,waylandsink,kmssink,fbdevsink,osxvideosink,
.IP
d3d11videosink,d3d12videosink ...
.PP .PP
.TP .TP
\fB\-vs\fR 0 Streamed audio only, with no video display window. \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("-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(" default 1920x1080[@60] (or 3840x2160[@60] with -h265 option)\n");
printf("-o Set display \"overscanned\" mode on (not usually needed)\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 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("-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"); 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(" another choice when using v4l2h264dec: v4l2convert\n");
printf("-vs ... Choose the GStreamer videosink; default \"autovideosink\"\n"); printf("-vs ... Choose the GStreamer videosink; default \"autovideosink\"\n");
printf(" some choices: ximagesink,xvimagesink,vaapisink,glimagesink,\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("-vs 0 Streamed audio only, with no video display window\n");
printf("-v4l2 Use Video4Linux2 for GPU hardware h264 decoding\n"); printf("-v4l2 Use Video4Linux2 for GPU hardware h264 decoding\n");
printf("-bt709 Sometimes needed for Raspberry Pi models using Video4Linux2 \n"); printf("-bt709 Sometimes needed for Raspberry Pi models using Video4Linux2 \n");
@@ -2608,20 +2609,6 @@ int main (int argc, char *argv[]) {
} }
#endif #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") { if (videosink == "0") {
use_video = false; use_video = false;
videosink.erase(); videosink.erase();
@@ -2635,7 +2622,7 @@ int main (int argc, char *argv[]) {
if (videosink == "waylandsink" || videosink == "vaapisink") { if (videosink == "waylandsink" || videosink == "vaapisink") {
videosink_options.append(" fullscreen=true"); videosink_options.append(" fullscreen=true");
} else if (videosink == "kmssink") { } else if (videosink == "kmssink") {
videosink_options.append(" force_modesetting=true"); videosink_options.append(" force_modesetting=true");
} }
} }