docs: @Override
      public byte[] convertBlock(int[] input, int inPos, byte[] output, int numOfComponents, int startCoordinate,
                                 int row, int scanlineStride) {
          int index = 0, inputOffset = 0, bounds = 0;
          int Y, Cb, Cr;
          int len = output.length;
  
          for (int i = 0; i < DCTSIZE; i++) {
              index = startCoordinate + i * scanlineStride;
              bounds = row * scanlineStride;
  
              for (int j = 0; j < DCTSIZE; j++) {
                  Y = input[inputOffset++] & 0xFF;
                  Cb = input[inputOffset++] & 0xFF;
                  Cr = input[inputOffset++] & 0xFF;
  
                  if (index >= len) {
                      return output;
                  }
  
                  if (index < bounds) {
                      output[index++] = (byte) sampleRangeLimitTable[sampleRangeLimitOffset + Y + Cr2R[Cr]];
                      output[index++] = (byte) sampleRangeLimitTable[sampleRangeLimitOffset + Y
                                                                     + ((Cb2G[Cb] + Cr2G[Cr]) >> 16)];
                      output[index++] = (byte) sampleRangeLimitTable[sampleRangeLimitOffset + Y + Cb2B[Cb]];
                  }
              }
  
              row++;
          }
  
          return output;
      }