Christian König wrote:

mplayer sw decode + yuy2 vdpau output is corrupted.
Yeah, still working on that. The problem is tilling related, just
disable 2D tilling and it works like a charm. I think I've found the
problem right now and going to send out some fixed patches in the next
couple of minutes.

Working OK for me now with xine and mplayer using your vlwork git, which I assume is the same as applying the latest patches.

Is there a way to disable mesa 2D tiling anymore? I know about the xorg.conf options but they don't seem to affect mesa.

Unfortunately mplayer just doesn't tries to use a planar 422 format
(something which is really easy to support).

I think mplayer's vdpau was written by nvidia, so maybe it assumes things - but then I don't know that. I do know it blindly tries to use yuy2 even if it's not advertised.

One thing I noticed looking at the vdpau spec on their doxygen site is that YUY16 isn't even listed.

When -vo gl is used mplayer will directly use 422 planar (which I assume is what fourcc.org calles YV16).

As for xine my current issues are the logo, mine is playing

share/xine/skins/xine-ui_logo.png with plugin gdkpixbuf

Before 422 worked properly it was distorted, now it's almost OK, but has a green band at the bottom. If I toggle between full screen and window a few times I can get it to crash - bt attached. It works OK with xv, and actually playing a raw 422 yuy2 stream with xine + vdpau looks OK and won't crash toggling (it is different size though).


Issue 2 is that doing something that makes xine try to render over the video eg. skipping or changing volume results in an assert -

