https://bugs.winehq.org/show_bug.cgi?id=50239
Zebediah Figura z.figura12@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Summary|The Legend of Heroes: |Multiple 32-bit |Trails in the Sky Xvid |applications have slow or |movie playback lags and is |lagging video due to slow |very slow |YUV -> RGB conversion in | |GStreamer (The Legend of | |Heroes: Trails in the Sky, | |Blazblue Centralfiction) Ever confirmed|0 |1 Status|UNCONFIRMED |NEW Component|-unknown |winegstreamer
--- Comment #9 from Zebediah Figura z.figura12@gmail.com --- 0:01:22.441406537 7455 0xf530c880 DEBUG GST_PERFORMANCE gstvideoconvert.c:725:gst_video_convert_transform_frame:<videoconvert3> doing colorspace conversion from I420 -> to BGRx 0:01:22.469797927 7455 0xf530c880 LOG GST_BUFFER gstbuffer.c:760:_gst_buffer_dispose: release 0xe865c000 to pool 0xea29fe58
Yeah, I was afraid of something like this.
videoconvert is far too slow—28 ms per frame. It's a problem only for the second video because it's much larger (1920x960 vs 640x320). The main reason it's slow is that it's being done all in slow, SISD software. Normally it'd go through SIMD via liborc—in fact, it would, in 64-bit—but the I420 -> ARGB conversion needs more than 8 registers, and liborc can't spill them.
I think the solution is to improve liborc, either by helping it use less registers, or by implementing spilling.
I've observed this problem in another game, Blazblue Centralfiction. In that case the video isn't extremely slow, but it does drop many frames due to GStreamer's internal QoS handling.