Repository navigation
kernel: Decode H.264 temporal direct pictures with the right references - #111
Conversation
The VXD decoder took the slots of a co-located picture's stored motion as indexes into the current request's reference list, but userspace may reorder that list between requests (FFmpeg does), so temporal direct B pictures could use the wrong reference: smeared or blocky frames. Each picture now keeps its slot-to-timestamp map and the slots are resolved by timestamp. Same decoder on the iPad 5, 6 and 7. From orchard PR OrchardLinux#111 (commit 883f1ea), media patch 0013 there.
883f1ea to
941e97e
Compare
|
Landing the H.264 temporal direct fix (media 0013) as your commit; it applies to the iPad 5, 6 and 7. Not taken from this PR: the device-feature tool and the feature table it reads (feature states must not act as switches), the warm_restart feature (it comes back with the warm restart topic), the qualification note and the config README sections. Your point that RTC presence, alarm and wake (and cover polling vs cover wake) need separate feature names is noted for the catalog. Your previous head is kept as tag |
Bring this branch onto current main. Main has since merged OrchardLinux#124, OrchardLinux#122, OrchardLinux#118, OrchardLinux#121, OrchardLinux#110, OrchardLinux#127, OrchardLinux#101, OrchardLinux#126, OrchardLinux#108 and OrchardLinux#111, several in part or reworked, and OrchardLinux#123 and OrchardLinux#128 were closed. Where main carries a topic, main's version is kept; the left-out parts that warm restart and suspend need come back in OrchardLinux#107 and OrchardLinux#117.
Bring this branch onto current main. Main has since merged OrchardLinux#124, OrchardLinux#122, OrchardLinux#118, OrchardLinux#121, OrchardLinux#110, OrchardLinux#127, OrchardLinux#101, OrchardLinux#126, OrchardLinux#108 and OrchardLinux#111, several in part or reworked, and OrchardLinux#123 and OrchardLinux#128 were closed. Where main carries a topic, main's version is kept; the left-out parts that warm restart and suspend need come back in OrchardLinux#107 and OrchardLinux#117. This branch's own patches in drivers/usb are renumbered to follow main's.
Bring this branch onto current main. Main has since merged OrchardLinux#124, OrchardLinux#122, OrchardLinux#118, OrchardLinux#121, OrchardLinux#110, OrchardLinux#127, OrchardLinux#101, OrchardLinux#126, OrchardLinux#108 and OrchardLinux#111, several in part or reworked, and OrchardLinux#123 and OrchardLinux#128 were closed. Where main carries a topic, main's version is kept; the left-out parts that warm restart and suspend need come back in OrchardLinux#107 and OrchardLinux#117. This branch's own patches in devices/s8000, drivers/base and drivers/usb are renumbered to follow main's.
Bring this branch onto current main. Main has since merged OrchardLinux#124, OrchardLinux#122, OrchardLinux#118, OrchardLinux#121, OrchardLinux#110, OrchardLinux#127, OrchardLinux#101, OrchardLinux#126, OrchardLinux#108 and OrchardLinux#111, several in part or reworked, and OrchardLinux#123 and OrchardLinux#128 were closed. Where main carries a topic, main's version is kept; the left-out parts that warm restart and suspend need come back in OrchardLinux#107 and OrchardLinux#117. This branch's own patches in devices/s8000, drivers/base and drivers/usb are renumbered to follow main's.
Bring this branch onto current main. Main has since merged OrchardLinux#124, OrchardLinux#122, OrchardLinux#118, OrchardLinux#121, OrchardLinux#110, OrchardLinux#127, OrchardLinux#101, OrchardLinux#126, OrchardLinux#108 and OrchardLinux#111, several in part or reworked, and OrchardLinux#123 and OrchardLinux#128 were closed. Where main carries a topic, main's version is kept; the left-out parts that warm restart and suspend need come back in OrchardLinux#107 and OrchardLinux#117. This branch's own patches in devices/s8000, drivers/base, drivers/pmdomain and drivers/usb are renumbered to follow main's.
Bring this branch onto current main. Main has since merged OrchardLinux#124, OrchardLinux#122, OrchardLinux#118, OrchardLinux#121, OrchardLinux#110, OrchardLinux#127, OrchardLinux#101, OrchardLinux#126, OrchardLinux#108 and OrchardLinux#111, several in part or reworked, and OrchardLinux#123 and OrchardLinux#128 were closed. Where main carries a topic, main's version is kept; the left-out parts that warm restart and suspend need come back in OrchardLinux#107 and OrchardLinux#117. This branch's own patches in devices/s8000, drivers/base, drivers/pmdomain and drivers/usb are renumbered to follow main's.
Bring this branch onto current main. Main has since merged OrchardLinux#124, OrchardLinux#122, OrchardLinux#118, OrchardLinux#121, OrchardLinux#110, OrchardLinux#127, OrchardLinux#101, OrchardLinux#126, OrchardLinux#108 and OrchardLinux#111, several in part or reworked, and OrchardLinux#123 and OrchardLinux#128 were closed. Where main carries a topic, main's version is kept; the left-out parts that warm restart and suspend need come back in OrchardLinux#107 and OrchardLinux#117. This branch's own patches in devices/s8000, devices/t8010, drivers/base, drivers/media, drivers/pmdomain, drivers/power and drivers/usb are renumbered to follow main's. Main's versions apply first now, so 0011 in drivers/media keep their change with a diff regenerated for the new context.
Bring this branch onto current main. Main has since merged OrchardLinux#124, OrchardLinux#122, OrchardLinux#118, OrchardLinux#121, OrchardLinux#110, OrchardLinux#127, OrchardLinux#101, OrchardLinux#126, OrchardLinux#108 and OrchardLinux#111, several in part or reworked, and OrchardLinux#123 and OrchardLinux#128 were closed. Where main carries a topic, main's version is kept; the left-out parts that warm restart and suspend need come back in OrchardLinux#107 and OrchardLinux#117. This branch's own patches in devices/s8000, devices/s8003, devices/t8010, drivers/base, drivers/media, drivers/pmdomain, drivers/power and drivers/usb are renumbered to follow main's. Main's versions apply first now, so 0011 in drivers/media keep their change with a diff regenerated for the new context.
Bring this branch onto current main. Main has since merged OrchardLinux#124, OrchardLinux#122, OrchardLinux#118, OrchardLinux#121, OrchardLinux#110, OrchardLinux#127, OrchardLinux#101, OrchardLinux#126, OrchardLinux#108 and OrchardLinux#111, several in part or reworked, and OrchardLinux#123 and OrchardLinux#128 were closed. Where main carries a topic, main's version is kept; the left-out parts that warm restart and suspend need come back in OrchardLinux#107 and OrchardLinux#117. This branch's own patches in devices/s8000, devices/s8003, devices/t8010, drivers/base, drivers/media, drivers/pmdomain, drivers/power and drivers/usb are renumbered to follow main's. Main's versions apply first now, so 0011 in drivers/media keep their change with a diff regenerated for the new context.
Bring this branch onto current main. Main has since merged OrchardLinux#124, OrchardLinux#122, OrchardLinux#118, OrchardLinux#121, OrchardLinux#110, OrchardLinux#127, OrchardLinux#101, OrchardLinux#126, OrchardLinux#108 and OrchardLinux#111, several in part or reworked, and OrchardLinux#123 and OrchardLinux#128 were closed. Where main carries a topic, main's version is kept; the left-out parts that warm restart and suspend need come back in OrchardLinux#107 and OrchardLinux#117. This branch's own patches in devices/s8000, devices/s8003, devices/t8010, drivers/base, drivers/media, drivers/pmdomain, drivers/power, drivers/soc-apple and drivers/usb are renumbered to follow main's. Main's versions apply first now, so 0011 in drivers/media keep their change with a diff regenerated for the new context.
Bring this branch onto current main. Main has since merged OrchardLinux#124, OrchardLinux#122, OrchardLinux#118, OrchardLinux#121, OrchardLinux#110, OrchardLinux#127, OrchardLinux#101, OrchardLinux#126, OrchardLinux#108 and OrchardLinux#111, several in part or reworked, and OrchardLinux#123 and OrchardLinux#128 were closed. Where main carries a topic, main's version is kept; the left-out parts that warm restart and suspend need come back in OrchardLinux#107 and OrchardLinux#117. This branch's own patches in devices/s8000, devices/s8003, devices/t8010, drivers/base, drivers/media, drivers/pmdomain, drivers/power, drivers/soc-apple and drivers/usb are renumbered to follow main's. Main's versions apply first now, so 0011 in drivers/media keep their change with a diff regenerated for the new context.
|
Checked on an iPad 5 (J71t) on 2026-11-13 with a user install image built from main Confirmed: the H.264 temporal direct fix works. 4/4 H.264 streams, including the B-frame/temporal-direct stream that used to fail, match the software decode frame for frame on the hardware (v4l2-request). |
Part 18 of 23 of the iPad 5 (J71t) series in this repository; merge after #123.
Problem
The device descriptors had no way to say whether a board supports a warm restart, and J71t's feature states did not follow what has been seen on the hardware.
Change
Add the
warm_restartfeature (working on J71t, untested elsewhere), update J71t's states, document the config READMEs, and resolve VXD temporal direct references by timestamp so the high-profile H.264 streams decode correctly. The compatibility matrix is regenerated.Testing
warm_restart = "working"on J71t stands for.Dependencies
Depends on #123.
This branch is stacked on the PRs it depends on and carries their commits; the change of this PR is its last commit, "j71t: Evidence-backed feature registry and warm restart feature".
This update keeps the branch's earlier history: it merges the current base into the branch and adds the reworked change as a new commit on top.
🤖 Generated with Claude Code