Results 1 to 2 of 2

Thread: low res compression artifacts

  1. #1
    Registered User
    Join Date
    Oct 2019
    Location
    Hong Kong
    Posts
    3

    low res compression artifacts

    Hi, I'm trying to use the NDI SDK to send and receive low resolution video frames, e.g. 32 by 32 pixels, and I am seeing quite a bit of noise introduced by the NDI compression. Can you advise me if there is a better way to send low res frames without any loss of precision.
    I am using the C++ SDK example NDIlib_Send_Video to create a 32x32 frame, setting pixel[33] to (255,0,255,255) NDIlib_FourCC_type_RGBA. All other pixels are (0,0,0,255).
    I’m running a receiver based on NDIlib_Recv, color_format= NDIlib_recv_color_format_BGRX_BGRA (I want the RGB values) and allow_video_fields = false (assuming i want to force progressive)
    What I see on the receiving end, on the same laptop:
    received: video px 31 data B G R A: 0 0 0 255
    received: video px 32 data B G R A: 1 0 184 255 (preceding pixel, artifact)
    received: video px 33 data B G R A: 73 0 255 255 (target pixel, wrong colour)
    received: video px 34 data B G R A: 2 0 9 255
    received: video px 35 data B G R A: 0 0 7 255
    received: video px 36 data B G R A: 0 0 2 255
    received: video px 37 data B G R A: 0 0 2 255
    received: video px 38 data B G R A: 1 0 3 255
    received: video px 39 data B G R A: 0 0 1 255
    received: video px 40 data B G R A: 0 0 4 255
    received: video px 41 data B G R A: 0 0 4 255
    received: video px 42 data B G R A: 0 2 0 255
    received: video px 43 data B G R A: 0 2 0 255
    received: video px 44 data B G R A: 0 0 2 255
    received: video px 45 data B G R A: 0 0 2 255
    received: video px 46 data B G R A: 0 0 0 255
    So there is significant noise on the preceding pixel[32], the target pixel[33] has the wrong colour, and there is a little noise for the next 12 pixels. Attached screenshot of NDI Studio Monitor, where I expect to see one magenta pixel.
    Which settings should I use to increase the precision at this low resolution? Or should I send the frames in higher resolution and then resize after receiving?
    Click image for larger version. 

Name:	ndi_1px.PNG 
Views:	24 
Size:	16.9 KB 
ID:	146213

  2. #2
    Registered User
    Join Date
    Aug 2015
    Location
    london
    Posts
    244
    Quote Originally Posted by tomtobback View Post
    Hi, I'm trying to use the NDI SDK to send and receive low resolution video frames, e.g. 32 by 32 pixels, and I am seeing quite a bit of noise introduced by the NDI compression. Can you advise me if there is a better way to send low res frames without any loss of precision.
    I am using the C++ SDK example NDIlib_Send_Video to create a 32x32 frame, setting pixel[33] to (255,0,255,255) NDIlib_FourCC_type_RGBA. All other pixels are (0,0,0,255).
    I’m running a receiver based on NDIlib_Recv, color_format= NDIlib_recv_color_format_BGRX_BGRA (I want the RGB values) and allow_video_fields = false (assuming i want to force progressive)
    What I see on the receiving end, on the same laptop:
    received: video px 31 data B G R A: 0 0 0 255
    received: video px 32 data B G R A: 1 0 184 255 (preceding pixel, artifact)
    received: video px 33 data B G R A: 73 0 255 255 (target pixel, wrong colour)
    received: video px 34 data B G R A: 2 0 9 255
    received: video px 35 data B G R A: 0 0 7 255
    received: video px 36 data B G R A: 0 0 2 255
    received: video px 37 data B G R A: 0 0 2 255
    received: video px 38 data B G R A: 1 0 3 255
    received: video px 39 data B G R A: 0 0 1 255
    received: video px 40 data B G R A: 0 0 4 255
    received: video px 41 data B G R A: 0 0 4 255
    received: video px 42 data B G R A: 0 2 0 255
    received: video px 43 data B G R A: 0 2 0 255
    received: video px 44 data B G R A: 0 0 2 255
    received: video px 45 data B G R A: 0 0 2 255
    received: video px 46 data B G R A: 0 0 0 255
    So there is significant noise on the preceding pixel[32], the target pixel[33] has the wrong colour, and there is a little noise for the next 12 pixels. Attached screenshot of NDI Studio Monitor, where I expect to see one magenta pixel.
    Which settings should I use to increase the precision at this low resolution? Or should I send the frames in higher resolution and then resize after receiving?
    Click image for larger version. 

Name:	ndi_1px.PNG 
Views:	24 
Size:	16.9 KB 
ID:	146213
    I would suggest you try 8 NDI pixels for each of your source pixels.
    So for 32x32 try sending 256x256. This may end up with the cleanest rendition of your source image.

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
  •