Aerial: Feature Request : Multiple Monitors Image Splitting

Created on 4 Jan 2016  Â·  51Comments  Â·  Source: JohnCoates/Aerial

It would be great if Aerial could use multiple monitors by splitting the image across all connected monitors.

Thanks!
Ian

enhancement fix inside

Most helpful comment

This has been a long time coming, but as part of a rewrite of the detection screen I've been able to make it work. This is still pretty new and there may be issues on some configurations, with that said I need beta testers of this feature. You should also be able to span on multiple monitors while disabling some as those features are now separated. You'll have to configure all this in the new Displays tab:

Capture d’écran 2019-05-10 à 18 20 39

Please let me know how it works for you : https://github.com/JohnCoates/Aerial/releases/tag/v1.4.99beta1

All 51 comments

+1
Be nice to use all of my monitors.

+1

+1

Popped on here to add this request. It would be neat to have the same video spread across multiple monitors (as if it were one large display).

I have no doubt it's pretty complicated to correctly implement this request so that the aspect ratio works and the video isn't too pixelated. Just sayin' it'd be pretty sweet!

+1

Actually that one is about splitting one video across multiple monitor, panoramic style. I4m not sure that's even possible but keeping it open in case ;)

@glouel Okay I'm just going through all the old ones because it kinda makes this project look bad to have 29 issues.
Let's try to close the ones that are no longer necessary.

+1

+1

Would definitely support this!

Love this idea! Would pay.

This has been a long time coming, but as part of a rewrite of the detection screen I've been able to make it work. This is still pretty new and there may be issues on some configurations, with that said I need beta testers of this feature. You should also be able to span on multiple monitors while disabling some as those features are now separated. You'll have to configure all this in the new Displays tab:

Capture d’écran 2019-05-10 à 18 20 39

Please let me know how it works for you : https://github.com/JohnCoates/Aerial/releases/tag/v1.4.99beta1

Brilliant! Working well here. I only have one 4K video downloaded but it spans my 2017 iMac and second monitor screens impressively! Fantastic!

Is there a way to pause all downloading/streaming of any kind. I have only a 5mb/s internet so when I'm watching netflix in the other room I'd like to be able to pause all downloads easily without erasing all cached videos or unchecking them all.

Bug #1: First video downloaded with no problem. (I only told it to download the one I had checked) Then I checked two more and told it to download them -- each times out. Here is the full error log:

_2:10:35 PM : Location services may be disabled, Night Shift can't detect Sunrise and Sunset times without them
2:12:23 PM : AVPlayerItemPlaybackStalledNotification name = AVPlayerItemPlaybackStalledNotification, object = Optional(>), userInfo = nil
2:42:53 PM : Couldn't download video: The request timed out.
2:42:53 PM : Connection fail: The request timed out.
2:45:13 PM : Couldn't download video: The request timed out.
2:45:13 PM : Connection fail: The request timed out.
2:46:29 PM : Couldn't download video: The request timed out.
2:46:29 PM : Connection fail: The request timed out.
2:47:29 PM : Couldn't download video: The request timed out.
2:47:29 PM : Connection fail: The request timed out.
2:47:56 PM : Video download cancelled
2:49:15 PM : Couldn't download video: The request timed out.
2:49:15 PM : Connection fail: The request timed out.
2:50:27 PM : Couldn't download video: The request timed out.
2:50:27 PM : Connection fail: The request timed out._

Quitting System Preferences and re-opening the Screen Saver Options allows another video to download it looks like.

Brilliant! Working well here. I only have one 4K video downloaded but it spans my 2017 iMac and second monitor screens impressively! Fantastic!

Great, that took a lot of work so glad it works.

Is there a way to pause all downloading/streaming of any kind. I have only a 5mb/s internet so when I'm watching netflix in the other room

Go into Cache tab, and check "Never Stream Videos", this way Aerial will only play cached stuff. This way you'll never see stalling videos as in your log below.

I'd like to be able to pause all downloads easily without erasing all cached videos or unchecking them all.

