airsdk / Adobe-Runtime-Support

Report, track and discuss issues in Adobe AIR. Monitored by Adobe - and HARMAN - and maintained by the AIR community.
205 stars 11 forks source link

4k camera support #1802

Open ramraver opened 2 years ago

ramraver commented 2 years ago

I would highly appreciate 4k support for the camera class (for PC/Mac)

itlancer commented 1 year ago

Issue still exists even with latest AIR 50.0.1.3 across all platforms. Right now AIR applications cannot use cameras resolutions more than 1920*1080. May be it related to pixel formats or video codecs (yuyv422, nv12, mjpeg, h264, ...). Tested wil multiple 4K cameras with multiple devices with different platforms.

Other (non-AIR) applications can use 4K resolutions. ffmpeg -list_options true -f dshow -i video="BRIO 4K Stream Edition" command output (just to get supported resolutions and modes) for Logitech BRIO 4K camera:

[dshow @ 000001f456eacd40] DirectShow video device options (from video devices)
[dshow @ 000001f456eacd40]   pixel_format=yuyv422  min s=640x480 fps=5 max s=640x480 fps=30
[dshow @ 000001f456eacd40]   pixel_format=yuyv422  min s=640x480 fps=5 max s=640x480 fps=30
[dshow @ 000001f456eacd40]   pixel_format=yuyv422  min s=160x120 fps=5 max s=160x120 fps=30
[dshow @ 000001f456eacd40]   pixel_format=yuyv422  min s=160x120 fps=5 max s=160x120 fps=30
[dshow @ 000001f456eacd40]   pixel_format=yuyv422  min s=176x144 fps=5 max s=176x144 fps=30
[dshow @ 000001f456eacd40]   pixel_format=yuyv422  min s=176x144 fps=5 max s=176x144 fps=30
[dshow @ 000001f456eacd40]   pixel_format=yuyv422  min s=320x180 fps=5 max s=320x180 fps=30
[dshow @ 000001f456eacd40]   pixel_format=yuyv422  min s=320x180 fps=5 max s=320x180 fps=30
[dshow @ 000001f456eacd40]   pixel_format=yuyv422  min s=320x240 fps=5 max s=320x240 fps=30
[dshow @ 000001f456eacd40]   pixel_format=yuyv422  min s=320x240 fps=5 max s=320x240 fps=30
[dshow @ 000001f456eacd40]   pixel_format=yuyv422  min s=352x288 fps=5 max s=352x288 fps=30
[dshow @ 000001f456eacd40]   pixel_format=yuyv422  min s=352x288 fps=5 max s=352x288 fps=30
[dshow @ 000001f456eacd40]   pixel_format=yuyv422  min s=340x340 fps=30 max s=340x340 fps=30
[dshow @ 000001f456eacd40]   pixel_format=yuyv422  min s=340x340 fps=30 max s=340x340 fps=30
[dshow @ 000001f456eacd40]   pixel_format=yuyv422  min s=424x240 fps=5 max s=424x240 fps=30
[dshow @ 000001f456eacd40]   pixel_format=yuyv422  min s=424x240 fps=5 max s=424x240 fps=30
[dshow @ 000001f456eacd40]   pixel_format=yuyv422  min s=440x440 fps=30 max s=440x440 fps=30
[dshow @ 000001f456eacd40]   pixel_format=yuyv422  min s=440x440 fps=30 max s=440x440 fps=30
[dshow @ 000001f456eacd40]   pixel_format=yuyv422  min s=480x270 fps=5 max s=480x270 fps=30
[dshow @ 000001f456eacd40]   pixel_format=yuyv422  min s=480x270 fps=5 max s=480x270 fps=30
[dshow @ 000001f456eacd40]   pixel_format=yuyv422  min s=640x360 fps=5 max s=640x360 fps=30
[dshow @ 000001f456eacd40]   pixel_format=yuyv422  min s=640x360 fps=5 max s=640x360 fps=30
[dshow @ 000001f456eacd40]   pixel_format=yuyv422  min s=800x448 fps=5 max s=800x448 fps=30
[dshow @ 000001f456eacd40]   pixel_format=yuyv422  min s=800x448 fps=5 max s=800x448 fps=30
[dshow @ 000001f456eacd40]   pixel_format=yuyv422  min s=800x600 fps=5 max s=800x600 fps=30
[dshow @ 000001f456eacd40]   pixel_format=yuyv422  min s=800x600 fps=5 max s=800x600 fps=30
[dshow @ 000001f456eacd40]   pixel_format=yuyv422  min s=848x480 fps=5 max s=848x480 fps=30
[dshow @ 000001f456eacd40]   pixel_format=yuyv422  min s=848x480 fps=5 max s=848x480 fps=30
[dshow @ 000001f456eacd40]   pixel_format=yuyv422  min s=960x540 fps=5 max s=960x540 fps=30
[dshow @ 000001f456eacd40]   pixel_format=yuyv422  min s=960x540 fps=5 max s=960x540 fps=30
[dshow @ 000001f456eacd40]   pixel_format=yuyv422  min s=1024x576 fps=5 max s=1024x576 fps=30
[dshow @ 000001f456eacd40]   pixel_format=yuyv422  min s=1024x576 fps=5 max s=1024x576 fps=30
[dshow @ 000001f456eacd40]   pixel_format=yuyv422  min s=1280x720 fps=5 max s=1280x720 fps=30
[dshow @ 000001f456eacd40]   pixel_format=yuyv422  min s=1280x720 fps=5 max s=1280x720 fps=30
[dshow @ 000001f456eacd40]   pixel_format=yuyv422  min s=1600x896 fps=5 max s=1600x896 fps=30
[dshow @ 000001f456eacd40]   pixel_format=yuyv422  min s=1600x896 fps=5 max s=1600x896 fps=30
[dshow @ 000001f456eacd40]   pixel_format=yuyv422  min s=1920x1080 fps=5 max s=1920x1080 fps=30
[dshow @ 000001f456eacd40]   pixel_format=yuyv422  min s=1920x1080 fps=5 max s=1920x1080 fps=30
[dshow @ 000001f456eacd40]   vcodec=mjpeg  min s=640x480 fps=5 max s=640x480 fps=120
[dshow @ 000001f456eacd40]   vcodec=mjpeg  min s=640x480 fps=5 max s=640x480 fps=120
[dshow @ 000001f456eacd40]   vcodec=mjpeg  min s=160x120 fps=5 max s=160x120 fps=30
[dshow @ 000001f456eacd40]   vcodec=mjpeg  min s=160x120 fps=5 max s=160x120 fps=30
[dshow @ 000001f456eacd40]   vcodec=mjpeg  min s=176x144 fps=5 max s=176x144 fps=30
[dshow @ 000001f456eacd40]   vcodec=mjpeg  min s=176x144 fps=5 max s=176x144 fps=30
[dshow @ 000001f456eacd40]   vcodec=mjpeg  min s=320x180 fps=5 max s=320x180 fps=30
[dshow @ 000001f456eacd40]   vcodec=mjpeg  min s=320x180 fps=5 max s=320x180 fps=30
[dshow @ 000001f456eacd40]   vcodec=mjpeg  min s=320x240 fps=5 max s=320x240 fps=30
[dshow @ 000001f456eacd40]   vcodec=mjpeg  min s=320x240 fps=5 max s=320x240 fps=30
[dshow @ 000001f456eacd40]   vcodec=mjpeg  min s=352x288 fps=5 max s=352x288 fps=30
[dshow @ 000001f456eacd40]   vcodec=mjpeg  min s=352x288 fps=5 max s=352x288 fps=30
[dshow @ 000001f456eacd40]   vcodec=mjpeg  min s=424x240 fps=5 max s=424x240 fps=30
[dshow @ 000001f456eacd40]   vcodec=mjpeg  min s=424x240 fps=5 max s=424x240 fps=30
[dshow @ 000001f456eacd40]   vcodec=mjpeg  min s=480x270 fps=5 max s=480x270 fps=30
[dshow @ 000001f456eacd40]   vcodec=mjpeg  min s=480x270 fps=5 max s=480x270 fps=30
[dshow @ 000001f456eacd40]   vcodec=mjpeg  min s=640x360 fps=5 max s=640x360 fps=30
[dshow @ 000001f456eacd40]   vcodec=mjpeg  min s=640x360 fps=5 max s=640x360 fps=30
[dshow @ 000001f456eacd40]   vcodec=mjpeg  min s=800x448 fps=5 max s=800x448 fps=30
[dshow @ 000001f456eacd40]   vcodec=mjpeg  min s=800x448 fps=5 max s=800x448 fps=30
[dshow @ 000001f456eacd40]   vcodec=mjpeg  min s=800x600 fps=5 max s=800x600 fps=30
[dshow @ 000001f456eacd40]   vcodec=mjpeg  min s=800x600 fps=5 max s=800x600 fps=30
[dshow @ 000001f456eacd40]   vcodec=mjpeg  min s=848x480 fps=5 max s=848x480 fps=30
[dshow @ 000001f456eacd40]   vcodec=mjpeg  min s=848x480 fps=5 max s=848x480 fps=30
[dshow @ 000001f456eacd40]   vcodec=mjpeg  min s=960x540 fps=5 max s=960x540 fps=30
[dshow @ 000001f456eacd40]   vcodec=mjpeg  min s=960x540 fps=5 max s=960x540 fps=30
[dshow @ 000001f456eacd40]   vcodec=mjpeg  min s=1024x576 fps=5 max s=1024x576 fps=30
[dshow @ 000001f456eacd40]   vcodec=mjpeg  min s=1024x576 fps=5 max s=1024x576 fps=30
[dshow @ 000001f456eacd40]   vcodec=mjpeg  min s=1280x720 fps=5 max s=1280x720 fps=90.0001
[dshow @ 000001f456eacd40]   vcodec=mjpeg  min s=1280x720 fps=5 max s=1280x720 fps=90.0001
[dshow @ 000001f456eacd40]   vcodec=mjpeg  min s=1600x896 fps=5 max s=1600x896 fps=30
[dshow @ 000001f456eacd40]   vcodec=mjpeg  min s=1600x896 fps=5 max s=1600x896 fps=30
[dshow @ 000001f456eacd40]   vcodec=mjpeg  min s=1920x1080 fps=5 max s=1920x1080 fps=60.0002
[dshow @ 000001f456eacd40]   vcodec=mjpeg  min s=1920x1080 fps=5 max s=1920x1080 fps=60.0002
[dshow @ 000001f456eacd40]   vcodec=mjpeg  min s=2560x1440 fps=5 max s=2560x1440 fps=30
[dshow @ 000001f456eacd40]   vcodec=mjpeg  min s=2560x1440 fps=5 max s=2560x1440 fps=30
[dshow @ 000001f456eacd40]   vcodec=mjpeg  min s=3840x2160 fps=5 max s=3840x2160 fps=30
[dshow @ 000001f456eacd40]   vcodec=mjpeg  min s=3840x2160 fps=5 max s=3840x2160 fps=30
[dshow @ 000001f456eacd40]   vcodec=mjpeg  min s=4096x2160 fps=5 max s=4096x2160 fps=30
[dshow @ 000001f456eacd40]   vcodec=mjpeg  min s=4096x2160 fps=5 max s=4096x2160 fps=30
[dshow @ 000001f456eacd40]   pixel_format=nv12  min s=640x480 fps=5 max s=640x480 fps=30
[dshow @ 000001f456eacd40]   pixel_format=nv12  min s=640x480 fps=5 max s=640x480 fps=30
[dshow @ 000001f456eacd40]   pixel_format=nv12  min s=640x360 fps=5 max s=640x360 fps=30
[dshow @ 000001f456eacd40]   pixel_format=nv12  min s=640x360 fps=5 max s=640x360 fps=30
[dshow @ 000001f456eacd40]   pixel_format=nv12  min s=1280x720 fps=5 max s=1280x720 fps=30
[dshow @ 000001f456eacd40]   pixel_format=nv12  min s=1280x720 fps=5 max s=1280x720 fps=30
[dshow @ 000001f456eacd40]   pixel_format=nv12  min s=1920x1080 fps=5 max s=1920x1080 fps=30
[dshow @ 000001f456eacd40]   pixel_format=nv12  min s=1920x1080 fps=5 max s=1920x1080 fps=30

