ffmpeg-v4l2-request-fourier: export ff_h264_set_mb_inspect_cb (0016 amend, PKGREL 15)
The 0016 patch declared ff_h264_set_mb_inspect_cb in h264dec.h and defined it in h264_mb.c, but didn't touch libavcodec/libavcodec.v. FFmpeg's default version script exports only `av_*`, `avcodec_*`, `avpriv_*`, and `avsubtitle_free`; everything else is hidden as LOCAL behind a `*` glob. Result: `nm -D libavcodec.so.62 | grep ff_h264_set_mb_inspect_cb` returned nothing → dlsym() returned NULL. Static-link CLI consumer (daedalus_decode_h264) was unaffected because static linking doesn't care about symbol visibility. The daedalus-v4l2 daemon shadow_decoder path (PR-Q3a.1) dlopens libavcodec.so.62 and resolves the callback via dlsym — that needs the symbol exported. Fix: add ff_h264_set_mb_inspect_cb to the global list in libavcodec/libavcodec.v. Single-line addition to the 0016 patch. Mirrored across the arch/ + debian/ patch trees. PKGREL bump 14 → 15, changelog entry added (debian side). PKGBUILD pkgrel bumped on arch side too. No behaviour change to the decode path: the callback is still opt-in via the H264Context function pointer; only consumers that have explicitly installed a callback pay the one-load-one-branch cost per MB. dejavu-check: this is fixing the existing 0016 observation-hook to actually work as a dlsym intercept (the architectural shape the patch was designed for). NOT adding new per-kernel substitution. Same shape, same patch number, same intent. Just hiding/exporting plumbing. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -35,13 +35,20 @@ to fall through.
|
||||
|
||||
Used by:
|
||||
- daedalus-decoder/tools/daedalus_decode_h264 (PR-A1b)
|
||||
- future daedalus-v4l2 daemon refactor
|
||||
- daedalus-v4l2 daemon shadow-mode path (PR-Q3a.1+)
|
||||
|
||||
The CLI static-links libavcodec.a so symbol visibility doesn't matter
|
||||
there. The daemon dlopens libavcodec.so.62 and resolves the callback
|
||||
via dlsym, so the symbol MUST be exported — added to libavcodec.v
|
||||
explicitly (FFmpeg's default version script hides every `ff_*` symbol
|
||||
as LOCAL behind a glob).
|
||||
|
||||
Refs reauktion/daedalus-decoder!12 (Stage 2 PR-b complete).
|
||||
---
|
||||
libavcodec/h264_mb.c | 20 ++++++++++++++++++++
|
||||
libavcodec/h264dec.h | 26 ++++++++++++++++++++++++++
|
||||
2 files changed, 46 insertions(+)
|
||||
libavcodec/h264_mb.c | 20 ++++++++++++++++++++
|
||||
libavcodec/h264dec.h | 26 ++++++++++++++++++++++++++
|
||||
libavcodec/libavcodec.v | 1 +
|
||||
3 files changed, 47 insertions(+)
|
||||
|
||||
--- a/libavcodec/h264dec.h
|
||||
+++ b/libavcodec/h264dec.h
|
||||
@@ -113,3 +120,13 @@ Refs reauktion/daedalus-decoder!12 (Stage 2 PR-b complete).
|
||||
+ h->mb_inspect_cb = cb;
|
||||
+ h->mb_inspect_opaque = opaque;
|
||||
}
|
||||
--- a/libavcodec/libavcodec.v
|
||||
+++ b/libavcodec/libavcodec.v
|
||||
@@ -3,6 +3,7 @@
|
||||
av_*;
|
||||
avcodec_*;
|
||||
avpriv_*;
|
||||
+ ff_h264_set_mb_inspect_cb;
|
||||
avsubtitle_free;
|
||||
local:
|
||||
*;
|
||||
|
||||
Reference in New Issue
Block a user