Results 1 to 12 of 12

Thread: NDI - Visual Artefacts

  1. #1
    Registered User
    Join Date
    Jul 2019
    Location
    Sweden
    Posts
    9

    NDI - Visual Artefacts

    Hello everyone!

    This is more or less a copy-paste of a reddit post I made. Hopefully someone here will be able to shed some light.

    I'm attempting to use NDI to send a capture of a computer game from one computer to another. The computer running a game is using OBS with the OBS-NDI plugin (I've also attempted to use NDI Scan Converter with the same result). The scene and output resolution match each other, and have been tested at 3840x2160 and 1920x1080, both at 60 FPS. NDI is used in non-low bandwidth mode. The gaming computer is connected to a networking switch over 40 Gbps. The receiving computer is also connected over 40 Gbps. They're in close proximity to each other with a couple of hundred microseconds of latency at most, within the same subnet. The highest bitrate that I've seen using a feed that is virtually impossible to efficiently compress (random colored noise, high entropy) was around 380 Mbps.

    Regardless if the NDI output is received and viewed locally on the "gaming" computer, or on the receiving computer over the network, very noticeable compression artefacts can be seen, both banding and microblocking. This is an issue I've had with NDI since I started testing it about a year and a half ago. Despite searching around, it seems there hasn't been a lot of research into what NDI actually does to the source, visually.

    If someone is sitting on more knowledge than readily available, perhaps a way to force NDI to not be so aggressive on saving bitrate, do tell.

    I can add some images to show the issue. If the interest is here, I can put several of them in an archive and upload to a file service.

  2. #2
    Registered User
    Join Date
    Jul 2019
    Location
    Sweden
    Posts
    9
    Here are two pictures to show the issue. The first one is directly from the source, and the second one is over NDI. The full resolution is 3840x2160. I've uploaded them according to imgur's guidelines to make sure they don't lossily compress the images, so they're losslessly compressed as PNG files.

    Source

    NDI

  3. #3
    Registered User
    Join Date
    Aug 2015
    Location
    london
    Posts
    286
    Quote Originally Posted by Jent View Post
    Here are two pictures to show the issue. The first one is directly from the source, and the second one is over NDI. The full resolution is 3840x2160. I've uploaded them according to imgur's guidelines to make sure they don't lossily compress the images, so they're losslessly compressed as PNG files.

    Source

    NDI
    Its likely the majority of the artefacts in your example are due to 8-bit encoding. Somewhere along the line with NDI 4.0 you will be able to do this with 10 or 16-bit encoding and the artefacts in the smooth graduations of the picture would likely be better replicated. There does appear to be a small color space change too which may be something else, for example related to a change between RGB and YUV colorspaces.

    just my 2c.

  4. #4
    Registered User
    Join Date
    Jul 2019
    Location
    Sweden
    Posts
    9
    Quote Originally Posted by livepad View Post
    Its likely the majority of the artefacts in your example are due to 8-bit encoding. Somewhere along the line with NDI 4.0 you will be able to do this with 10 or 16-bit encoding and the artefacts in the smooth graduations of the picture would likely be better replicated. There does appear to be a small color space change too which may be something else, for example related to a change between RGB and YUV colorspaces.

    just my 2c.
    Thanks for adding to the discussion!

    A higher bit depth can definitely help with both banding and "mosquito noise". However, 4.0 seems to have been slated for Q2 this year, which has passed, and I cannot seem to find a new date.

  5. #5
    Registered User
    Join Date
    Jul 2019
    Location
    Sweden
    Posts
    9
    I'm revisiting this as I'd love to be able to use NDI but the current state of quality prohibits it.

    This is a cut-out from a part of the screen, zoomed in to demonstrate the artifacts. If any staff, dev, engineer, or even community member has some suggestions, I'm all ears.

    Click image for larger version. 

