mirror of
https://github.com/saphid/frame-control.git
synced 2026-10-06 04:04:21 +02:00
Mac in the headset: measure every frame, adapt to the network, separate windows
- Per-frame timing on the Mac's clock (capture, encode, network, decode, draw), viewer clock sync and reports, input echo, /stats and a HUD. - scripts/macview-bench.py: repeatable runs on the real Frame, a shaping relay (no sudo), interleaved A/B between agent settings; results in bench/results/. - Adaptive controller: ack-based send gate with jitter-aware slack, AIMD bitrate that knows when a stream is app-limited, fps then size tiers. On a 50->3->50 Mbit/s step, scroll p95 went from 4.7 s to 72 ms; no cost on a clean link. - Separate mode: real AppKit event loop (HiDPI and NSScreen now work), cropped capture for fixed-size windows, windows kept on their display, graceful quit restores windows; stop/start races fixed. - Encoder timeline clamp (no oversized frame after a pause). - Frame Control shows each live stream's fps, delay, bitrate and tier. Reviewed by GPT-6 Astra xhigh (read-only), 7 rounds; findings fixed. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
a3c6e5c984
commit
9e4dcdd147
29 files changed
+21405
-104
No files matched your search
@@ -0,0 +1,28 @@
|
||||
// Private CoreGraphics classes for virtual displays (as used by DeskPad,
|
||||
// BetterDisplay and quest-display). Not in any SDK; see
|
||||
// docs/mac-window-separation.md.
|
||||
#import <Foundation/Foundation.h>
|
||||
#import <CoreGraphics/CoreGraphics.h>
|
||||
@interface CGVirtualDisplayDescriptor : NSObject
|
||||
@property (retain, nonatomic) dispatch_queue_t queue;
|
||||
@property (retain, nonatomic) NSString *name;
|
||||
@property (nonatomic) unsigned int maxPixelsHigh;
|
||||
@property (nonatomic) unsigned int maxPixelsWide;
|
||||
@property (nonatomic) CGSize sizeInMillimeters;
|
||||
@property (nonatomic) unsigned int serialNum;
|
||||
@property (nonatomic) unsigned int productID;
|
||||
@property (nonatomic) unsigned int vendorID;
|
||||
@property (copy, nonatomic) void (^terminationHandler)(id, id);
|
||||
@end
|
||||
@interface CGVirtualDisplayMode : NSObject
|
||||
- (instancetype)initWithWidth:(unsigned int)width height:(unsigned int)height refreshRate:(double)refreshRate;
|
||||
@end
|
||||
@interface CGVirtualDisplaySettings : NSObject
|
||||
@property (retain, nonatomic) NSArray *modes;
|
||||
@property (nonatomic) unsigned int hiDPI;
|
||||
@end
|
||||
@interface CGVirtualDisplay : NSObject
|
||||
@property (readonly, nonatomic) unsigned int displayID;
|
||||
- (instancetype)initWithDescriptor:(CGVirtualDisplayDescriptor *)descriptor;
|
||||
- (BOOL)applySettings:(CGVirtualDisplaySettings *)settings;
|
||||
@end
|
||||
Reference in new issue
Block a user