@@ -95,14 +95,15 @@ impl Drop for PacketGuard {
9595const SEEK_FORWARD_MAX_SEC : f64 = 0.5 ;
9696
9797/// Pourquoi ce décodeur est ouvert. La preview et l'export ne demandent pas la même chose
98- /// au décodeur, et sur macOS ils ne prennent donc pas le même backend.
98+ /// au décodeur. Sur macOS ils prennent aujourd'hui le même backend (logiciel pour le H.264
99+ /// 8 bits, cf. `open_with`), mais l'intention reste journalisée pour les rapports de bug.
99100///
100101/// La preview lit au temps réel : il lui suffit de tenir la cadence, et elle scrube, donc la
101102/// latence d'un seek pèse plus que le débit. Une marche d'export déroule aussi vite que la
102103/// machine le permet — c'est du débit pur, et l'arbitrage n'est pas le même.
103104#[ derive( Clone , Copy , PartialEq , Eq , Debug ) ]
104105pub enum DecodeIntent {
105- /// Lecture temps réel (`live.rs`). Arbitrage historique, inchangé.
106+ /// Lecture temps réel (`live.rs`).
106107 Preview ,
107108 /// Marche d'export (`timeline_walk`, `gif_export`).
108109 Export ,
@@ -286,10 +287,17 @@ impl Decoder {
286287 //
287288 // RESTE NON MESURÉ : 10 bits. Il garde VideoToolbox, la condition l'écarte
288289 // par construction (`format == YUV420P`), et le chemin logiciel le tronquerait
289- // en 8 bits (`CpuFrames` ne rend que du NV12). La preview aussi n'a pas été
290- // mesurée, et la changer sans la mesurer serait exactement l'erreur que ce
291- // commit corrige.
292- _ if intent == DecodeIntent :: Export && is_h264_8bit => false ,
290+ // en 8 bits (`CpuFrames` ne rend que du NV12).
291+ //
292+ // LA PREVIEW AUSSI, mesurée depuis (#585). Mac mini M1, aperçu 4K60 H.264 :
293+ //
294+ // VideoToolbox 50 frames manquées / 1200 seek 254 ms
295+ // logiciel 1 frame manquée / 1200 seek 152 ms
296+ //
297+ // À 120 fps en 4K, VideoToolbox décroche. Le prix : 0,3 à 0,65 cœur et 3 à 5x
298+ // plus de mémoire. Batterie non mesurée. Le H.264 8 bits passe donc en
299+ // logiciel quelle que soit l'intention ; HEVC et 10 bits restent sur VT.
300+ _ if is_h264_8bit => false ,
293301 _ => true ,
294302 } ;
295303 let r = if want_hw {
0 commit comments