Name:	ndi-ss.png 
Views:	59 
Size:	1.93 MB 
ID:	146962

    This is using OBS with the latest obs-ndi plugin, using the latest NDI runtime. Quality above is what OBS sees on a client, via NDI. Quality-degradation is virtually the same even when using the NDI monitor to view the feed, or even using NDI tools to capture the screen.

    When sending 1080p60 to the client, the receiving bitrate is around 135 Mbps, perfectly stable.
    Last edited by Jent; 02-27-2020 at 04:49 AM.

  6. #6
    Registered User
    Join Date
    Aug 2015
    Location
    london
    Posts
    286
    Quote Originally Posted by Jent View Post
    I'm revisiting this as I'd love to be able to use NDI but the current state of quality prohibits it.

    This is a cut-out from a part of the screen, zoomed in to demonstrate the artifacts. If any staff, dev, engineer, or even community member has some suggestions, I'm all ears.

    Click image for larger version. 

Name:	ndi-ss.png 
Views:	59 
Size:	1.93 MB 
ID:	146962

    This is using OBS with the latest obs-ndi plugin, using the latest NDI runtime. Quality above is what OBS sees on a client, via NDI. Quality-degradation is virtually the same even when using the NDI monitor to view the feed, or even using NDI tools to capture the screen.

    When sending 1080p60 to the client, the receiving bitrate is around 135 Mbps, perfectly stable.
    Its hard to judge what you are seeing on a small (undefined scale) section of the screen. It looks on the face of it like common or garden macro block compression artefacts. Ultimately compression works by throwing stuff away. It's not magic, and we naturally expect the image to look different than an uncompressed original.

    Perhaps you could try capturing it with an uncompressed screen capture tool and then try post-compressing it with any other sort of 8 bit 100-mbit ish single pass, high speed DCT codec (for example MPEG2) and see what you get. You may find that this is normal, or you might not.

  7. #7
    Registered User
    Join Date
    Jul 2019
    Location
    Sweden
    Posts
    9
    Quote Originally Posted by livepad View Post
    Its hard to judge what you are seeing on a small (undefined scale) section of the screen. It looks on the face of it like common or garden macro block compression artefacts. Ultimately compression works by throwing stuff away. It's not magic, and we naturally expect the image to look different than an uncompressed original.

    Perhaps you could try capturing it with an uncompressed screen capture tool and then try post-compressing it with any other sort of 8 bit 100-mbit ish single pass, high speed DCT codec (for example MPEG2) and see what you get. You may find that this is normal, or you might not.
    That is correct. A lot of macro blocking, and what was previously referred to as "mosquito noise".

    I wouldn't have any issues with a higher bitrate, if it meant fewer visual artifacts!

    I attempted the same with a sample program of my own using NVENC, low latency, low compression settiings, and had visually lossless quality at 187 Mbps. However, the very simplicity of existing NDI implementations means I'd rather use that than make my own tools for the various devices, if I'm able to produce a higher quality stream.

  8. #8
    I did a quick test using NDI Scan Converter and NDI Studio Monitor to share a video game. I grabbed both the local computer and the NDI Studio Monitor image. Both sources are 1920x1080. I then took them and split the image in half in a paint program. Left side uncompressed and right side is NDI, saved as PNG to avoid JPEG compression.

    If you zoom in, the compression can be seen, but pretty difficult at 100%.
    Click image for larger version. 

Name:	Transistor.png 
Views:	57 
Size:	2.54 MB 
ID:	146969
    Kane Peterson
    Solutions Architect
    NewTek, Inc.

  9. #9
    'the write stuff' SBowie's Avatar
    Join Date
    Feb 2003
    Location
    The stars at night are big and bright
    Posts
    19,780
    Quote Originally Posted by Jent View Post
    However, the very simplicity of existing NDI implementations means I'd rather use that than make my own tools for the various devices, if I'm able to produce a higher quality stream.
    I'm not sure what to attribute your problem to, but I can tell you that, in motion, NDI is normally virtually indistinguishable from SDI ... so there's something else going on here in your setup.
    --
    Regards, Steve
    Forum Moderator
    ("You've got to ask yourself one question ... 'Do I feel lucky?' Well, do ya, spammer?")

  10. #10
    Registered User
    Join Date
    Jul 2019
    Location
    Sweden
    Posts
    9
    Quote Originally Posted by kanep View Post
    I did a quick test using NDI Scan Converter and NDI Studio Monitor to share a video game. I grabbed both the local computer and the NDI Studio Monitor image. Both sources are 1920x1080. I then took them and split the image in half in a paint program. Left side uncompressed and right side is NDI, saved as PNG to avoid JPEG compression.

    If you zoom in, the compression can be seen, but pretty difficult at 100%.
    Click image for larger version. 

