-
-
Notifications
You must be signed in to change notification settings - Fork 0
Fork Analysis Report
Detailed findings from every fork of jocover/jetson-ffmpeg and Keylost/jetson-ffmpeg. This document preserves all agent findings so nothing is lost between sessions.
Generated: 2026-06-12 Scope: 237 unique forks, 62 active, 2 upstream repos
- Upstream: jocover/jetson-ffmpeg
- Upstream: Keylost/jetson-ffmpeg
- Fork: dsleep (32 ahead)
- Fork: muxable (28 ahead)
- Fork: YuriiHoliuk (26 ahead)
- Fork: xia-chu (16 ahead)
- Fork: mattangus (14 ahead)
- Fork: JeanPaulSB (11 ahead)
- Fork: HunterAP23 (10 ahead)
- Fork: wangxiaoshuang (9 ahead)
- Fork: hsuanguo (8 ahead)
- Fork: bradcagle (7 ahead)
- Fork: fingul (7 ahead)
- Fork: mguzzina (6 ahead)
- Fork: v-faeez-kadiri (5 ahead)
- Fork: spotai (5 ahead)
- Fork: izdeveloper (3 ahead)
- Fork: madsciencetist (3 ahead)
- Fork: w3sip (branch-only)
- Fork: cybernhl/cgutman
- Small forks + branch-only
- Fork subtrees (douo, vietnx, aveao)
- Master priority list
Total issues: 119 (80 open, 39 closed) — repo effectively abandoned since ~2022 Total PRs: 20 (11 open, 7 merged, 2 closed-unmerged)
1. nvbuf_utils removal / JetPack 5.1.2+ build failure — #115, #120, #123, #126, #134, #136
- CMake
find_library(LIB_NVBUF nvbuf_utils)fails on JP 5.1.2+ - Unresolved upstream; PR #125 (douo) migrates decoder only
- Migration guide: https://developer.nvidia.com/sites/default/files/akamai/embedded/nvbuf_utils_to_nvutils_migration_guide.pdf
2. FFmpeg version support 5.x/6.x/7.x — #129, #138
- Upstream patch only supports 4.2; API changed (AVCodec→FFCodec v60, encode2→receive_packet)
- PR #132 (bmegli) adds new encode API
3. Encoder latency (old encode2 API) — #131, #7
- encode2 callback blocks synchronously; 2-5 frame latency
- PR #132 implements send_frame/receive_packet
4. Encoder thread race condition — #130
-
packet_poolsaccessed by DQ callback + FFmpeg thread without synchronization - Identified by bmegli; no fix exists
5. Missing return statement UB — #127, #98
- Encoder/decoder capture callbacks declared void* but no return
- GCC on newer L4T → segfault
- Fix: https://github.com/Extend-Robotics/jetson-ffmpeg/commit/0229e5ba (encoder)
- Fix: https://github.com/Extend-Robotics/jetson-ffmpeg/commit/6d327624 (decoder)
6. Encoder PTS truncation + circular buffer — #41, #48, #100
- PTS % 1000000 causes non-monotonic DTS in FLV/RTMP
- Old packets re-queued with stale timestamps
- Patches: https://github.com/jocover/jetson-ffmpeg/files/4803889/patches.zip
7. YUVJ420P / pixel format issues — #20, #60, #66, #68, #73, #83, #116
- Decoder hardcodes yuv420p; yuvj420p (JPEG range) causes crashes
- PR #74 (open): treat YUVJ420P same as YUV420P
8. Linesize/stride mismatch crash — #64, #80
- Hardware stride ≠ FFmpeg linesize at 4K; image_copy_plane asserts
- PR #79 (vietnx) MERGED — the critical fix
9. Decoder hangs with IP cameras — #111, #1, #5, #13
- Certain RTSP streams cause capture loop hang
- PR #22 (cgutman, Moonlight fixes) MERGED; PR #70 (pix_fmt default) MERGED
10. NV12 pixel format support — #11, #73, #133
- Only yuv420p exposed; NV12 is native HW format but not available
- PR #25, #26, #27 (xsacha) open+unmerged
11. Decoder performance — setMaxPerfMode missing — #120, PR #125
- 4K HEVC: 28fps → 64fps with one line
setMaxPerfMode(1) - 720p H264: 46fps → 290fps
- Not merged upstream; implemented in Keylost
12. Decode in child process — PR #99
- V4L2 fd inheritance after fork() breaks decoder
- Keylost PR open+unmerged upstream
13. Memory leaks — PR #15 (merged), #16 (merged), #82 (open)
- Decoder leaks fixed; encoder leaks unfixed since 2021
14. Encoder quality control — #50, #52, #7, #93
- No CRF; bitrate settings misapplied; lossless requires hardcode
15. Wrong encoder output size / green line — #8, #101, #51
- Dimensions must be divisible by 16; encoder pads silently
16. CUDA / zero-copy — #62, #67, #92, #93, #121
- Decoded frames always copied to CPU; no
-hwaccel cudasupport - https://docs.nvidia.com/jetson/l4t-multimedia/l4t_mm_02_video_dec_cuda.html
17. Non-monotonic DTS — #76, #110
- Related to PTS truncation cluster
18. RTSP looping stream failure — #113
- Decoder fails on RTSP stream restart; NVIDIA V4L2 limitation
19. Build issues — #2, #37, #47, #56, #109
- Various pkg-config / cmake path / patch application problems
20. VP8 missing definition — #71, #72
- VP8 codec registration omitted from allcodecs.c
21. MPEG2 decoder segfault — #38
- Unresolved; multiple users confirmed crash
22. High CPU with low GPU utilization — #18, #35, #42, #93
- NVENC/NVDEC appear in separate jtop counters, not GPU meter
- setMaxPerfMode is real perf fix
23. Encoder extradata/SPS-PPS issues — #3, #45
- extradata_size absurdly large sometimes
- teplofizik patch: https://github.com/jocover/jetson-ffmpeg/files/4804050/ffmpeg_nvmpi_v2.zip
24. DMA buffer encode — #117, #118
- Feature request for direct DMA-buffer-fd encode; unresolved
25. Thread lifecycle / Moonlight — #10, #104
- Rapid open/close crashes; GCC >7.3.x thread-join hang
- PR #22, #23 (cgutman) MERGED
26. NvBuf header version mismatch — #31, #32
- Repo-vendored nvbuf_utils.h differs from system version
27. 10-bit video — #75, #80
- HW supports 10-bit but nvmpi doesn't expose it
28. License — #30
- MIT license added by jocover after cgutman request
- PR #15: memory leak fixes in decoder
- PR #16: additional memory leak fix
- PR #22: cgutman Moonlight fixes (thread lifecycle, double-free, frame race)
- PR #23: cgutman low-delay decode
- PR #28: allow FFmpeg build without nvmpi
- PR #70: pix_fmt default fallback to yuv420p
- PR #79: vietnx linesize/stride fix
- NVIDIA NvUtils migration guide: https://developer.nvidia.com/sites/default/files/akamai/embedded/nvbuf_utils_to_nvutils_migration_guide.pdf
- NVIDIA setMaxPerfMode docs: https://docs.nvidia.com/jetson/l4t-multimedia/classNvVideoDecoder.html#a3334a8ebb14385f42dabc62a7dbdadb2
- NVIDIA decoded frames to CUDA: https://docs.nvidia.com/jetson/l4t-multimedia/l4t_mm_02_video_dec_cuda.html
- NVIDIA unified memory on Tegra: https://docs.nvidia.com/cuda/archive/10.2/cuda-for-tegra-appnote/index.html#memory-selection
- teplofizik encoder patches: https://github.com/jocover/jetson-ffmpeg/files/4803889/patches.zip
- teplofizik extradata fix: https://github.com/jocover/jetson-ffmpeg/files/4804050/ffmpeg_nvmpi_v2.zip
- Extend-Robotics missing return fixes: commits 0229e5ba, 6d327624
- LinusCDE/mad-jetson-ffmpeg: combines NVIDIA official decode + jetson-ffmpeg encode
- NVIDIA official decode-only patch: http://ffmpeg.org/pipermail/ffmpeg-devel/2020-June/263746.html
- Pre-built Jetson packages: https://jetson.repo.azka.li
- Performance: 4K HEVC 28→64fps, 720p H264 46→290fps with setMaxPerfMode
Total issues: 40 (18 open, 22 closed) Total PRs: 21 (12 open, 5 merged, 4 closed-unmerged)
- RTSP out-of-band SPS/PPS hang — #1, #14 — Our fix: gjrtimmer@08e32c15; w3sip@de0b039 partial
- JetPack 5.1.2+ nvbuf_utils — #16, PR#23 — Fixed in master
- Encoder bufsize ignored — #5 — Fixed upstream
- FFmpeg version support — #6, #13, #28, PR#19 — ffpatch.sh universal now
- Decode resize alignment — PR#8→reverted #10 — Fixed in master later
- Child process segfault / stubs — PR#9 — Merged 2024-09-30
- WITH_NVUTILS CPU regression — #11 — Measurement artifact
- All frames marked as keyframes — #26 — UNFIXED upstream (spotai has fix)
- Segmented HEVC — #39 — Fixed Aug 2025
- Codec flush not implemented — #42 — UNFIXED
- Encoder 4K max — #3, #44 — Hardware limit
- Orin Nano no HW encoder — #43 — Hardware limit
- HEVC over RTMP — #35 — Needs Enhanced RTMP (FFmpeg ≥6.1)
- stderr vs stdout — PR#15 — UNFIXED upstream; our PR#53 covers
- GPU memory / hwcontext — #31, #47 — UNFIXED; jellyfin-ffmpeg#653
-
Encoder packet pool EAGAIN — #38 — Workaround:
-packet_pool_size:v 32 - CPU rising during decode — #41 — Cannot reproduce on JP6.2
- JPEG HW decode/encode — #37, #40 — UNFIXED; NVJPG engine unused
- H265 setLevel missing — #50 — UNFIXED
- Lossless H265 — #45 — UNFIXED; enableLossless exists but not exposed
- AV1 support — #49 — UNFIXED; HW capable on AGX Orin
- Upstream to FFmpeg mainline — #46 — No response
- Ubuntu 22.04 compilation — #21, PR#48 — Workaround: downgrade linux-libc-dev
- pkg-config nvmpi not found — #22, #36 — User error; documented
- gjrtimmer/jetson-ffmpeg@08e32c15 — RTSP fix
- w3sip/jetson-ffmpeg@de0b039 — Partial RTSP fix
- jellyfin/jellyfin-ffmpeg#653 — Jellyfin Jetson support
- NVIDIA forum /t/189290/11 — child process segfault root cause (nvjpeg)
- NVIDIA forum /t/298688 — encoder max resolution
Issues: disabled | PRs: none | Branches: master only
- Vendor all NVIDIA multimedia API sample classes in-repo (~7000 lines)
- JetPack 4/5 dual-path encoder via
#if JETPACK_VER(auto-detect via lsb_release) - Wrong color format fix:
V4L2_PIX_FMT_ABGR32→V4L2_PIX_FMT_XRGB32(018e6e2e) - Encoder hang fix: raw
NvVideoEncoder*→unique_ptr, reduced log_level (17443b0e) -
NVBUF_COLOR_FORMAT_BGRA/BGRxadded tofill_bytes_per_pixel() -
isRawRGBAparam actually wired (cf1bb455) - Separate
nvmpiJP4.pc.infor JetPack 4
- Color format fix and encoder hang fix are portworthy
- Vendoring NVIDIA classes is a different approach than our devcontainer mount
- JP4/5 dual-path is reference material
Issues: disabled | PRs: 1 merged (#1 version from env var) | Branches: master only
-
Dynamic bitrate control:
nvmpi_encoder_set_bitrate(ctx, bitrate)— change bitrate mid-stream -
Force IDR:
nvmpi_encoder_force_idr(ctx)— on-demand keyframe insertion -
nvFrame.flags→nvFrame.idr(bool) — cleaner IDR signalling - Massively expanded encoder params: per-frame-type QP, SAR, bit_depth, chroma_format_idc, slice_level_encode, CABAC toggle, VUI insert, AUD insert, lossless, ROI, reconstructed surface
- Cross-compilation via
$TARGET_ROOTFSsysroot +aarch64.cmaketoolchain - GitHub Actions
.debbuild pipeline + CPack packaging - Pre-built binary distribution in
build.nvidia/ -
ffmpeg_nvmpi.patchDELETED — treats libnvmpi as standalone distributable
- Dynamic bitrate + force IDR are essential for real-time streaming
- Expanded encoder params expose hardware capabilities we're missing
Issues: 0 | PRs: 0 | Branches: same as Keylost (no extra work on branches)
Phase 1 — dlopen lazy-loading:
-
b4ede2c9: dlopenlibnvmpi.soto prevent EGL crash at startup -
dynlink_nvmpi.hheader (+186 lines)
Phase 2 — Zero-copy DMA-BUF pipeline:
-
nvmpi_decoder_get_frame_fd()— zero-copy DMA-BUF fd export from decoder -
nvmpi_encoder_put_frame_fd()— zero-copy DMA-BUF fd import to encoder - FFmpeg DRM_PRIME decode output + DMA-BUF encode input
-
-dmabuf_inputencoder option for explicit DMABUF mode - EOS/flush crash fixes in DMABUF mode
- Multiple iterations fixing fd sync, temp encoder segfault
Phase 2.3 — VIC hardware scale filter:
-
vf_scale_vic.c(+468 lines) — FFmpeg filter usingNvBufSurfTransformzero-copy - DRM_PRIME in/out, dlopen
libnvbufsurface.so - Usage:
-vf "scale_vic=w=1280:h=720"
Phase 3 — P010 10-bit decode:
- P010 pixel format support in decoder
-
-p010 1decoder option
-
dynlink_nvmpi.h(NEW),nvmpi_dec.c(+224/-56),nvmpi_enc.c(+68/-26) -
vf_scale_vic.c(NEW +468),ffpatch.sh(+33/-2) -
nvmpi.h(+33/-1),nvmpi_dec.cpp(+101/-21),nvmpi_enc.cpp(+106/-3) -
nvmpi_surface.cpp(NEW +53)
Issues: disabled | PRs: none | Branches: master only
-
Child process decoder fix (
fd0900d7):NvBufferSessioncreate/destroy around transform — fixes decoder in forked processes. Via Keylostfork_fixbranch. - FFmpeg 4.3 patch compatibility
- Reverted jocover PR#78 (CMake/pc changes considered problematic)
- Patch applicability fix (missing
new file mode) - 6 upstream syncs from jocover PRs
Issues: disabled | PRs: none | Branches: master, feature/docker
- Cross-compilation Dockerfile (QEMU
multiarch/qemu-user-static, L4T r32.5.0) - LF line ending fixes, patch line fix
- 6 upstream merge commits
Issues: disabled | PRs: none | Branches: master only
- Remove
-lnvbufsurfacefromnvmpi.pc.inLibs line - 7 commits iterating on patch whitespace/formatting (churn)
Issues: disabled | PRs: none | Branches: master only
- Missing
new file mode 100644for nvmpi_enc.c in patch — causedgit applyto fail - CRLF→LF conversion
- 6 upstream merges
Issues: disabled | PRs: none | Branches: master only
- dlopen
libnvmpi.so(independent from YuriiHoliuk) - Major decoder rewrite in
nvmpi_dec.cpp(+138/-209) - API surface reduction in
nvmpi.h(+11/-44) - Commit messages mostly in Chinese; limited documentation
Issues: disabled | PRs: 4 merged
- RTSP stream stuck fix (PR#3, co-authored with w3sip): Feed SPS/PPS extradata to decoder
- JetPack 5.1.2 build fix (PR#1): CMakeLists + framebuf fixes
- nvjpeg removal (PR#2): Drops unused dependency, adds GPL flag
- FFmpeg 6.1 support (PR#4): Patch + allcodecs overlay + build script
- Branches: feature/cherry-pick-rtsp-patch, feature/ffmpeg-6.1, feature/fixed-child-thread, feature/minor-fixes (all pre-merge work)
Issues: disabled | PRs: none | Branches: master, nvutils
-
JPEG decode prototype (
cd9bf72e): NvJPEGDecoder C API (nvmpi_create_jpeg_decoder,nvmpi_decode_jpeg,nvmpi_close_jpeg_decoder). Incomplete implementation. -
YUVJ420P→YUV420P remapping (
67e7bbcd): Forces YUVJ to YUV in decoder
- Full NvBufSurface/NvUtils migration: decoder + CMake done, encoder partial
- Dynamic library detection for tegra libs
-
setMaxPerfMode(1)enabled
Issues: disabled | PRs: none | Branches: master only
- JetPack 6.2 / Ubuntu 22.04 / NX Orin one-shot install script (37 lines)
- sed-patches CMakeLists.txt to skip nvbuf_utils
Issues: disabled | PRs: none | Branches: master only
-
hwcontext_nvmpi.c(NEW +77): registersff_hwcontext_type_nvmpiwith YUV420P/NV12/DRM_PRIME -
hwcontext_nvmpi.h(NEW +60):AVNVMPIDRMFrameDescriptor,AVNVMPIFramesContext -
ffpatch.sh(+110): integration hooks - Context: Working on Jellyfin support (jellyfin-ffmpeg#653)
Issues: none | PRs: 1 merged
- JetPack 6 library path:
/tegra→/nvidiain all find_library and rpath - aarch64 include path addition
- nvbuf_utils removal for JP6
Issues: disabled | PRs: none | Master: identical to v-faeez-kadiri
-
KEY FRAME FLAG FIX (
1324d7d6): Waspkt->flags |= 0x0001on every packet; now usesenc_metadata.KeyFrame— CRITICAL BUG FIX -
H.265 encoder header fix (
2b715e81): Extended GLOBAL_HEADER to H.265; bounded IDR NAL scan loop (was unbounded → could scan past buffer) -
frame_pool_size / packet_pool_size (
cf0560b5): Configurable pool sizes + decoder no-skip-frames fix -
FFmpeg 8.0+ compat (
f0a52dfa) -
Initial dmabuf support (
854599a1) - nvbufsurface search path fix, CMake custom dirs, nvjpeg stub
- Tegra library stubs, ffpatch.sh (255 lines)
Value: HIGH — key frame flag fix is critical; H265 header fix prevents buffer overread; pool size config important
Issues: disabled | PRs: none | Branches: master, jetpack-6.2.1 (identical)
- JetPack version-gated nvbuf_utils via
apt show nvidia-jetpackat cmake time - Tegra path fix in nvmpi.pc.in
Issues: disabled | PRs: 3 merged
- stderr redirect (PR#1): All libnvmpi prints → stderr (correctness for piped video)
- Decoder thread naming: pthread name for debugging
-
FFmpeg 6.1 support (PR#2): Patch + missing
unistd.hin nvmpi_enc.c - nvbuf_utils conditional (PR#3): Header-based detection (cleanest approach, adopted upstream)
-
Decoder resize option (add_resize_option2 branch, UNMERGED):
-resize WxHAVOption using hardware BlockLinear→PitchLinear "free" resize
Issues: disabled | PRs: 6 (4 merged internally)
- feat/dq (19 commits): Major decoder refactor + RTSP fix + crash-on-exit fix
- feat/fix (1 commit): RTSP extradata fix (isolated)
- feat/jp5.1 (1 commit): JP 5.1 build fix
- feat/jp51-2 (15 commits): Subset of feat/dq
- feat/reproduce (18 commits): feat/dq + input bitstream save/consume diagnostic
- release/0.9 (18 commits): Stable subset of feat/dq + FFmpeg 6.1 patches
- release/0.9.1 (3 commits): Clean cherry-pick of critical fixes
-
RTSP/extradata fix (
0d320fe5): Prime decoder with SPS/PPS — the original implementation -
Decoder crash-on-exit (
49039f81): Cleanup queued buffers in destructor - Decoder code quality refactor: Class scoping, private members, mutex automation, error handling
-
CMake NVUtils toggle: Explicit
WithNVUTILSoption - Offline FFmpeg build: Local source support for air-gapped environments
-
Safer patch creation: Less fragile
update_patch.sh
Issues: disabled | PRs: none | Branches: master, low_latency, moonlight_fixes, nvmpi_optional
-
Mutex deadlock on EOS (
58a977d4): unlock before EOS return check — CRITICAL -
delete vs delete[] (
ff8fd95a): Correct array delete in decoder+encoder — CRITICAL -
Uninitialized pointer deletion (
49d55d10): nullptr init for all bufptr arrays — CRITICAL -
Hang on close without data (
00455615): Adaptive poll timeout for resolution event — HIGH
-
condition_variable blocking wait (
caac9899): True blocking innvmpi_decoder_get_framewhenAV_CODEC_FLAG_LOW_DELAYset — HIGH
-
Optional NVMPI build (
b015913a):#if CONFIG_NVMPIguards in FFmpeg
nhahn (1 ahead of Keylost): JetPack 6 path auto-detection — /tegra vs /nvidia conditional in CMake. Simple, correct, important.
LanderN (optimize/jetson branch, 6 commits):
-
setMaxPerfMode(1)+ disable DPB - Camera extradata fix (cites w3sip)
-
glibc 2.34+ pthread_join segfault (3 commits): Fixes crashes on Ubuntu 22.04+ from uninitialized
dq_thread, double-free in teardown, vendors patchedNvV4l2ElementPlane.cpp - CRITICAL for modern distros
GlassBil (cuda_buffers branch, 4 commits):
- CUDA buffer return API via FFmpeg C API — decoded frames stay on GPU
-
4K I-frame buffer overflow fix: CHUNK_SIZE 4MB → 10MB + bounds check + configurable
chunk_size - Cleanup fixes
peters (issue-ffmpeg-6.1 branch, 1 commit):
- Complete FFmpeg 6.1 dev-tree overlay following standard pattern
xsacha (4 patch branches): Pixel-format/linesize fixes — yuv420/NV12 switching, linesize corrections
dthk-cogmatix (1 ahead): NvBufferSession lifecycle fix in decoder capture loop
D31m05z (1 ahead): pkg_check_modules(libv4l2) + visibility fix
danhawker (1 ahead): extradata-at-init fix for RTSP (cites w3sip)
matthewj-t6 (1 ahead): Same extradata fix in ffmpeg_dev/ (correct placement)
therishidesai (rdesai/jetpack-nixos-build branch): NixOS flake.nix + generalized patcher
moss-ag/bepro-company/ahtonen: nvbufsurface pkg-config fix (3 independent discoveries) jkms (deb branch): CPack packaging nguyenhunga5: Ubuntu 22.04 configure docs + vendored NVIDIA SDK (bad practice) Hansoluo (jetpacksupporttable branch): JetPack support table in README Extend-Robotics/jetson-ffmpeg-keylost (packaging branch): CPack module fingul: JP6.2 install script
moss-robot, nulijiabei, SynclairVision, AustinTodd-eng, sonnyhe, lyfpeter, timonsku, didebuli, sadhasld (AI docs), Parrot-Developers (atom.mk), JetLinWork, thejasonfisher
These 8 forks appeared as mirrors (0 ahead on master) but had unique work on non-default branches.
bmegli/jetson-ffmpeg (new-ffmpeg-api branch, 1 commit)
-
437f8c55POC for new FFmpeg nvmpi API implementation - Implements modern
send_frame/receive_packetencoder API alongside legacyencode2 - Adds
ff_nvmpi_send_frame()+ff_nvmpi_receive_packet()as separate entry points - Adds
encoder_flushingstate for proper EOS drain (old API misses final packets) - New
nvmpi_dec.c(171 lines) andnvmpi_enc.c(309 lines) - Refs jocover#131. Encoder side of this is unique — not found in any other fork.
- Value: HIGH — reference for modern FFmpeg encode API
tmm1/jetson-ffmpeg (fancybits = patch-1 branch, 1 commit)
-
428edfecFix cflags — CMakeLists.txt variable expansion bug - Original: literal
$ {CMAKE_C_FLAGS}(broken expansion) - Fixed:
"${CMAKE_C_FLAGS} -fPIC"(properly quoted) - Value: MEDIUM — real build failure on strict CMake versions
kazuki0824/jetson-ffmpeg (resolve-missing-dep-on-pkgconfig branch, 4 commits)
- Replaces
find_library(LIB_V4L2 nvv4l2 ...)withpkg_check_modules(LIB_V4L2 REQUIRED libv4l2) - Introduces
BITBAKE_SYSROOTvariable for Yocto cross-compilation via sysroot injection - Moves
.pcinstall fromshare/pkgconfigtolib/pkgconfig - Adds
Requires: libv4l2tonvmpi.pc.in - Value: MEDIUM — Yocto cross-compile support is unique; pkg-config approach is cleaner
cgutman/jetson-ffmpeg (moonlight_fixes, low_latency, nvmpi_optional branches)
- Same code as cybernhl/jetson-ffmpeg (already analyzed in section 20). cgutman is the original author; cybernhl inherited all branches. 0 ahead on master.
- All 4 safety fixes + low_latency + nvmpi_optional already cataloged.
uschen-thirdparty/jetson-ffmpeg (max_perf_mode branch, 2 ahead)
-
991f2296AddssetMaxPerfMode(1)in encoder. Known finding (douo, LanderN, bradcagle).
koenvandesande/jetson-ffmpeg (loosen_pixfmt_check branch, 1 ahead)
-
3c3f608fYUVJ420P acceptance alongside YUV420P. Known finding (bradcagle67e7bbcd).
gvsyn/jetson-ffmpeg (n4.4.1 branch, 2 ahead)
- Patch rebase for FFmpeg n4.4.1 point release. No logic changes. Superseded.
coupdair/jetson-ffmpeg (dev_use branch, 2 ahead)
- README-only: parallel FFmpeg throughput benchmarks (1-4 instances). Zero code.
All 164 forks below were verified via GitHub API: 0 commits ahead on all branches, no extra branches beyond master, 0 issues, 0 PRs.
jocover mirrors (135): BiGZ31, xbkaishui, JAT117, heyfluke, abishekmuthian, MengShuaiLong, beixiaocai, ranjanjyoti152, guoyibiao0007, Strange-mzi, errorcode4319, mcclumpherty, GregSied, feelwa17, ysluodz, GitHangar, Hipoooop, dude84, jo-dean, ENOFFILE, IvanOrfanidi, ericbin1, acavanag, zshaobo, DeserterW, Jerry3062, DanyPoro, ald2004, TatsushiKatayama, rebotnix, sudapure, zxnj, nelsonjt, GeoffreyHub, sunmin7572, roflcoopter, jheo4, fnovoac, LD-1, lauro-cesar, mithrandir42, kevleyski, zodiaq, novaheadend, jbasu2013, pc859107393, anhthoai, arielmol, KevinAnnn, kshvakov, byronwind, ou525, ezverev1980, Xyzhao1999, hlong1981, daryasyr, ranfish, Earl-chen, sdw8855, asdlei99, willkuerliches-archiv, Ojigrande, tosato3, jian488, ringlover, isztldav, Lolopeze, jlerasmus, tuyaliang, pzy2253999075, prophetzopu, GavinDarkglider, Chiyaoching, sy19870112, dlueth, FCLC, chiwenheng, pantoniou, yin-zhang, bstff, binhlv2607, connormcmk, truonggiangmt, PubFork, JiaLiangAl, goel42, GTRedE, PolasekT, jempe, s87315teve, theofficialgman, edmund-troche, voicon, seuwangcheng, RichardPar, finemax, nixx77, weinyzhou, jesusluque, Xavier-John, matcoelhos, mfr78, hgySandy, FREEWING-JP, succo69, TuskAW, GaryMatthews, mstaryi, archsh, leeyunhome, samudra54, agent001, tcll321, hexam-project, HerbertUnterberger, kabobobo, JinhaSong, eagle40, fmogollonr, ccpc, qqq-tech, tolysz, jan-hoelscher-mss, chengman2015, ggnull35, tinyloop, vvhh2002, tankhunter8192, martinhering, efbsolis, zhaoshulin, onearrow, suixiaodan, GengCauWong, moeiscool
Keylost mirrors (29): shista2010, yueyihua, qnlbnsl, IlIllllll, Kieaer, jackeyri, f2liu, AutoLifeRobot, jellfits, Dw9, nrobin, berndpfrommer, yxsheron, sminofff, dl1rf, xinsuinizhuan, FunnyWii, Pi-Boss, fancong5201314, jia0511, ACarcione-AthenaAI, kivenyangming, tatsuyai713, pavloshargan, Kevin4ch, hzy5000, Jin2022, zxcv1884, HuiyuanZang
douo/jetson-ffmpeg (2 ahead of jocover)
-
d9856840NvUtils migration (nvbuf_utils → NvBufSurface) -
e96d1acesetMaxPerfMode(1) for decoder - Value: MEDIUM — foundational NvUtils migration + perf
Tantael/jetson-ffmpeg-fixed (child of douo, +5 ahead)
- All commits are README edits only. patch-1 branch: 1 unique commit (also README).
- Value: NONE
Extend-Robotics/jetson-ffmpeg (child of douo, +8 ahead) — Stars: 1
-
57f3f6c3setMaxPerfMode for encoder AND decoder -
96803164H.264 poc-type=2 (display order = decode order; zerolatency-style). Refs: NVIDIA forums, Extend-Robotics/gst-nvvideo4linux2#1 -
0229e5baBUG FIX: Missing return value in encoder close callback (UB → segfault on L4T 5.1) -
6d327624BUG FIX: Missing return value in decoder thread dec_capture_loop_fcn (UB → segfault). Refs jocover#127 -
1c100f1cPOC: New FFmpeg receive_packet API implementation (705-line patch file:0001-POC-for-new-FFmpeg-nvmpi-API-implementation.patch). Refs jocover#131 -
2c1eacebDebian packaging: CMake CPack, PACKAGING.md, nvmpi.pc.in, scripts/package.sh - Value: HIGH — two critical UB fixes are must-port; POC new API is reference; Debian packaging reusable
ReAlexLiu/jetson-ffmpeg (child of douo, +4 ahead)
-
07e106eb"兼容jetpack5.0" (JetPack 5.0 compat): massive rewrite of CMakeLists.txt (+90/-65), adds complete ffmpeg_dev/ structure (4.2, 4.4, 6.0 overlays + common codec files), restructures to src/+include/ layout, adds nvUtils2NvBuf.h, NVMPI_bufPool.hpp, NVMPI_frameBuf.hpp - Value: LOW — reference for repo structure; similar to our current layout
rai-opensource/jetson-ffmpeg (child of douo)
- EXACT DUPLICATE of douo/master. 0 unique commits.
vietnx/jetson-ffmpeg (4 ahead, 2 behind jocover; fix-compatible-issue branch)
-
a8edb1c1Memory leak fix in nvmpi_enc + cleanup in dec/enc -
fdbb815aEnable insert_vui to add FPS info to video stream -
e9568cd1Fix compatible issue with JetPack 4.4 and 4.5 -
b40817d9Check for waitpid() failure -
b0e5aa6eMake code compatible with JetPack 4.6 - Upstream contribution: PR#79 to jocover (MERGED — linesize/stride crash fix)
- Value: MEDIUM — memory leak fix + insert_vui portworthy; JP4 compat is obsolete
dlavrantonis/jetson-ffmpeg (child of vietnx, +5 ahead jocover)
- Carries only 2 of vietnx's 5 code commits (a8edb1c1, fdbb815a). Issue #1 (closed): "pull latest from owner". PR #1 (closed): synced jocover:master. Two README edits.
- Value: NONE — no new code
aveao/jetson-ffmpeg (1 ahead of jocover)
-
144f96edPort to FFmpeg 4.4 (patch + configuration) - Value: LOW — superseded by our multi-version support
jamitupya/jetson-ffmpeg (child of aveao)
- EXACT DUPLICATE of aveao/master. 0 unique commits.
EliteScientist/jetson-ffmpeg (child of aveao)
- EXACT DUPLICATE of aveao/master. 0 unique commits.
dbussert/jetson-ffmpeg (child of aveao, +2 ahead)
-
9318e2deFix patch for latest FFmpeg 4.4.2 point release - Value: LOW — superseded
AndBobsYourUncle/jetson-ffmpeg (child of madsciencetist, +2 ahead, 2 behind — diverged)
-
b8fb1ee3Remove nvbuf_utils from CMakeLists.txt link deps -
9c17b09fCMake install target: don't overwrite, use plain library names for stubbing - Value: LOW — CMake cleanup
traversaro/jetson-ffmpeg (child of madsciencetist, addffmpeg61 branch)
-
c83482edFull FFmpeg 6.1 overlay: configure (8153 lines), Makefile (1396 lines), allcodecs.c (1014 lines), ffmpeg6.1_nvmpi.patch (987 lines) -
9148a0f0Missingunistd.hin nvmpi_enc.c forusleep()— 1-line fix propagated to all 4 patch files (4.2, 4.4, 6.0, 6.1) - Value: LOW — we have 6.1 support; unistd.h fix worth verifying
Ledrego/jetson-ffmpeg (child of izdeveloper)
- Stated "+2 ahead" but actually 0 ahead and 1 BEHIND izdeveloper/master
- Value: NONE — behind parent
Duplicates (6/14): rai-opensource, jamitupya, EliteScientist (exact mirrors); Ledrego (behind parent); dlavrantonis, Tantael (README-only)
Unique code (8/14): douo, Extend-Robotics (HIGH), ReAlexLiu, vietnx (MEDIUM), aveao, dbussert, AndBobsYourUncle, traversaro (LOW)
Upstream issue cross-refs found in fork commits: jocover#74, #79 (merged), #85, #123, #125, #127 (fixed by Extend-Robotics), #130, #131 (POC by Extend-Robotics), #132
| # | Fix | Source | Commit |
|---|---|---|---|
| 1 | Mutex deadlock on EOS | cgutman/cybernhl | 58a977d4 |
| 2 | delete vs delete[] arrays | cgutman/cybernhl | ff8fd95a |
| 3 | Uninitialized pointer deletion on close | cgutman/cybernhl | 49d55d10 |
| 4 | Decoder hang on close without data | cgutman/cybernhl | 00455615 |
| 5 | All frames marked as keyframes (encoder) | spotai | 1324d7d6 |
| 6 | H265 encoder header/IDR scan bounds | spotai | 2b715e81 |
| 7 | Missing return statement in capture callbacks | Extend-Robotics |
0229e5ba, 6d327624
|
| 8 | glibc 2.34+ pthread_join segfault | LanderN | optimize/jetson branch |
| 9 | 4K I-frame buffer overflow (CHUNK_SIZE) | GlassBil | cuda_buffers branch |
| # | Feature/Fix | Source | Reference |
|---|---|---|---|
| 10 | condition_variable blocking wait (low-latency decode) | cgutman/cybernhl | caac9899 |
| 11 | Dynamic bitrate + force IDR APIs | muxable | 1a0c3bdc |
| 12 | Zero-copy DMA-BUF pipeline (decode fd + encode fd + VIC scale) | YuriiHoliuk | 26 commits |
| 13 | hwcontext_nvmpi (FFmpeg HW device type) | mguzzina | 6 commits (WIP) |
| 14 | P010 10-bit decode | YuriiHoliuk | 4aab1b56 |
| 15 | YUVJ420P→YUV420P remapping | bradcagle | 67e7bbcd |
| 16 | Configurable frame_pool_size / packet_pool_size | spotai | cf0560b5 |
| 17 | setMaxPerfMode(1) | bmegli/LanderN | one-liner |
| 18 | Decoder resize option (-resize WxH) | madsciencetist | add_resize_option2 branch |
| 19 | JetPack 6 path auto-detection | nhahn | single commit |
| # | Item | Source |
|---|---|---|
| 20 | Wrong color format ABGR32→XRGB32 | dsleep 018e6e2e
|
| 21 | Encoder hang fix (unique_ptr) | dsleep 17443b0e
|
| 22 | JPEG decode prototype (reference) | bradcagle cd9bf72e
|
| 23 | Optional NVMPI build (#if CONFIG_NVMPI) | cgutman b015913a
|
| 24 | dlopen lazy-loading | YuriiHoliuk b4ede2c9
|
| 25 | Encoder PTS truncation + circular buffer fixes | teplofizik patches.zip |
| 26 | Encoder memory leak cleanup | PR#82 (vietnx) |
| 27 | CUDA buffer return API | GlassBil cuda_buffers branch |
| 28 | Decoder crash-on-exit (buffer cleanup) | w3sip 49039f81
|
| 29 | NV12 pixel format support | xsacha patches |
| 30 | Expanded encoder params (QP/SAR/ROI/lossless) | muxable |
| 31 | AV1 support | requested in Keylost#49 |
- Vendor NVIDIA sample classes (dsleep) — we use devcontainer mounts
- Cross-compilation sysroot (muxable) — we target native Jetson builds
- JetPack 4/5 dual-path via lsb_release (dsleep) — our CMake auto-detects
- CPack .deb packaging (muxable, jkms, Extend-Robotics) — evaluate later
- NixOS support (therishidesai) — niche platform
🏠 Home · 📦 Repository · 🐞 Issues · 🏷 Releases · 📋 README · 📝 CHANGELOG
Documentation lives in this wiki. To change a doc, edit the relevant wiki page (clone jetson-ffmpeg.wiki.git) — the docs/ folder in the repo has been retired.
📦 Usage & Runtime
❓ FAQ
- Overview
- Hardware & Platform
- Versions & Compatibility
- Build & Install
- Performance
- Features & Fork Differences
🛠 Development
⚙️ CI / Infrastructure
- GitHub Actions
- GitLab CI
- GitHub Runner — Manual
- GitHub Runner — Kubernetes
- GitLab Runner — Manual
- GitLab Runner — Kubernetes
- Release Process
🔬 Project / Fork Analysis