Skip to content

Crash when trying to use h264_vaapi #13

@YaLTeR

Description

@YaLTeR

Trying to use h264_vaapi as follows:

wf-recorder -d /dev/dri/renderD129 -c h264_vaapi

crashes almost immediately. For the record, encoding using h264_vaapi with ffmpeg works with the following command line:

ffmpeg -vaapi_device /dev/dri/renderD129 -i recording.mp4 -vf 'format=nv12,hwupload' -c h264_vaapi -y out.mp4

Backtrace:

#0  0x00007fffec60c822 in ?? () from /usr/lib/dri/radeonsi_drv_video.so
No symbol table info available.
#1  0x00007fffec5cedd5 in ?? () from /usr/lib/dri/radeonsi_drv_video.so
No symbol table info available.
#2  0x00007fffec4581cd in ?? () from /usr/lib/dri/radeonsi_drv_video.so
No symbol table info available.
#3  0x00007ffff632e641 in vaEndPicture () from /usr/lib/libva.so.2
No symbol table info available.
#4  0x00007ffff7090e52 in ?? () from /usr/lib/libavcodec.so.58
No symbol table info available.
#5  0x00007ffff7091598 in ?? () from /usr/lib/libavcodec.so.58
No symbol table info available.
#6  0x00007ffff70917ae in ?? () from /usr/lib/libavcodec.so.58
No symbol table info available.
#7  0x00007ffff6c50fc3 in avcodec_encode_video2 () from /usr/lib/libavcodec.so.58
No symbol table info available.
#8  0x000055555555a677 in FrameWriter::add_frame (this=0x7fffe8000b40,
    pixels=0x7fffee207000 "\270\242`\377Ȱe\377ŭa\377\300\250\\\377\301\250]\377Ĭa\377Ĭa\377\301\251^\377ë`\377ë_\377\301\251^\377\300\247\\\377ª_\377\301\251]\377ī`\377ʱf\377Ȱd\377Ŭa\377Ĭ`\377ŭb\377\301\250]\377ë`\377ë_\377\277\247\\\377\277\247
\\\377ë_\377Ǯc\377ɰe\377ǯd\377Ǯc\377Ǯc\377Ȱd\377ʱf\377ê_\377©^\377Ƭb\377ê_\377Ŭa\377īa\377¨^\377ūa\377īa\377©_\377\301\250]\377Ȯd\377ê_\377ê_\377ǯd\377ë`\377ª^\377"..., msec=0, y_invert=true)
    at ../src/frame-writer.cpp:237
        stride = {-10240}
        formatted_pixels = 0x7fffef014800 "# \034\377# \034\377# \034\377# \034\377# \034\377# \034\377# \034\377# \034\377# \034\377# \034\377# \034\377# \034\377# \034\377# \034\377# \034\377# \034\377# \034\377# \034\377# \034\377# \034\377#
\034\377# \034\377# \034\377# \034\377# \034\377# \034\377# \034\377# \034\377# \034\377# \034\377# \034\377# \034\377# \034\377# \034\377# \034\377# \034\377# \034\377# \034\377# \034\377# \034\377# \034\377# \034\377# \034\377# \034\377# \034\
377# \034\377# \034\377# \034\377# \034\377# \034\377"...
        output_frame = 0x7fffe8000c80
        got_output = 0
#9  0x000055555555e4d7 in write_loop (params=...) at ../src/main.cpp:305
        buffer = @0x55555556b740: {wl_buffer = 0x5555555a9070, data = 0x7fffee207000, format = WL_SHM_FORMAT_ARGB8888, width = 2560, height = 1440, stride = 10240, y_invert = true, presented = {tv_sec = 5760, tv_nsec = 51201456},
          base_msec = 0, released = {_M_base = {static _S_alignment = 1, _M_i = false}}, available = {_M_base = {static _S_alignment = 1, _M_i = true}}}
        sigset = {__val = {2, 0 <repeats 15 times>}}
        writer = std::unique_ptr<FrameWriter> = {get() = 0x7fffe8000b40}
        last_encoded_frame = 0
#10 0x000055555555e94c in <lambda()>::operator()(void) const (__closure=0x5555555aa0b8) at ../src/main.cpp:616
        params = {file = "recording.mp4", width = 64, height = 0, format = (unknown: 1431749128), codec = "h264_vaapi", hw_device = "/dev/dri/renderD129", codec_options = std::map with 0 elements}
#11 0x000055555555f999 in std::__invoke_impl<void, main(int, char**)::<lambda()> >(std::__invoke_other, <lambda()> &&) (__f=...) at /usr/include/c++/8.2.1/bits/invoke.h:60
No locals.
#12 0x000055555555f6bf in std::__invoke<main(int, char**)::<lambda()> >(<lambda()> &&) (__fn=...) at /usr/include/c++/8.2.1/bits/invoke.h:95
No locals.
#13 0x000055555555fc38 in std::thread::_Invoker<std::tuple<main(int, char**)::<lambda()> > >::_M_invoke<0>(std::_Index_tuple<0>) (this=0x5555555aa0b8) at /usr/include/c++/8.2.1/thread:244
No locals.
#14 0x000055555555fbf9 in std::thread::_Invoker<std::tuple<main(int, char**)::<lambda()> > >::operator()(void) (this=0x5555555aa0b8) at /usr/include/c++/8.2.1/thread:253
No locals.
#15 0x000055555555fbce in std::thread::_State_impl<std::thread::_Invoker<std::tuple<main(int, char**)::<lambda()> > > >::_M_run(void) (this=0x5555555aa0b0) at /usr/include/c++/8.2.1/thread:196
No locals.
#16 0x00007ffff6618063 in std::execute_native_thread_routine (__p=0x5555555aa0b0) at /build/gcc/src/gcc/libstdc++-v3/src/c++11/thread.cc:80
        __t = std::unique_ptr<std::thread::_State> = {get() = 0x5555555aa0b0}
#17 0x00007ffff6526a9d in start_thread () from /usr/lib/libpthread.so.0
No symbol table info available.
#18 0x00007ffff6456b23 in clone () from /usr/lib/libc.so.6
No symbol table info available.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions