Index: TVLibrary/SetupTv/Dialogs/FormAnalogTuningDetail.Designer.cs
===================================================================
--- TVLibrary/SetupTv/Dialogs/FormAnalogTuningDetail.Designer.cs	(revision 27917)
+++ TVLibrary/SetupTv/Dialogs/FormAnalogTuningDetail.Designer.cs	(working copy)
@@ -240,7 +240,10 @@
             "RGB #3",
             "YRYBY #1",
             "YRYBY #2",
-            "YRYBY #3"});
+            "YRYBY #3",
+            "HDMI #1",
+            "HDMI #2",
+            "HDMI #3"});
       this.comboBoxVideoSource.Location = new System.Drawing.Point(93, 32);
       this.comboBoxVideoSource.Name = "comboBoxVideoSource";
       this.comboBoxVideoSource.Size = new System.Drawing.Size(258, 21);
Index: TVLibrary/SetupTv/Sections/CardAnalog.cs
===================================================================
--- TVLibrary/SetupTv/Sections/CardAnalog.cs	(revision 27917)
+++ TVLibrary/SetupTv/Sections/CardAnalog.cs	(working copy)
@@ -1516,30 +1516,96 @@
         layer.MapChannelToCard(card, dbChannel, false);
         layer.AddChannelToGroup(dbChannel, TvConstants.TvGroupNames.AllChannels);
       }
-      if (videoPinMap.ContainsKey(AnalogChannel.VideoInputType.YRYBYInput3))
+	  if (videoPinMap.ContainsKey(AnalogChannel.VideoInputType.YRYBYInput3))
+	  {
+		  string channelName = "YRYBY#3 on " + card.IdCard;
+		  IList<TuningDetail> tuningDetails = layer.GetTuningDetailsByName(channelName, 0);
+		  if (tuningDetails != null && tuningDetails.Count > 0)
+		  {
+			  dbChannel = tuningDetails[0].ReferencedChannel();
+		  }
+		  else
+		  {
+			  dbChannel = layer.AddNewChannel(channelName);
+		  }
+		  dbChannel.IsTv = true;
+		  dbChannel.Persist();
+		  tuningDetail = new AnalogChannel();
+		  tuningDetail.IsTv = true;
+		  tuningDetail.Name = dbChannel.DisplayName;
+		  tuningDetail.VideoSource = AnalogChannel.VideoInputType.YRYBYInput3;
+		  layer.AddTuningDetails(dbChannel, tuningDetail);
+		  layer.MapChannelToCard(card, dbChannel, false);
+		  layer.AddChannelToGroup(dbChannel, TvConstants.TvGroupNames.AllChannels);
+	  }
+    if (videoPinMap.ContainsKey(AnalogChannel.VideoInputType.HdmiInput1))
+    {
+      string channelName = "HDMI#1 on " + card.IdCard;
+      IList<TuningDetail> tuningDetails = layer.GetTuningDetailsByName(channelName, 0);
+      if (tuningDetails != null && tuningDetails.Count > 0)
       {
-        string channelName = "YRYBY#3 on " + card.IdCard;
-        IList<TuningDetail> tuningDetails = layer.GetTuningDetailsByName(channelName, 0);
-        if (tuningDetails != null && tuningDetails.Count > 0)
-        {
-          dbChannel = tuningDetails[0].ReferencedChannel();
-        }
-        else
-        {
-          dbChannel = layer.AddNewChannel(channelName);
-        }
-        dbChannel.IsTv = true;
-        dbChannel.Persist();
-        tuningDetail = new AnalogChannel();
-        tuningDetail.IsTv = true;
-        tuningDetail.Name = dbChannel.DisplayName;
-        tuningDetail.VideoSource = AnalogChannel.VideoInputType.YRYBYInput3;
-        layer.AddTuningDetails(dbChannel, tuningDetail);
-        layer.MapChannelToCard(card, dbChannel, false);
-        layer.AddChannelToGroup(dbChannel, TvConstants.TvGroupNames.AllChannels);
+        dbChannel = tuningDetails[0].ReferencedChannel();
       }
-      MessageBox.Show(this, "Channels added.");
+      else
+      {
+        dbChannel = layer.AddNewChannel(channelName);
+      }
+      dbChannel.IsTv = true;
+      dbChannel.Persist();
+      tuningDetail = new AnalogChannel();
+      tuningDetail.IsTv = true;
+      tuningDetail.Name = dbChannel.DisplayName;
+      tuningDetail.VideoSource = AnalogChannel.VideoInputType.HdmiInput1;
+      layer.AddTuningDetails(dbChannel, tuningDetail);
+      layer.MapChannelToCard(card, dbChannel, false);
+      layer.AddChannelToGroup(dbChannel, TvConstants.TvGroupNames.AllChannels);
     }
