forked from Keylost/jetson-ffmpeg
-
-
Notifications
You must be signed in to change notification settings - Fork 0
FAQ Features and Fork Differences
G.J.R. Timmer edited this page Jun 16, 2026
·
2 revisions
How this fork (gjrtimmer/jetson-ffmpeg) differs from upstream
jocover and
Keylost, and what is on the roadmap.
The full provenance is in the Fork Analysis Results.
← Back to FAQ
- Widest FFmpeg matrix — 4.2 → 8.0 with an idempotent, auto-detecting patcher and committed per-version patches. See Compatibility.
- Memory-safety and crash fixes ported and regression-guarded by a per-feature hardware test suite.
- Tag-driven releases with prebuilt artifacts — see Release Process and releases.
| Area | What changed | Issue |
|---|---|---|
| Decoder memory safety | Ported cgutman fixes: EOS deadlock, delete[] mismatch, uninitialized pointers, close-hang |
#2 |
| Undefined behavior | Missing return in decoder/encoder capture-loop callbacks (segfault on GCC 11+) |
#3 |
| Encoder keyframe flag | Honor V4L2 KeyFrame metadata — stop flagging every packet as a keyframe | #4 |
| H.265 global header |
GLOBAL_HEADER support + bounded SPS/PPS/VPS NAL scan (buffer-overread guard) |
#5 |
| glibc ≥ 2.34 | Vendored patched NvV4l2ElementPlane — fixes pthread_join segfault |
#6 |
| 4K I-frames | Enlarge + bounds-check + make decoder CHUNK_SIZE configurable |
#7 |
| Decoder crash on exit | Drain and clean up queued DMA buffers in teardown | #8 |
| Decode performance |
setMaxPerfMode, optional DPB disable, poc-type=2 (up to ~6×) |
#9 |
| Low-delay decode | Blocking wait in get_frame for AV_CODEC_FLAG_LOW_DELAY
|
#10 |
| Configurable pools |
frame_pool_size / packet_pool_size / chunk_size AVOptions |
#11 |
| Pixel formats | YUVJ420P acceptance, NV12 I/O, P010 10-bit decode, XRGB32 converter fix, insert_vui
|
#12 |
| Codec flush |
avcodec_flush_buffers for decoder and encoder |
#16 |
| RTSP / out-of-band SPS/PPS | Hardened extradata priming at decoder init (zero-frames fix) | #1 |
| FFmpeg ≥ 6.1 SIGABRT | Decode callback returned EAGAIN on input-feed failure |
#28 |
| Area | Goal | Issue |
|---|---|---|
| Hardware MJPEG decode |
mjpeg_nvmpi via NvJPEGDecoder (phase 1) |
#18 |
| Hardware MJPEG encode |
NvJPEGEncoder::encodeFromFd (phase 2) |
#19 |
| JPEG zero-copy | decode→encode DMA-fd passthrough (phase 3) | #20 |
| Zero-copy GPU pipeline | dlopen, DMA-BUF/DRM_PRIME, hwcontext_nvmpi, VIC scaling, CUDA interop |
#21 |
| Encoder runtime control | dynamic bitrate, force-IDR, per-frame QP, lossless, ROI, CABAC/VUI/AUD | #13 |
| Modern encode API | full send_frame/receive_packet with proper EOS drain |
#15 |
Encoder -level
|
wire through to V4L2 setLevel for H.264/H.265 |
#14 |
| AV1 | hardware AV1 decode/encode on Orin-class modules | #23 |
| Non-blocking encode | non-blocking encode mode | #31 |
| Build system | CMake cflags quoting, JetPack 6 auto-detect, Yocto/sysroot cross-compile, CPack .deb, pkg-config |
#22 |
| Upstreaming | nvmpi codec support to FFmpeg mainline | #25 |
See all open issues for current status.
🏠 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