ffmpeg -list_options true -f dshow -i video="Prestigio Solutions PanoCAM" command output (just to get supported resolutions and modes) for Prestigio Panoramic VC Camera:

[dshow @ 0000018af4e8cec0] DirectShow video device options (from video devices)
[dshow @ 0000018af4e8cec0]   pixel_format=yuyv422  min s=640x360 fps=10 max s=640x360 fps=30
[dshow @ 0000018af4e8cec0]   pixel_format=yuyv422  min s=640x360 fps=10 max s=640x360 fps=30
[dshow @ 0000018af4e8cec0]   pixel_format=yuyv422  min s=640x480 fps=10 max s=640x480 fps=30
[dshow @ 0000018af4e8cec0]   pixel_format=yuyv422  min s=640x480 fps=10 max s=640x480 fps=30
[dshow @ 0000018af4e8cec0]   pixel_format=yuyv422  min s=320x240 fps=10 max s=320x240 fps=30
[dshow @ 0000018af4e8cec0]   pixel_format=yuyv422  min s=320x240 fps=10 max s=320x240 fps=30
[dshow @ 0000018af4e8cec0]   pixel_format=yuyv422  min s=480x270 fps=10 max s=480x270 fps=30
[dshow @ 0000018af4e8cec0]   pixel_format=yuyv422  min s=480x270 fps=10 max s=480x270 fps=30
[dshow @ 0000018af4e8cec0]   pixel_format=yuyv422  min s=352x288 fps=10 max s=352x288 fps=30
[dshow @ 0000018af4e8cec0]   pixel_format=yuyv422  min s=352x288 fps=10 max s=352x288 fps=30
[dshow @ 0000018af4e8cec0]   vcodec=mjpeg  min s=1920x1080 fps=10 max s=1920x1080 fps=30
[dshow @ 0000018af4e8cec0]   vcodec=mjpeg  min s=1920x1080 fps=10 max s=1920x1080 fps=30
[dshow @ 0000018af4e8cec0]   vcodec=mjpeg  min s=1280x720 fps=10 max s=1280x720 fps=30
[dshow @ 0000018af4e8cec0]   vcodec=mjpeg  min s=1280x720 fps=10 max s=1280x720 fps=30
[dshow @ 0000018af4e8cec0]   vcodec=mjpeg  min s=1024x576 fps=10 max s=1024x576 fps=30
[dshow @ 0000018af4e8cec0]   vcodec=mjpeg  min s=1024x576 fps=10 max s=1024x576 fps=30
[dshow @ 0000018af4e8cec0]   vcodec=mjpeg  min s=960x544 fps=10 max s=960x544 fps=30
[dshow @ 0000018af4e8cec0]   vcodec=mjpeg  min s=960x544 fps=10 max s=960x544 fps=30
[dshow @ 0000018af4e8cec0]   vcodec=mjpeg  min s=640x480 fps=10 max s=640x480 fps=30
[dshow @ 0000018af4e8cec0]   vcodec=mjpeg  min s=640x480 fps=10 max s=640x480 fps=30
[dshow @ 0000018af4e8cec0]   vcodec=mjpeg  min s=640x360 fps=10 max s=640x360 fps=30
[dshow @ 0000018af4e8cec0]   vcodec=mjpeg  min s=640x360 fps=10 max s=640x360 fps=30
[dshow @ 0000018af4e8cec0]   vcodec=mjpeg  min s=3840x2160 fps=10 max s=3840x2160 fps=24
[dshow @ 0000018af4e8cec0]   vcodec=mjpeg  min s=3840x2160 fps=10 max s=3840x2160 fps=24
[dshow @ 0000018af4e8cec0]   vcodec=mjpeg  min s=3840x962 fps=10 max s=3840x962 fps=30
[dshow @ 0000018af4e8cec0]   vcodec=mjpeg  min s=3840x962 fps=10 max s=3840x962 fps=30
[dshow @ 0000018af4e8cec0]   vcodec=mjpeg  min s=3840x1376 fps=10 max s=3840x1376 fps=30
[dshow @ 0000018af4e8cec0]   vcodec=mjpeg  min s=3840x1376 fps=10 max s=3840x1376 fps=30
[dshow @ 0000018af4e8cec0]   vcodec=mjpeg  min s=2560x1440 fps=10 max s=2560x1440 fps=30
[dshow @ 0000018af4e8cec0]   vcodec=mjpeg  min s=2560x1440 fps=10 max s=2560x1440 fps=30
[dshow @ 0000018af4e8cec0]   vcodec=h264  min s=1280x720 fps=10 max s=1280x720 fps=30
[dshow @ 0000018af4e8cec0]   vcodec=h264  min s=1280x720 fps=10 max s=1280x720 fps=30
[dshow @ 0000018af4e8cec0]   vcodec=h264  min s=1024x576 fps=10 max s=1024x576 fps=30
[dshow @ 0000018af4e8cec0]   vcodec=h264  min s=1024x576 fps=10 max s=1024x576 fps=30
[dshow @ 0000018af4e8cec0]   vcodec=h264  min s=960x544 fps=10 max s=960x544 fps=30
[dshow @ 0000018af4e8cec0]   vcodec=h264  min s=960x544 fps=10 max s=960x544 fps=30
[dshow @ 0000018af4e8cec0]   vcodec=h264  min s=640x480 fps=10 max s=640x480 fps=30
[dshow @ 0000018af4e8cec0]   vcodec=h264  min s=640x480 fps=10 max s=640x480 fps=30
[dshow @ 0000018af4e8cec0]   vcodec=h264  min s=640x360 fps=10 max s=640x360 fps=30
[dshow @ 0000018af4e8cec0]   vcodec=h264  min s=640x360 fps=10 max s=640x360 fps=30