+    if (videoPinMap.ContainsKey(AnalogChannel.VideoInputType.HdmiInput2))
+    {
+      string channelName = "HDMI#2 on " + card.IdCard;
+      IList<TuningDetail> tuningDetails = layer.GetTuningDetailsByName(channelName, 0);
+      if (tuningDetails != null && tuningDetails.Count > 0)
+      {
+        dbChannel = tuningDetails[0].ReferencedChannel();
+      }
+      else
+      {
+        dbChannel = layer.AddNewChannel(channelName);
+      }
+      dbChannel.IsTv = true;
+      dbChannel.Persist();
+      tuningDetail = new AnalogChannel();
+      tuningDetail.IsTv = true;
+      tuningDetail.Name = dbChannel.DisplayName;
+      tuningDetail.VideoSource = AnalogChannel.VideoInputType.HdmiInput2;
+      layer.AddTuningDetails(dbChannel, tuningDetail);
+      layer.MapChannelToCard(card, dbChannel, false);
+      layer.AddChannelToGroup(dbChannel, TvConstants.TvGroupNames.AllChannels);
+    }
+    if (videoPinMap.ContainsKey(AnalogChannel.VideoInputType.HdmiInput3))
+    {
+      string channelName = "HDMI#3 on " + card.IdCard;
+      IList<TuningDetail> tuningDetails = layer.GetTuningDetailsByName(channelName, 0);
+      if (tuningDetails != null && tuningDetails.Count > 0)
+      {
+        dbChannel = tuningDetails[0].ReferencedChannel();
+      }
+      else
+      {
+        dbChannel = layer.AddNewChannel(channelName);
+      }
+      dbChannel.IsTv = true;
+      dbChannel.Persist();
+      tuningDetail = new AnalogChannel();
+      tuningDetail.IsTv = true;
+      tuningDetail.Name = dbChannel.DisplayName;
+      tuningDetail.VideoSource = AnalogChannel.VideoInputType.HdmiInput3;
+      layer.AddTuningDetails(dbChannel, tuningDetail);
+      layer.MapChannelToCard(card, dbChannel, false);
+      layer.AddChannelToGroup(dbChannel, TvConstants.TvGroupNames.AllChannels);
+    }
+    MessageBox.Show(this, "Channels added.");
+   }
 
     private void ReCheckSettings()
     {
Index: TVLibrary/TvLibrary.Interfaces/Implementations/Channels/AnalogChannel.cs
===================================================================
--- TVLibrary/TvLibrary.Interfaces/Implementations/Channels/AnalogChannel.cs	(revision 27917)
+++ TVLibrary/TvLibrary.Interfaces/Implementations/Channels/AnalogChannel.cs	(working copy)
@@ -88,7 +88,19 @@
       /// <summary>
       /// RGB input #3
       /// </summary>
-      YRYBYInput3
+      YRYBYInput3,
+	    /// <summary>
+	    /// HDMI input #1
+	    /// </summary>
+	    HdmiInput1,
+	    /// <summary>
+	    /// HDMI input #2
+	    /// </summary>
+	    HdmiInput2,
+	    /// <summary>
+	    /// HDMI input #3
+	    /// </summary>
+	    HdmiInput3
     }
 
     /// <summary>
Index: TVLibrary/TVLibrary/Implementations/Analog/Components/Crossbar.cs
===================================================================
--- TVLibrary/TVLibrary/Implementations/Analog/Components/Crossbar.cs	(revision 27917)
+++ TVLibrary/TVLibrary/Implementations/Analog/Components/Crossbar.cs	(working copy)
@@ -470,6 +470,7 @@
       int videoSvhsNr = 0;
       int videoYrYbYNr = 0;
       int videoRgbNr = 0;
+      int videoHdmi = 0;
       for (int i = 0; i < inputs; ++i)
       {
         _crossBarFilter.get_CrossbarPinInfo(true, i, out relatedPinIndex, out connectorType);
@@ -600,6 +601,24 @@
                 break;
             }
             break;
+          case PhysicalConnectorType.Video_SerialDigital:
+            videoHdmi++;
+            switch (videoHdmi)
+            {
+              case 1:
+                _videoPinMap.Add(AnalogChannel.VideoInputType.HdmiInput1, i);
+                _videoPinRelatedAudioMap.Add(AnalogChannel.VideoInputType.YRYBYInput1, relatedPinIndex);
+                break;
+              case 2:
+                _videoPinMap.Add(AnalogChannel.VideoInputType.HdmiInput2, i);
+                _videoPinRelatedAudioMap.Add(AnalogChannel.VideoInputType.HdmiInput2, relatedPinIndex);
+                break;
+              case 3:
+                _videoPinMap.Add(AnalogChannel.VideoInputType.HdmiInput3, i);
+                _videoPinRelatedAudioMap.Add(AnalogChannel.VideoInputType.HdmiInput3, relatedPinIndex);
+                break;
+            }
+            break;
         }
       }
     }
Index: TVLibrary/TVLibrary/Implementations/Analog/Graphs/HDPVR/TVCardHDPVR.cs
===================================================================
--- TVLibrary/TVLibrary/Implementations/Analog/Graphs/HDPVR/TVCardHDPVR.cs	(revision 27917)
+++ TVLibrary/TVLibrary/Implementations/Analog/Graphs/HDPVR/TVCardHDPVR.cs	(working copy)
@@ -945,6 +945,7 @@
         int videoSvhsNr = 0;
         int videoYrYbYNr = 0;
         int videoRgbNr = 0;
+        int videoHdmi = 0;
         for (int i = 0; i < inputs; ++i)
         {
           crossBarFilter.get_CrossbarPinInfo(true, i, out relatedPinIndex, out connectorType);
@@ -1075,6 +1076,24 @@
                   break;
               }
               break;
+            case PhysicalConnectorType.Video_SerialDigital:
+              videoHdmi++;
+              switch (videoHdmi)
+              {
+              case 1:
+                _videoPinMap.Add(AnalogChannel.VideoInputType.HdmiInput1, i);
+                _videoPinRelatedAudioMap.Add(AnalogChannel.VideoInputType.HdmiInput1, relatedPinIndex);
+                  break;
+                case 2:
+                  _videoPinMap.Add(AnalogChannel.VideoInputType.HdmiInput2, i);
+                  _videoPinRelatedAudioMap.Add(AnalogChannel.VideoInputType.HdmiInput2, relatedPinIndex);
+                  break;
+                case 3:
+                  _videoPinMap.Add(AnalogChannel.VideoInputType.HdmiInput3, i);
+                  _videoPinRelatedAudioMap.Add(AnalogChannel.VideoInputType.HdmiInput3, relatedPinIndex);
+                  break;
+              }
+              break;
           }
         }
       }