vl/vl_video_buffer.c:320:vl_video_buffer_sampler_view_components: Assertion `component < 3' failed.

bt also attached.





Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0xb4b55b90 (LWP 2837)]
0xb73e3b6c in memcpy () from /lib/libc.so.6
(gdb) bt full
#0  0xb73e3b6c in memcpy () from /lib/libc.so.6
No symbol table info available.
#1  0xb53ced5c in util_copy_rect (dst=0xabd62400 <Address 0xabd62400 out of 
bounds>, format=PIPE_FORMAT_R8G8_R8B8_UNORM, dst_stride=1536, dst_x=0, dst_y=0, 
width=1216, height=464, src=0xababd000 <Address 0xababd000 out of bounds>, 
src_stride=1216, src_x=0, src_y=0) at util/u_rect.c:83
        i = 2882938720
        __FUNCTION__ = "util_copy_rect"
#2  0xb53d4ede in u_default_transfer_inline_write (pipe=0x951e1a0, 
resource=0x961ae98, level=0, usage=<value optimized out>, box=0xb4b550b4, 
data=0xaba36020, stride=1216, layer_stride=0) at util/u_transfer.c:57
        src_data = (const uint8_t *) 0xaba36020 ""
        i = 1
        transfer = (struct pipe_transfer *) 0x96188e0
        map = (uint8_t *) 0xabcb8000 <Address 0xabcb8000 out of bounds>
        __FUNCTION__ = "u_default_transfer_inline_write"
#3  0xb537b801 in vlVdpVideoSurfacePutBitsYCbCr (surface=33, 
source_ycbcr_format=3, source_data=0xb4b551f0, source_pitches=0xb4b551fc) at 
surface.c:303
        dst_box = {x = 0, y = 0, z = 0, width = 608, height = 464, depth = 1}
        sv = (struct pipe_sampler_view *) 0x96fde38
        pformat = <value optimized out>
        pipe = (struct pipe_context *) 0x951e1a0
        sampler_views = (struct pipe_sampler_view **) 0x972d374
        j = 1
#4  0xb5646e4f in guarded_vdp_video_surface_putbits_ycbcr (surface=33, 
source_ycbcr_format=3, source_data=0xb4b551f0, source_pitches=0xb4b551fc) at 
video_out_vdpau.c:203
        r = VDP_STATUS_OK
#5  0xb564b384 in vdpau_display_frame (this_gen=0x951b770, frame_gen=0x96374d8) 
at video_out_vdpau.c:1790
        pitches = {1216, 0, 0}
        data = {0xaba36020, 0x0, 0x0}
        this = (vdpau_driver_t *) 0x951b770
        frame = (vdpau_frame_t *) 0x96374d8
        st = VDP_STATUS_OK
        surface = 3075176270
        chroma = 1
        color_standard = 0
        mix_w = 608
        mix_h = 452
        stream_speed = 251933843756417025
        redraw_needed = 0
        layer_count = 2837
        layer = (VdpLayer *) 0x951b770
        ovl_layer = {struct_version = 1431655765, source_surface = 1073042773, 
source_rect = 0x504ac9, destination_rect = 0xb74b62fe}
        vid_dest = (VdpRect *) 0xb4b552b8
        vid_dest_rect = {x0 = 0, y0 = 15, x1 = 156350320, y1 = 4294967280}
        vid_source = {x0 = 157504732, y0 = 129, x1 = 3075190796, y1 = 0}
        out_dest = {x0 = 157504696, y0 = 157504696, x1 = 3031782024, y1 = 
3077508823}
        frame_duration = -1217233232
        non_progressive = 157504504
        last_time = 13218767150665171072
#6  0xb76e7dd7 in overlay_and_display_frame (this=0x96350d0, img=0x96374d8, 
vpts=5262025) at video_out.c:1370
        ite = <value optimized out>
#7  0xb76e8ca3 in video_out_loop (this_gen=0x96350d0) at video_out.c:1545
        vpts = 5262025
        img = (vo_frame_t *) 0x96374d8
        this = (vos_t *) 0x1c7
        next_frame_vpts = 5261925
        usec_to_sleep = <value optimized out>
        disable_decoder_flush_from_video_out = 0
#8  0xb74b4120 in start_thread () from /lib/libpthread.so.0
No symbol table info available.
#9  0xb74363ce in clone () from /lib/libc.so.6
No symbol table info available.

Program received signal SIGTRAP, Trace/breakpoint trap.
[Switching to Thread 0xb4b8fb90 (LWP 2510)]
_debug_assert_fail (expr=0xb54b612c "component < 3", file=0xb54b6313 
"vl/vl_video_buffer.c", line=320, function=0xb54b6440 
"vl_video_buffer_sampler_view_components") at util/u_debug.c:281
281     }
(gdb) bt full
#0  _debug_assert_fail (expr=0xb54b612c "component < 3", file=0xb54b6313 
"vl/vl_video_buffer.c", line=320, function=0xb54b6440 
"vl_video_buffer_sampler_view_components") at util/u_debug.c:281
No locals.
#1  0xb545a5c8 in vl_video_buffer_sampler_view_components (buffer=0xa57b808) at 
vl/vl_video_buffer.c:320
        res = (struct pipe_resource *) 0xa548340
        nr_components = 4
        sv_templ = {reference = {count = 0}, format = 
PIPE_FORMAT_B8G8R8A8_UNORM, texture = 0x0, context = 0x0, u = {tex = 
{first_layer = 0, last_layer = 0, first_level = 0, last_level = 0}, buf = 
{first_element = 0, last_element = 0}}, swizzle_r = 2, swizzle_g = 2, swizzle_b 
= 2, swizzle_a = 5}
        pipe = (struct pipe_context *) 0x9daa2c0
        sampler_format = (const enum pipe_format *) 0xb54b63c4
        plane_order = (const unsigned int *) 0xb54b63e8
        i = 0
        j = 3
        component = 3
        __FUNCTION__ = "vl_video_buffer_sampler_view_components"
#2  0xb541495a in vl_compositor_set_buffer_layer (s=0xa576618, c=0x9da9a28, 
layer=0, buffer=0xa57b808, src_rect=0x0, dst_rect=0x0, 
deinterlace=VL_COMPOSITOR_WEAVE) at vl/vl_compositor.c:884
        sampler_views = <value optimized out>
        i = <value optimized out>
        __FUNCTION__ = "vl_compositor_set_buffer_layer"
#3  0xb53b84c8 in vlVdpOutputSurfacePutBitsYCbCr (surface=33, 
source_ycbcr_format=5, source_data=0xb4b8f234, source_pitches=0xb4b8f220, 
destination_rect=0xb4b8f224, csc_matrix=0x0) at output.c:497
        compositor = (struct vl_compositor *) 0x9da9a28
        cstate = (struct vl_compositor_state *) 0xa576618
        pipe = (struct pipe_context *) 0x9daa2c0
        format = PIPE_FORMAT_B8G8R8A8_UNORM
        vtmpl = {context = 0x0, buffer_format = PIPE_FORMAT_B8G8R8A8_UNORM, 
chroma_format = PIPE_VIDEO_CHROMA_FORMAT_420, width = 315, height = 22, 
interlaced = false, destroy = 0, get_sampler_view_planes = 0, 
get_sampler_view_components = 0, get_surfaces = 0, associated_data = 0x0, 
decoder = 0x0, 
  destroy_associated_data = 0}
        vbuffer = (struct pipe_video_buffer *) 0xa57b808
        dst_rect = {x0 = 27724, x1 = 133729, y0 = 173938080, y1 = -1254391397}
        sampler_views = (struct pipe_sampler_view **) 0xa57b84c
#4  0xb5681bca in vdpau_overlay_end (this_gen=0x9da7890, frame_gen=0x9ec3280) 
at video_out_vdpau.c:715
        ovl = (vdpau_overlay_t *) 0x9da79ec
        is_argb = 0
        put_rect = {x0 = 0, y0 = 0, x1 = 315, y1 = 22}
        voovl = (vo_overlay_t *) 0xa574330
        pixmap = (uint32_t *) 0xa461fd8
        st = 2510
        pitch = 1260
        this = (vdpau_driver_t *) 0x9da7890
        i = 0
#5  0xb772b743 in video_overlay_multiple_overlay_blend (this_gen=0x9ec15d8, 
vpts=250886, output=0x9da7890, vo_img=0x9ec3280, enabled=1) at 
video_overlay.c:539
        this = <value optimized out>
        i = 21
        handle = 21
#6  0xb7721cd6 in overlay_and_display_frame (this=0x9ec11f0, img=0x9ec3280, 
vpts=250886) at video_out.c:1362
        ite = <value optimized out>
#7  0xb7722ca3 in video_out_loop (this_gen=0x9ec11f0) at video_out.c:1545
        vpts = 250886
        img = (vo_frame_t *) 0x9ec3280
        this = (vos_t *) 0x1
        next_frame_vpts = 250868
        usec_to_sleep = <value optimized out>
        disable_decoder_flush_from_video_out = 0
#8  0xb74ee120 in start_thread () from /lib/libpthread.so.0
No symbol table info available.
#9  0xb74703ce in clone () from /lib/libc.so.6
No symbol table info available.

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to