Related issues: https://github.com/airsdk/Adobe-Runtime-Support/issues/1895 https://github.com/airsdk/Adobe-Runtime-Support/issues/1777

Also AIR cannot use camera framerate more than 30 fps right now - there is also issue.

ramraver commented 1 year ago

I guess Air just returns the wrong resolutions from the active camera. There is a difference in quality if I display a 4K camera source compared to a FHD source. Furthermore Antialiasing may have an effect on the quality. Cheers, Kai

itlancer commented 1 year ago

@ajwfrost With latest AIR versions for Windows, macOS and iOS cameras with 4K basically supported. But still have issues: https://github.com/airsdk/Adobe-Runtime-Support/issues/2699 https://github.com/airsdk/Adobe-Runtime-Support/issues/2693 https://github.com/airsdk/Adobe-Runtime-Support/issues/2691 https://github.com/airsdk/Adobe-Runtime-Support/issues/2687

raresn commented 1 year ago

@itlancer - any clue if the 4k camera is supported on Windows now? Thanks.

ajwfrost commented 1 year ago

@raresn AIR SDK 50.2.2.1 updated the limits so that it's possible to have a camera opened at 4k resolution on Windows, macOS and iOS - but this isn't yet the case for Linux and Android, and there are a few other related issues still as referenced above...