Name:	Transistor.png 
Views:	57 
Size:	2.54 MB 
ID:	146969
    Thanks for taking the time to do that!
    It might be the source/material, but I cannot see the same brutal macroblocking in your shot as I've seen in mine. I'll buy Transistor (I presume that's the game you've tested with?) tomorrow and test that, too, to compare it to your results. It's getting a bit late here (11:58 PM) now but I'll hop on it tomorrow. At least for other games, I've even tested using the exact same software setup as you stated and still see a lot of small macroblocking artefacts, especially on flat surfaces, such as grey walls, but also on complex textures such as grass and leaves. Do you mind checking the incoming bitrate on the client?

    Quote Originally Posted by SBowie View Post
    I'm not sure what to attribute your problem to, but I can tell you that, in motion, NDI is normally virtually indistinguishable from SDI ... so there's something else going on here in your setup.
    That's quite possible, but I cannot see what that would be. I believe I've eliminated the usual suspects (networking and tools), unless something else is going on therein.

    The biggest issue to me with the macroblocking is that it causes an almost "shimmering" during movement, especially on flat textures. The other issue is artefacts around objects of high detail which is very visible on large format screens. I've found it largely mitigated by ingesting a large resolution stream and downscaling it, but that's not practical for, say, 2160p monitors to receive a 4320p stream across the network all the time (to clarify, the issue would be ingesting the high resolute stream, decoding it, then downscaling on a variety of devices, rather than a networking bottleneck).

    Thanks to everyone taking the time to assist with this! I truly appreciate it.

  11. #11
    Registered User
    Join Date
    Aug 2015
    Location
    london
    Posts
    286
    Quote Originally Posted by Jent View Post
    Thanks for taking the time to do that!
    It might be the source/material, but I cannot see the same brutal macroblocking in your shot as I've seen in mine. I'll buy Transistor (I presume that's the game you've tested with?) tomorrow and test that, too, to compare it to your results. It's getting a bit late here (11:58 PM) now but I'll hop on it tomorrow. At least for other games, I've even tested using the exact same software setup as you stated and still see a lot of small macroblocking artefacts, especially on flat surfaces, such as grey walls, but also on complex textures such as grass and leaves. Do you mind checking the incoming bitrate on the client?



    That's quite possible, but I cannot see what that would be. I believe I've eliminated the usual suspects (networking and tools), unless something else is going on therein.

    The biggest issue to me with the macroblocking is that it causes an almost "shimmering" during movement, especially on flat textures. The other issue is artefacts around objects of high detail which is very visible on large format screens. I've found it largely mitigated by ingesting a large resolution stream and downscaling it, but that's not practical for, say, 2160p monitors to receive a 4320p stream across the network all the time (to clarify, the issue would be ingesting the high resolute stream, decoding it, then downscaling on a variety of devices, rather than a networking bottleneck).

    Thanks to everyone taking the time to assist with this! I truly appreciate it.
    One more thing to consider.
    NDI appears to increase compression rate for very high frame rates - in order to preserve sensible bandwidth.
    If your game is running at a crazy frame rate (another thread is talking about 144 fps screen capture) - you may see very different results to a game running at 60 fps.

  12. #12
    Registered User
    Join Date
    Jul 2019
    Location
    Sweden
    Posts
    9
    Quote Originally Posted by livepad View Post
    One more thing to consider.
    NDI appears to increase compression rate for very high frame rates - in order to preserve sensible bandwidth.
    If your game is running at a crazy frame rate (another thread is talking about 144 fps screen capture) - you may see very different results to a game running at 60 fps.
    Nope, just good old 60 FPS!

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •