v4l2_m2m_last_buffer_done(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… v4l2_m2m_last_buffer_done (9) β€” Kernel API Manual

okay so bestie, you're in the kernel API manual, section 9, and the star of the show is literally v4l2_m2m_last_buffer_done πŸŽ€ she's not a command you type, she's a kernel function, and she has one job. main character energy fr.


✨ NAME ✨

v4l2_m2m_last_buffer_done β€” marks the buffer with LAST flag and DONE πŸ”₯

like, that's it. that's her whole thing. no cap.


🌸 SYNOPSIS 🌸

void v4l2_m2m_last_buffer_done (struct v4l2_m2m_ctx *m2m_ctx , struct
vb2_v4l2_buffer *vbuf );

returns void, so she gives you nothing back β€” she just does the thing and dips πŸ’…


πŸ¦‹ ARGUMENTS πŸ¦‹

  • m2m_ctx β€” the m2m context assigned to the instance, handed to you by struct v4l2_m2m_ctx. she's the vibe of the whole operation, keep her close 🫢
  • vbuf β€” pointer to struct v4l2_buffer. literally the buffer in question, the one getting the flags. point her at it and let the function cook πŸ“

πŸ‘‘ SEE ALSO πŸ‘‘

okay so this is the part where I list literally everyone in the group chat, because bestie has a LOT of friends and I'm not leaving a single one out πŸ’–

Kernel file ./include/media/v4l2-mem2mem.h β€” that's the home base, the address, the whole zip code 🏠

then the cast, in order, no skips:

struct v4l2_m2m_ops(9), struct v4l2_m2m_queue_ctx(9), struct v4l2_m2m_ctx(9), struct v4l2_m2m_buffer(9), v4l2_m2m_get_curr_priv(9), v4l2_m2m_get_vq(9), v4l2_m2m_try_schedule(9), v4l2_m2m_job_finish(9), v4l2_m2m_buf_done_and_job_finish(9), v4l2_m2m_clear_state(9), v4l2_m2m_mark_stopped(9), v4l2_m2m_dst_buf_is_last(9), v4l2_m2m_has_stopped(9), v4l2_m2m_is_last_draining_src_buf(9), v4l2_m2m_suspend(9), v4l2_m2m_resume(9), v4l2_m2m_reqbufs(9), v4l2_m2m_querybuf(9), v4l2_m2m_qbuf(9), v4l2_m2m_dqbuf(9), v4l2_m2m_prepare_buf(9), v4l2_m2m_create_bufs(9), v4l2_m2m_expbuf(9), v4l2_m2m_streamon(9), v4l2_m2m_streamoff(9), v4l2_m2m_update_start_streaming_state(9), v4l2_m2m_update_stop_streaming_state(9), v4l2_m2m_encoder_cmd(9), v4l2_m2m_decoder_cmd(9), v4l2_m2m_poll(9), v4l2_m2m_mmap(9), v4l2_m2m_init(9), v4l2_m2m_release(9), v4l2_m2m_get(9), v4l2_m2m_put(9), v4l2_m2m_ctx_init(9), v4l2_m2m_ctx_release(9), v4l2_m2m_buf_queue(9), v4l2_m2m_num_src_bufs_ready(9), v4l2_m2m_num_dst_bufs_ready(9), v4l2_m2m_next_buf(9), v4l2_m2m_next_src_buf(9), v4l2_m2m_next_dst_buf(9), v4l2_m2m_last_buf(9), v4l2_m2m_last_src_buf(9), v4l2_m2m_last_dst_buf(9), v4l2_m2m_for_each_dst_buf(9), v4l2_m2m_for_each_src_buf(9), v4l2_m2m_for_each_dst_buf_safe(9), v4l2_m2m_for_each_src_buf_safe(9), v4l2_m2m_get_src_vq(9), v4l2_m2m_get_dst_vq(9), v4l2_m2m_buf_remove(9), v4l2_m2m_src_buf_remove(9), v4l2_m2m_dst_buf_remove(9), v4l2_m2m_buf_remove_by_buf(9), v4l2_m2m_src_buf_remove_by_buf(9), v4l2_m2m_dst_buf_remove_by_buf(9), v4l2_m2m_buf_copy_metadata(9)

periodt. that's the whole roster, every single one, no gatekeeping πŸ’œ


ngl bestie, this page is short but she's important β€” she's the one putting LAST and DONE on the buffer, so the rest of the pipeline knows the vibe check is officially over πŸ’€βœ¨

and that's the whole page!! 🌈 source/path: ./include/media, version/date: October 2026, and the page itself is v4l2_m2m_last_buffer_done(9) β€” mwah, love you, bye πŸ«ΆπŸ’…πŸŽ€

πŸ“¦ where this page comes from