raresn commented 1 year ago

@ajwfrost idk now i missed that in the release notes... thank you! for me this is actually good because we have a small project on windows :)

ramraver commented 1 year ago

@raresn AIR SDK 50.2.2.1 updated the limits so that it's possible to have a camera opened at 4k resolution on Windows, macOS and iOS - but this isn't yet the case for Linux and Android, and there are a few other related issues still as referenced above...

@ajwfrost Good to see that something is happening, but it took quite a while... What about NDI support Andrew? Things like 4k and NDI should have priority to be adressed in a development framework like Air.

ajwfrost commented 1 year ago

We had someone looking into NDI and it does seem like this sort of integration is possible, although it may not be the most streamlined/performant of approaches.. although there do seem to be a number of options, so we would try to match the NDI output with whatever the current AIR render mode is. There may be some restrictions/issues though (I think our developer had got normal (software) rendering sorted but was struggling with DirectShow).

Trying to get a bit more focus onto this multimedia area again, we've been doing things in patches/bursts but one of the key next steps that will unblock a number of different capabilities is the same sort of functionality as we're looking at for this..

thanks

ramraver commented 1 year ago

Any news on this Andrew? Thanks

ramraver commented 1 year ago

We had someone looking into NDI and it does seem like this sort of integration is possible, although it may not be the most streamlined/performant of approaches.. although there do seem to be a number of options, so we would try to match the NDI output with whatever the current AIR render mode is. There may be some restrictions/issues though (I think our developer had got normal (software) rendering sorted but was struggling with DirectShow).

Trying to get a bit more focus onto this multimedia area again, we've been doing things in patches/bursts but one of the key next steps that will unblock a number of different capabilities is the same sort of functionality as we're looking at for this..

thanks

any news on this Andrew?