Video downloads uses a queue system (you can add to the queue by pressing the + button on the video list, first panel) . There's no pause button but you can stop all download (you have a progress indicator bottom left of the screen, next to it there's a cross to stop). Then queue more when you want.

Bug #1: First video downloaded with no problem. (I only told it to download the one I had checked) Then I checked two more and told it to download them -- each times out. Here is the full error log:

_2:10:35 PM : Location services may be disabled, Night Shift can't detect Sunrise and Sunset times without them 2:12:23 PM : AVPlayerItemPlaybackStalledNotification name = AVPlayerItemPlaybackStalledNotification, object = Optional(>), userInfo = nil 2:42:53 PM : Couldn't download video: The request timed out. 2:42:53 PM : Connection fail: The request timed out. 2:45:13 PM : Couldn't download video: The request timed out. 2:45:13 PM : Connection fail: The request timed out. 2:46:29 PM : Couldn't download video: The request timed out. 2:46:29 PM : Connection fail: The request timed out. 2:47:29 PM : Couldn't download video: The request timed out. 2:47:29 PM : Connection fail: The request timed out. 2:47:56 PM : Video download cancelled 2:49:15 PM : Couldn't download video: The request timed out. 2:49:15 PM : Connection fail: The request timed out. 2:50:27 PM : Couldn't download video: The request timed out. 2:50:27 PM : Connection fail: The request timed out._

So an aside, comp_A013_C012_0122D6_CC_v01_SDR_PS_FINAL_20180709_SDR_2K_AVC.mov is a 1080p video. This is actually the video that was streaming, not downloading, so that may be what you want. But FYI, in order to download a 4K video you need to change the "Preferred video format" to 4K on the videos tab. The 4K label only indicates that the video is available in 4K. The format you download/play is defined by "Preferred video format". Sorry if this is confusing.

As for the timeout, I tried exactly your scenario, downloading one, let it be done, then another, and no issue here, so hard to tell. Maybe it failed as your streaming video also stalled ? It could be a server issue too, it happens from time to time on their end. Downloading and streaming at the same time is not a good idea and the fact that you both stalled streaming and a download is probably linked to this. Please check never stream and queue your videos, that should work best.

Quitting System Preferences and re-opening the Screen Saver Options allows another video to download it looks like.

Ok let me know if you see that bug again !

Ok the downloading seems a bit buggy. I can start a single video downloading. If I close The Screensaver Preferences and System Preferences then open it back up, I see that all downloads have ceased. They don't start again until I manually start them, and they don't appear to even be queued (as they are showing a plus-circle not a down-arrow like when queued)
The queue does progress to the next and begin downloading consecutive videos, but only if I leave the preference page open. Is this how it is supposed to work, or is it supposed to download on its own in the background anytime?

Do you think there is a security lockout affecting this since I'm using Mojave?

Bug #2: "Allow Right Arrow Key to Skip" doesn't seem to function whether it is checked or not.

Ok the downloading seems a bit buggy. I can start a single video downloading. If I close The Screensaver Preferences and System Preferences then open it back up, I see that all downloads have ceased. They don't start again until I manually start them, and they don't appear to even be queued (as they are showing a plus-circle not a down-arrow like when queued)
The queue does progress to the next and begin downloading consecutive videos, but only if I leave the preference page open. Is this how it is supposed to work, or is it supposed to download on its own in the background anytime?

Ha, looks like I misunderstood what you were doing ! Yes, this is exactly how it's supposed to work, you need to keep the preference page open, because if you close it, macOS kills our process so that kills your downloads. This is a limitation of screensavers on macOS, we can't have a background download task (we're kinda pushing the boundaries of screensavers with Aerial).

I think that I should add a warning when you click Done that your downloads will be stopped if you still have any going, this will avoid the confusion.

Do you think there is a security lockout affecting this since I'm using Mojave?

Nope it's just a limitation of screensavers. Just keep the panel open for downloading.

Bug #2: "Allow Right Arrow Key to Skip" doesn't seem to function whether it is checked or not.

So again to clarify, when the screensaver is playing fullscreen, if you press the right arrow key (on your keyboard's inverted T), it will skip to the next video. Does this not work for you ? I know some of the UI is confusing, hopefully I can improve on it.

Ah ok on the downloads then. Bug #1 Averted. lol — So you can "Check for new videos" automatically in the background, but you can't download them?

Bug #2: Correct... the right-arrow in the inverted T on my keyboard does not bring on the next video. It just "beeps" like all the other keys do.

Ah ok on the downloads then. Bug #1 Averted. lol — So you can "Check for new videos" automatically in the background, but you can't download them?

So, check for new videos looks for new videos at the source (where tvOS looks for new videos). It downloads a manifest with the new videos (a JSON file), this will update the video list you see on the left. You can then download these when you want. There hasn't been an update since last january but will probably be one around WWDC in june.

Bug #2: Correct... the right-arrow in the inverted T on my keyboard does not bring on the next video. It just "beeps" like all the other keys do.

So pressing keyboard don't quit the screensaver for you ? Are you running 10.14.4 (not the 10.14.5 beta) with these settings:

image

ask for password immediately ?

We're tracking a bug linked to Mojave in this issue, that could be it : https://github.com/JohnCoates/Aerial/issues/768

Bug #2: Correct... the right-arrow in the inverted T on my keyboard does not bring on the next video. It just "beeps" like all the other keys do.

So pressing keyboard don't quit the screensaver for you ? Are you running 10.14.4 (not the 10.14.5 beta) with these settings:

image

ask for password immediately ?

We're tracking a bug linked to Mojave in this issue, that could be it : #768

I have mine set to ask after 5 seconds:
Screen-Shot-2019-05-10-at-4 16

My Machine:
Screen-Shot-2019-05-10-at-4 18

I tried turning off the "require password to wake from screensaver" completely but it didn't make any difference -- still no arrow-next.

The fact that any other key doesn't stop the screensaver is troubling, more than the right arrow key.

To keep things focused, would you mind going to that thread : https://github.com/JohnCoates/Aerial/issues/768

And post which keyboard you use (if you use multiple, 3rd party software to modify keyboards etc), and a log of you running the screensaver and pressing multiple keys (arrow and others) ?

The fact that any other key doesn't stop the screensaver is troubling, more than the right arrow key.

To keep things focused, would you mind going to that thread : #768

And post which keyboard you use (if you use multiple, 3rd party software to modify keyboards etc), and a log of you running the screensaver and pressing multiple keys (arrow and others) ?

Actually, none of my screensavers stop when I press any keys on the keyboard -- they just beep. I'm just using the standard apple wired keyboard that came with the iMac. The screensaver only quits when I click the mouse.

The fact that any other key doesn't stop the screensaver is troubling, more than the right arrow key.
To keep things focused, would you mind going to that thread : #768
And post which keyboard you use (if you use multiple, 3rd party software to modify keyboards etc), and a log of you running the screensaver and pressing multiple keys (arrow and others) ?

Actually, none of my screensavers stop when I press any keys on the keyboard -- they just beep. I'm just using the standard apple wired keyboard that came with the iMac. The screensaver only quits when I click the mouse.

That’s not normal and probably explains the right arrow bug for you. Keyboard should dismiss any screensaver. If you want to talk more about that check the other issue we can continue there.

@glouel a couple pieces of feedback for trying this out:

  1. If I click the right arrow to switch to the next, the text stating what is shown goes from being shown on only one monitor to then showing on both monitors for each period after.
  2. If I click the right arrow to switch to the next, there is a significant pause. If during that pause I try to wake the computer from sleep everything freezes and does not respond quickly at all. This is on a 2018 Mac mini 3.2/16GB so I would imagine on a slower machine this would be a significantly longer delay that could cause issues.

@glouel a couple pieces of feedback for trying this out:

  1. If I click the right arrow to switch to the next, the text stating what is shown goes from being shown on only one monitor to then showing on both monitors for each period after.

Hmm, I've tried this one and confirmed it, will need to have a look. Having descriptions on all screens as an option was something I wanted to implement, will need to check how they got there.

  1. If I click the right arrow to switch to the next, there is a significant pause. If during that pause I try to wake the computer from sleep everything freezes and does not respond quickly at all. This is on a 2018 Mac mini 3.2/16GB so I would imagine on a slower machine this would be a significantly longer delay that could cause issues.

I've seen that happen once on my very old MBA with only 4 GB, I thought it was swapping or something then saw that I hadn't cached the videos. Do you have your videos cached or not ? This is definitely not good I'll investigate.

Thanks for the report!

@glouel All videos are cached and returning as 4K HEVC. It also takes a while to pop up at first when I first start the screensaver...

If you can reproduce the slowdown can you paste the relevant portion of the log that shows the delay ? Should help me narrow it down thanks !

@glouel

8:55:40 PM : avInit1 (2149.0, 461.0, 296.0, 184.0)
8:55:40 PM : <AerialView: 0x7ffc45402100> AerialView setup init
8:55:40 PM : Time Management initialized
8:55:40 PM : Display Detection initialized
8:55:40 PM : ***Display Detection***
8:55:40 PM : 2 display(s) detected
8:55:40 PM : [id=459108477, width=1680, height=945, bottomLeftFrame=(0.0, 0.0, 1680.0, 945.0), topRightCorner=(1680.0, 945.0), isMain=true, backingScaleFactor=2.0]
8:55:40 PM : [id=188956746, width=1680, height=945, bottomLeftFrame=(1680.0, 0.0, 1680.0, 945.0), topRightCorner=(3360.0, 945.0), isMain=false, backingScaleFactor=2.0]
8:55:40 PM : (0.0, 0.0, 3360.0, 945.0)
8:55:40 PM : ***Display Detection Done***
8:55:40 PM : <AerialView: 0x7ffc45402100> isPreview : true
8:55:40 PM : Using : nil
8:55:40 PM : <AerialView: 0x7ffc45402100> no local player
8:55:40 PM : <AerialView: 0x7ffc45402100> setupPlayerLayer
8:55:40 PM : <AerialView: 0x7ffc45402100> setting up player layer with bounds/frame: (0.0, 0.0, 296.0, 184.0) / (0.0, 0.0, 296.0, 184.0)
8:55:40 PM : Using dot workaround for video driver corruption
8:55:40 PM : Manifest init
8:55:40 PM : cache to be used : Optional("/Volumes/FusionHD Backup/Screen Savers")
8:55:40 PM : isManifestCached 10 true
8:55:40 PM : isManifestCached 11 true
8:55:40 PM : isManifestCached 12 true
8:55:40 PM : 2019-05-10
8:55:40 PM : Interval : Optional(-75340.04302597046)
8:55:40 PM : No need to check for new videos
8:55:40 PM : Manifests files were not loaded in class
8:55:40 PM : Files were not already loaded in memory
8:55:40 PM : Manifests are cached on disk, loading
8:55:40 PM : Poi Strings Provider initialized
8:55:40 PM : Defaulting to bundle
8:55:40 PM : path : /Library/Screen Savers/Aerial.saver/Contents/Resources/en.json
8:55:40 PM : Community JSON : 73 entries
8:55:43 PM : Total videos processed : 73
8:55:43 PM : <AerialView: 0x7ffc45402100> Setting player for all player layers in [<AerialView: 0x7ffc45402100>]
8:55:43 PM : shouldRestrictByDayNight : true (night)
8:55:43 PM : initvideocache
8:55:45 PM : cached video file with length: 246083031
8:55:45 PM : <AerialView: 0x7ffc45402100> playing video (OFFLINE MODE) : file:///Volumes/FusionHD%20Backup/Screen%20Savers/comp_A015_C018_0128ZS_v03_SDR_PS_FINAL_20180709__SDR_4K_HEVC.mov
8:55:45 PM : <AerialView: 0x7ffc45402100> observing current item <AVPlayerItem: 0x6000008bee60, asset = <AVURLAsset: 0x600000a37860, URL = file:///Volumes/FusionHD%20Backup/Screen%20Savers/comp_A015_C018_0128ZS_v03_SDR_PS_FINAL_20180709__SDR_4K_HEVC.mov>>
8:55:45 PM : <AerialView: 0x7ffc45402100> observeValue Optional("readyForDisplay")
8:55:45 PM : AssetLoaderDelegate deinit
8:55:45 PM : <AerialView: 0x7ffc45402100> backing change 2.0 isDisabled: false
8:55:45 PM : <AerialView: 0x7ffc45402100> startAnimation
8:55:45 PM : avInit1 (2149.0, 461.0, 296.0, 184.0)
8:55:45 PM : <AerialView: 0x7ffc48a14610> AerialView setup init
8:55:45 PM : <AerialView: 0x7ffc48a14610> isPreview : true
8:55:45 PM : Using : nil
8:55:45 PM : <AerialView: 0x7ffc48a14610> no local player
8:55:45 PM : <AerialView: 0x7ffc48a14610> setupPlayerLayer
8:55:45 PM : <AerialView: 0x7ffc48a14610> setting up player layer with bounds/frame: (0.0, 0.0, 296.0, 184.0) / (0.0, 0.0, 296.0, 184.0)
8:55:45 PM : Using dot workaround for video driver corruption
8:55:45 PM : <AerialView: 0x7ffc48a14610> Setting player for all player layers in [<AerialView: 0x7ffc45402100>, <AerialView: 0x7ffc48a14610>]
8:55:45 PM : <AerialView: 0x7ffc45402100> observeValue Optional("readyForDisplay")
8:55:45 PM : shouldRestrictByDayNight : true (night)
8:55:45 PM : initvideocache
8:55:47 PM : cached video file with length: 176882957
8:55:47 PM : <AerialView: 0x7ffc48a14610> playing video (OFFLINE MODE) : file:///Volumes/FusionHD%20Backup/Screen%20Savers/comp_N013_C004_PS_v01_SDR_PS_20180925_F1970F7193_SDR_4K_HEVC.mov
8:55:47 PM : <AerialView: 0x7ffc48a14610> observing current item <AVPlayerItem: 0x6000008bfc00, asset = <AVURLAsset: 0x600000a36200, URL = file:///Volumes/FusionHD%20Backup/Screen%20Savers/comp_N013_C004_PS_v01_SDR_PS_20180925_F1970F7193_SDR_4K_HEVC.mov>>
8:55:47 PM : <AerialView: 0x7ffc48a14610> observeValue Optional("readyForDisplay")
8:55:47 PM : AssetLoaderDelegate deinit
8:55:47 PM : <AerialView: 0x7ffc45402100> stopAnimation
8:55:47 PM : <AerialView: 0x7ffc48a14610> backing change 2.0 isDisabled: false
8:55:47 PM : <AerialView: 0x7ffc48a14610> startAnimation
8:55:47 PM : <AerialView: 0x7ffc48a14610> observeValue Optional("readyForDisplay")
8:55:47 PM : locale.languageCode en
8:55:47 PM : <AerialView: 0x7ffc45402100> observeValue Optional("readyForDisplay")
8:55:47 PM : locale.languageCode en
8:55:50 PM : <AerialView: 0x7ffc48a14610> stopAnimation
8:55:50 PM : pwc init2
8:55:50 PM : Cache size : 28.61 GB
8:55:50 PM : Callback after manifest loading
8:55:50 PM : Looking for outdated files
8:55:50 PM : No old files found
8:55:50 PM : appMode : false
8:55:50 PM : wdl

Here is the problem I was having with the keyboard not switching scenes (with the arrow key) and my screensaver not stopping with any keystrokes, and the solution that fixed both:
https://apple.stackexchange.com/questions/332448/how-to-stop-screensaver-with-a-keyboard-button-press-rather-than-a-mouse-button

Subsequent Note: I see how this affects the experience of using the macOS now too, however, and I find it incompatible with my workflow. I guess I will change it back and just deal with not having the arrow skip capability.

Final note: Ok upon even further experimentation, I discovered that the arrow and the keyboard screensaver-off both work also if I have the _"Displays have separate spaces"_ turned on or off and the _"When switching to an application, switch to a space with open windows for the application"_ enabled as well.

So, _either_ of these settings will allow it to work correctly under MacOS Mojave:
Screen-Shot-2019-05-10-at-9 44 57-PM
Screen-Shot-2019-05-10-at-9 45 03-PM

Many thanks @gregarios ! and @ZV00 I'll check that today thanks.

@glouel this if going to be an absolutely fantastic feature !!!
And it may become more mainstream if the iPad as a second display functionality rumored for next macOS release is confirmed.

Many thanks @gregarios ! and @ZV00 I'll check that today thanks.

My pleasure, thanks for all your hard work as well, @glouel

I have one small request relating to the spanning feature. Only in "Span" mode, it would be nice if an inch or so of space that falls between the monitors were removed/cropped from the video so the video would appear to be more accurate across monitors. Because monitors never (yet) have a zero-sum border, any border that is between the physical monitors creates an artificial looking gap between the spans of video.

If some of the video were removed between the spans it would create less of an uneven effect, like when a line crosses diagonally across the two monitors. Maybe even make this gap user-definable in the settings to account for different systems or monitor layouts — even compensating for having some extra space between the monitors.

This is not critical to the functioning of this fantastic screensaver mind you, but it would add a bit of polish to really make it shine.

I'll try to get a picture of what I'm talking about for better understanding. Here are shots of the settings and the reality, with the areas in question circled:

Screen-Shot-2019-05-11-at-7 17 23-AM

IMG_0921

I think, since you are calculating the full span distance covering the entire set of monitors, you might be able to accomplish this by just removing a defined amount from the total width of the displayed video on each monitor. Or if some people had a vertical arrangement it could be the height that is modified instead.

@glouel this if going to be an absolutely fantastic feature !!!
And it may become more mainstream if the iPad as a second display functionality rumored for next macOS release is confirmed.

Thanks, and that's quite true with the rumored iPad as second display !

Many thanks @gregarios ! and @ZV00 I'll check that today thanks.

My pleasure, thanks for all your hard work as well, @glouel

Thanks too ! So far it looks like it's the Intel driver that's the issue, which is why I saw it on my old MBA and you see it on your Mac Mini, but I don't on my iMac 2015. In order to show the span right now, I create a frame that's the size of the span (so collective size of screens). This seems to take a long time on the Intel drivers. I'm not sure there's an alternative for that, I'll look at the APIs again if there's another way to do it (I only create one video player but with 2 views for performance, but I need those views to be the size of the span, even if I clip them to screen, if that makes sense ?).

If it's really that, I may not be able to lessen the 1st start time much, but I should be able to eliminate them on transitions (creating frame had 0 cost so far so I just dropped and recreated them). Will take a bit to get to that so hang on ;)

I'll try to get a picture of what I'm talking about for better understanding. Here are shots of the settings and the reality, with the areas in question circled:

Screen-Shot-2019-05-11-at-7 17 23-AM

IMG_0921

I think, since you are calculating the full span distance covering the entire set of monitors, you might be able to accomplish this by just removing a defined amount from the total width of the displayed video on each monitor. Or if some people had a vertical arrangement it could be the height that is modified instead.

Yes I totally agree, that's something I'd like to add too. It's pretty easy for two screens but the calculation gets rough with more, since you can have say 5 monitors, 2 on the left, and 2 on top of each other on your main screen. So I need to properly calculate where the spacing should go horizontally or vertically.

But yep, definitely on my todo list !

@gloue
In order to show the span right now, I create a frame that's the size of the span (so collective size of screens). This seems to take a long time on the Intel drivers. I'm not sure there's an alternative for that, I'll look at the APIs again if there's another way to do it (I only create one video player but with 2 views for performance, but I need those views to be the size of the span, even if I clip them to screen, if that makes sense ?).

Can't you avoid creating a frame that's the size of the span ?
Can't you use Metal 3D rendering ? With 1 screen = 1 face with 1 texture, the texture pointing to the corresponding part of the original video picture frame inside the video buffer.

If it's really that, I may not be able to lessen the 1st start time much, but I should be able to eliminate them on transitions (creating frame had 0 cost so far so I just dropped and recreated them). Will take a bit to get to that so hang on ;)

In terms of the first start time, I wonder if there is some sort of solution to have this occur in the background before the computer goes to sleep such as during a time with an otherwise idle CPU? This way when the computer is placed in sleep it begins immediately? Alternatively, something that does it in the background when the screensaver is started without "freezing" the computer?

Can't you avoid creating a frame that's the size of the span ?
Can't you use Metal 3D rendering ? With 1 screen = 1 face with 1 texture, the texture pointing to the corresponding part of the original video picture frame inside the video buffer.

Possibly yes. I went with the easiest solution in b1 and if not for the Intel driver it probably wouldn't have been an issue. Hopefully I can grab a portion from the framebuffer and scale that to screen, yep. I don't know if this is doable with AVPlayer (which is why I said I needed to look again at the APIs earlier) which we currently use, I'll have to give it a shot and see. Will probably require some heavy change to the way Aerial work internally though.

In terms of the first start time, I wonder if there is some sort of solution to have this occur in the background before the computer goes to sleep such as during a time with an otherwise idle CPU? This way when the computer is placed in sleep it begins immediately? Alternatively, something that does it in the background when the screensaver is started without "freezing" the computer?

Unless I can workaround the need for that frame (see above), there's no way to workaround for that driver call I'm afraid, this is very much a last second request to the driver (bit of a video malloc if you want) that you can't precompute.

Yes I totally agree, that's something I'd like to add too. It's pretty easy for two screens but the calculation gets rough with more, since you can have say 5 monitors, 2 on the left, and 2 on top of each other on your main screen. So I need to properly calculate where the spacing should go horizontally or vertically.

It might be good to just place small input fields (that only take digits with maybe 1 decimal place) in between the monitors on the display screen and let people set their own spacing "inches" between monitors as needed, since it will be impossible to calculate how much space people have placed between their physical screens. Then use those numbers to modify the cropping.

So bit of a followup, I've been looking at alternative to the frame scaling and found nothing. There are many theoretical way to do that with CALayers but none work with AVPlayerLayer, this stackoverflow comment sums it up perfectly, basically frame is the only way to go : https://stackoverflow.com/questions/55381233/animate-avplayerlayer-transform-property

Good news is, though, after some more digging on my Macbook Air, the slowdown has NOTHING to do with the frame size, I was just skipping once per display connected creating a lot of cpu/io load (and I guess I confused the intel gpu driver) for nothing 🙈 After fixing that, I get instant skipping on my Macbook Air, and no awkward slowdowns anymore 🎉 I'll post a b2 later today with the changes.

It might be good to just place small input fields (that only take digits with maybe 1 decimal place) in between the monitors on the display screen and let people set their own spacing "inches" between monitors as needed, since it will be impossible to calculate how much space people have placed between their physical screens. Then use those numbers to modify the cropping.

I'll try to get proper shared border detection in first, then we'll see about implementation details but yeah that's an option.

Thanks for your work looking forward to trying it later

@ZV00 Beta 2 is up with the fix

Also @gregarios there's an experimental margin control for the spanned mode. It's pretty limited as it only works correctly for horizontally spanned displays (so probably 99% of people). Vertical margin is disabled. Correctly calculating offsets in a tetris like display assembly is non trivial so that will come later.

Capture d’écran 2019-05-13 à 19 12 31

You can set a distance between screens in centimeters. Let me know how it goes !

Edit: Note that the preview doesn't automatically update itself, you need to close syspref to get it to truly update but it should show you a visualization of what it will look like, eg with a 20cm margin:

Capture d’écran 2019-05-13 à 19 16 48

@glouel The transitions are _definitely faster_ (I'd say by 40-60%). It's still sluggish for the first load but after that much smoother. The titles are definitely still causing issues, namely after trying b2 I noticed that whatever title and description it starts with on the main screen it then transitions it to the second screen after hitting the right arrow, but the new title only appears on the second screen.

For example:

  1. "Heading downtown on 7th" (or whatever it is) is the first video on screen on the left (with no title on the right)
  2. Hit right arrow
  3. Next video title is now correctly displayed on the right but the title on the left stays as "Heading downtown on 7th"

Same sequence works on each restart. Not a big deal, and definitely not where to spend your energy in comparison to speed boosts but wanted to get the report in.

@ZV00 just saw the text thing, I'm more puzzled about how they pop on the right screen in your example but confirm that's happening. Thought I had fixed that. As for text from previous video staying, I probably forgot to kill the previous animations. Will try and clean all that text code up, wasn't meant to be skipped !

Things still seem slow for you on first startup, can you enable log milliseconds and make 2 logs, one with independant mode, one with spanned mode ? Just the startup of each would be helpful thanks !

@ZV00 Beta 2 is up with the fix

Also @gregarios there's an experimental margin control for the spanned mode. It's pretty limited as it only works correctly for horizontally spanned displays (so probably 99% of people). Vertical margin is disabled. Correctly calculating offsets in a tetris like display assembly is non trivial so that will come later.

You can set a distance between screens in centimeters. Let me know how it goes !

Edit: Note that the preview doesn't automatically update itself, you need to close syspref to get it to truly update but it should show you a visualization of what it will look like, eg with a 20cm margin:

That's working! Looks better already. Thank you!

@ZV00 the text thing is fixed in beta 3.

There's a lot of new stuff, including fixed live previews, vertical margins and a better transition when pressing right arrow key.

Text is working well for me, @glouel.

Beta 3 does seem to delay the first load more than beta 2 did, not sure what would have changed for that though..

This is all working well now for me... the text is not messing up, the spacing is great, the load times are not bad -- maybe 5 seconds for the first video to load, then 3-second "next" switching.

Now I wish I were able to add my own videos to the mix lol.

Cool for text !

I didn’t change anything regarding startup I think... To both of you, are you storing aerials on a hard drive and not a ssd ? Or on a usb/network drive ? 5 seconds seems extreme even my old MacBook Air starts in less than half a sec here ? A log with milliseconds would help, also please confirm you see the same lag in independent mode ? Thanks !

As for custom videos, it’s on my feature list for 1.5 hopefully.

Cool for text !

I didn’t change anything regarding startup I think... To both of you, are you storing aerials on a hard drive and not a ssd ? Or on a usb/network drive ? 5 seconds seems extreme even my old MacBook Air starts in less than half a sec here ? A log with milliseconds would help, also please confirm you see the same lag in independent mode ? Thanks !

I'm running a 2017 iMac with Fusion Drive (so a fusion of a 128G SSD as a sort of cache with a 2TB HDD). All the videos are downloaded fully into cache, and I have the "streaming" diabled completely in your settings.

Yes, it takes about 5 seconds to show the screensaver when activating it with either the main monitor alone or both together -- same amount of time.

Attaching my AerialLog.txt:
AerialLog.txt

Here are some of my relevent system stats:
Screen-Shot-2019-05-14-at-6 50 59-PM

For me, I run it off a LaCie P9227 2TB USB C drive. I would agree that some delay could be accounted for by that, but as the rive is an SSD and USB-C I would think not this much delay. I can send you the log if you need me to as well, just let me know.

Because of Apple's inexplicable video shortage, it would also be nice if this could be alternatively configured to just use a folder of high-resolution images — maybe with a Ken-Burns effect applied or something to simulate a slowly moving image that spans across all the monitors. :-D Sorry... when I get ideas they just keep comin' it seems.

@ZV00 & @gregarios

I've split the performance discussion to another issue to try and keep things on topic a bit, please go there to check my replies to you and let's have the performance discussion there, thanks!

https://github.com/JohnCoates/Aerial/issues/780

Closed as implemented with the release of 1.5.0

Was this page helpful?
0 / 5 - 0 ratings