GetMediaInfo.Format.ps1xml

<?xml version="1.0" encoding="utf-8"?>
<Configuration>

<SelectionSets>
  <SelectionSet>
    <Name>GetMediaInfo.MediaInfoResultTypes</Name>
    <Types>
      <TypeName>GetMediaInfo.VideoMediaInfoResult</TypeName>
      <TypeName>GetMediaInfo.AudioMediaInfoResult</TypeName>
      <TypeName>GetMediaInfo.ImageMediaInfoResult</TypeName>
      <TypeName>GetMediaInfo.UnknownMediaInfoResult</TypeName>
    </Types>
  </SelectionSet>

  <SelectionSet>
  <Name>GetMediaInfo.MediaInfoResult.Extended.Types</Name>
  <Types>
    <TypeName>GetMediaInfo.VideoMediaInfoResult.Extended</TypeName>
    <TypeName>GetMediaInfo.AudioMediaInfoResult.Extended</TypeName>
    <TypeName>GetMediaInfo.ImageMediaInfoResult.Extended</TypeName>
    <TypeName>GetMediaInfo.UnknownMediaInfoResult.Extended</TypeName>
  </Types>
</SelectionSet>
</SelectionSets>

  <ViewDefinitions>

<View>
  <Name>GetMediaInfo.MediaInfoResult.List</Name>

  <ViewSelectedBy>
    <SelectionSetName>GetMediaInfo.MediaInfoResultTypes</SelectionSetName>
  </ViewSelectedBy>

  <ListControl>
    <ListEntries>

      <!-- Video -->
      <ListEntry>
        <EntrySelectedBy>
          <TypeName>GetMediaInfo.VideoMediaInfoResult</TypeName>
        </EntrySelectedBy>

        <ListItems>
          <ListItem>
            <Label>Name</Label>
            <PropertyName>Name</PropertyName>
          </ListItem>

          <ListItem>
            <Label>Frame rate</Label>
            <ScriptBlock>
              if ($null -ne $_.FrameRate) {
                '{0:0.###} fps' -f $_.FrameRate
              }
            </ScriptBlock>
          </ListItem>

          <ListItem>
            <Label>Resolution</Label>
            <PropertyName>Resolution</PropertyName>
          </ListItem>

          <ListItem>
            <Label>Duration</Label>
            <ScriptBlock>
              if ($null -ne $_.Duration) {
                $_.Duration.ToString('hh\:mm\:ss\.ff')
              }
            </ScriptBlock>
          </ListItem>
           <ListItem>
            <Label>SizeMiB</Label>
            <ScriptBlock>
  if ($null -ne $_.SizeMiB) {
    '{0:F2}' -f $_.SizeMiB
  }
</ScriptBlock>
          </ListItem>


          <ListItem>
            <Label>Video</Label>
            <PropertyName>VideoCodec</PropertyName>
          </ListItem>

          <ListItem>
            <Label>Audio</Label>
            <PropertyName>AudioCodec</PropertyName>
          </ListItem>
        </ListItems>
      </ListEntry>


      <!-- Audio -->
      <ListEntry>
        <EntrySelectedBy>
          <TypeName>GetMediaInfo.AudioMediaInfoResult</TypeName>
        </EntrySelectedBy>

        <ListItems>
          <ListItem>
            <Label>Name</Label>
            <PropertyName>Name</PropertyName>
          </ListItem>

          <ListItem>
            <Label>Format</Label>
            <PropertyName>ContainerFormat</PropertyName>
          </ListItem>

          <ListItem>
            <Label>Duration</Label>
            <ScriptBlock>
              if ($null -ne $_.Duration) {
                $_.Duration.ToString('hh\:mm\:ss\.ff')
              }
            </ScriptBlock>
          </ListItem>

          <ListItem>
            <Label>Audio</Label>
            <PropertyName>AudioCodec</PropertyName>
          </ListItem>
          <ListItem>
            <Label>SizeMiB</Label>
            <ScriptBlock>
  if ($null -ne $_.SizeMiB) {
    '{0:F2}' -f $_.SizeMiB
  }
</ScriptBlock>
          </ListItem>
          <ListItem>
            <Label>BitRate</Label>
             <ScriptBlock>
              if ($null -ne $_.AudioBitRate) {
                '{0:0.###} kbps' -f ($_.AudioBitRate / 1000.0)
              }
            </ScriptBlock>
          </ListItem>

          <ListItem>
            <Label>SamplingRate</Label>
            <ScriptBlock>
              if ($null -ne $_.SamplingRate) {
                '{0:0.###} kHz' -f ($_.SamplingRate / 1000.0)
              }
            </ScriptBlock>
            </ListItem>

            <listItem>
            <label>AudioBitRateMode</label>
            <PropertyName>AudioBitRateMode</PropertyName>
          </listItem>

          <ListItem>
            <Label>Artist</Label>
            <PropertyName>Artist</PropertyName>
          </ListItem>

          <ListItem>
            <Label>Album</Label>
            <PropertyName>Album</PropertyName>
          </ListItem>

          <ListItem>
            <Label>Track</Label>
            <ScriptBlock>
              if ($null -ne $_.TrackNumber) {
                if ($null -ne $_.TrackCount) {
                  '{0}/{1}' -f $_.TrackNumber, $_.TrackCount
                } else {
                  $_.TrackNumber
                }
              }
            </ScriptBlock>
          </ListItem>
        </ListItems>
      </ListEntry>


      <!-- Image -->
      <ListEntry>
        <EntrySelectedBy>
          <TypeName>GetMediaInfo.ImageMediaInfoResult</TypeName>
        </EntrySelectedBy>

        <ListItems>
          <ListItem>
            <Label>Name</Label>
            <PropertyName>Name</PropertyName>
          </ListItem>

          <ListItem>
            <Label>Format</Label>
            <PropertyName>ImageFormat</PropertyName>
          </ListItem>

          <ListItem>
            <Label>Resolution</Label>
            <PropertyName>Resolution</PropertyName>
          </ListItem>

          <ListItem>
            <Label>BitDepth</Label>
            <PropertyName>BitDepth</PropertyName>
          </ListItem>

          <ListItem>
            <Label>SizeMiB</Label>
            <ScriptBlock>
  if ($null -ne $_.SizeMiB) {
    '{0:F2}' -f $_.SizeMiB
  }
</ScriptBlock>
          </ListItem>
        </ListItems>
      </ListEntry>


      <!-- Unknown / default fallback -->
      <ListEntry>
        <ListItems>
          <ListItem>
            <Label>Name</Label>
            <PropertyName>Name</PropertyName>
          </ListItem>

          <ListItem>
            <Label>Format</Label>
            <PropertyName>ContainerFormat</PropertyName>
          </ListItem>

          <ListItem>
            <Label>SizeMiB</Label>
            <ScriptBlock>
  if ($null -ne $_.SizeMiB) {
    '{0:F2}' -f $_.SizeMiB
  }
</ScriptBlock>
          </ListItem>
        </ListItems>
      </ListEntry>

    </ListEntries>
  </ListControl>
</View>

<View>
  <Name>GetMediaInfo.MediaInfoResult.Extended.List</Name>

  <ViewSelectedBy>
    <SelectionSetName>GetMediaInfo.MediaInfoResult.Extended.Types</SelectionSetName>
  </ViewSelectedBy>

  <ListControl>
    <ListEntries>

      <!-- Video -->
      <ListEntry>
        <EntrySelectedBy>
          <TypeName>GetMediaInfo.VideoMediaInfoResult.Extended</TypeName>
        </EntrySelectedBy>

        <ListItems>

          <ListItem>
            <Label>PSPath</Label>
            <PropertyName>PSPath</PropertyName>
          </ListItem>

          <ListItem>
            <Label>LastWriteTime</Label>
            <PropertyName>LastWriteTime</PropertyName>
          </ListItem>

          <ListItem>
            <Label>Name</Label>
            <PropertyName>Name</PropertyName>
          </ListItem>

          <ListItem>
            <Label>BaseName</Label>
            <PropertyName>BaseName</PropertyName>
          </ListItem>

          <ListItem>
            <Label>DirectoryName</Label>
            <PropertyName>DirectoryName</PropertyName>
          </ListItem>

          <ListItem>
            <Label>Extension</Label>
            <PropertyName>Extension</PropertyName>
          </ListItem>

          <ListItem>
            <Label>Resolution</Label>
            <PropertyName>Resolution</PropertyName>
          </ListItem>

          <ListItem>
            <Label>Length</Label>
            <PropertyName>Length</PropertyName>
          </ListItem>

          <ListItem>
            <Label>SizeMiB</Label>
            <ScriptBlock>
  if ($null -ne $_.SizeMiB) {
    '{0:F2}' -f $_.SizeMiB
  }
</ScriptBlock>
          </ListItem>

          <ListItem>
            <Label>Duration</Label>
            <ScriptBlock>
              if ($null -ne $_.Duration) {
                $_.Duration.ToString('hh\:mm\:ss\.ff')
              }
            </ScriptBlock>
          </ListItem>

          <ListItem>
            <Label>ContainerFormat</Label>
            <PropertyName>ContainerFormat</PropertyName>
          </ListItem>

          <ListItem>
            <Label>MediaType</Label>
            <PropertyName>MediaType</PropertyName>
          </ListItem>

          <ListItem>
            <Label>VideoStreamCount</Label>
            <PropertyName>VideoStreamCount</PropertyName>
          </ListItem>

          <ListItem>
            <Label>VideoCodec</Label>
            <PropertyName>VideoCodec</PropertyName>
          </ListItem>

          <ListItem>
            <Label>VideoWidth</Label>
            <PropertyName>VideoWidth</PropertyName>
          </ListItem>

          <ListItem>
            <Label>VideoHeight</Label>
            <PropertyName>VideoHeight</PropertyName>
          </ListItem>

          <ListItem>
            <Label>FrameRateMode</Label>
            <PropertyName>FrameRateMode</PropertyName>
          </ListItem>

          <ListItem>
            <Label>FrameRate</Label>
            <PropertyName>FrameRate</PropertyName>
          </ListItem>

          <ListItem>
            <Label>VideoBitRate</Label>
            <PropertyName>VideoBitRate</PropertyName>
          </ListItem>

          <ListItem>
            <Label>DisplayAspectRatio</Label>
            <PropertyName>DisplayAspectRatio</PropertyName>
          </ListItem>

          <ListItem>
            <Label>FormatProfile</Label>
            <PropertyName>FormatProfile</PropertyName>
          </ListItem>

          <ListItem>
            <Label>ScanType</Label>
            <PropertyName>ScanType</PropertyName>
          </ListItem>

          <ListItem>
            <Label>ColorSpace</Label>
            <PropertyName>ColorSpace</PropertyName>
          </ListItem>

          <ListItem>
            <Label>ColorRange</Label>
            <PropertyName>ColorRange</PropertyName>
          </ListItem>

          <ListItem>
            <Label>ColorPrimaries</Label>
            <PropertyName>ColorPrimaries</PropertyName>
          </ListItem>

          <ListItem>
            <Label>TransferCharacteristics</Label>
            <PropertyName>TransferCharacteristics</PropertyName>
          </ListItem>

          <ListItem>
            <Label>MatrixCoefficients</Label>
            <PropertyName>MatrixCoefficients</PropertyName>
          </ListItem>

          <ListItem>
            <Label>AudioStreamCount</Label>
            <PropertyName>AudioStreamCount</PropertyName>
          </ListItem>

          <ListItem>
            <Label>AudioCodec</Label>
            <PropertyName>AudioCodec</PropertyName>
          </ListItem>

          <ListItem>
            <Label>AudioBitRate</Label>
            <PropertyName>AudioBitRate</PropertyName>
          </ListItem>

          <ListItem>
            <Label>AudioBitRateMode</Label>
            <PropertyName>AudioBitRateMode</PropertyName>
          </ListItem>

          <ListItem>
            <Label>TextStreamCount</Label>
            <PropertyName>TextStreamCount</PropertyName>
          </ListItem>

          <ListItem>
            <Label>TextFormats</Label>
            <PropertyName>TextFormats</PropertyName>
          </ListItem>

        </ListItems>
      </ListEntry>


      <!-- Audio -->
      <ListEntry>
        <EntrySelectedBy>
          <TypeName>GetMediaInfo.AudioMediaInfoResult.Extended</TypeName>
        </EntrySelectedBy>

        <ListItems>

          <ListItem>
            <Label>PSPath</Label>
            <PropertyName>PSPath</PropertyName>
          </ListItem>

          <ListItem>
            <Label>LastWriteTime</Label>
            <PropertyName>LastWriteTime</PropertyName>
          </ListItem>

          <ListItem>
            <Label>Name</Label>
            <PropertyName>Name</PropertyName>
          </ListItem>

          <ListItem>
            <Label>BaseName</Label>
            <PropertyName>BaseName</PropertyName>
          </ListItem>

          <ListItem>
            <Label>DirectoryName</Label>
            <PropertyName>DirectoryName</PropertyName>
          </ListItem>

          <ListItem>
            <Label>Extension</Label>
            <PropertyName>Extension</PropertyName>
          </ListItem>

          <ListItem>
            <Label>Length</Label>
            <PropertyName>Length</PropertyName>
          </ListItem>

          <ListItem>
            <Label>SizeMiB</Label>
            <ScriptBlock>
              if ($null -ne $_.SizeMiB) {
                '{0:F2}' -f $_.SizeMiB
              }
            </ScriptBlock>
          </ListItem>

          <ListItem>
            <Label>Duration</Label>
            <ScriptBlock>
              if ($null -ne $_.Duration) {
                $_.Duration.ToString('hh\:mm\:ss\.ff')
              }
            </ScriptBlock>
          </ListItem>

          <ListItem>
            <Label>ContainerFormat</Label>
            <PropertyName>ContainerFormat</PropertyName>
          </ListItem>

          <ListItem>
            <Label>MediaType</Label>
            <PropertyName>MediaType</PropertyName>
          </ListItem>

          <ListItem>
            <Label>AudioStreamCount</Label>
            <PropertyName>AudioStreamCount</PropertyName>
          </ListItem>

          <ListItem>
            <Label>AudioCodec</Label>
            <PropertyName>AudioCodec</PropertyName>
          </ListItem>

          <ListItem>
            <Label>AudioBitRate</Label>
            <PropertyName>AudioBitRate</PropertyName>
          </ListItem>

          <ListItem>
            <Label>AudioBitRateMode</Label>
            <PropertyName>AudioBitRateMode</PropertyName>
          </ListItem>

          <ListItem>
            <Label>Channels</Label>
            <PropertyName>Channels</PropertyName>
          </ListItem>

          <ListItem>
            <Label>SamplingRate</Label>
            <PropertyName>SamplingRate</PropertyName>
          </ListItem>

          <ListItem>
            <Label>ArtworkCount</Label>
            <PropertyName>ArtworkCount</PropertyName>
          </ListItem>

          <ListItem>
            <Label>Title</Label>
            <PropertyName>Title</PropertyName>
          </ListItem>

          <ListItem>
            <Label>Album</Label>
            <PropertyName>Album</PropertyName>
          </ListItem>

          <ListItem>
            <Label>Artist</Label>
            <PropertyName>Artist</PropertyName>
          </ListItem>

          <ListItem>
            <Label>TrackNumber</Label>
            <PropertyName>TrackNumber</PropertyName>
          </ListItem>

          <ListItem>
            <Label>TrackCount</Label>
            <PropertyName>TrackCount</PropertyName>
          </ListItem>

          <ListItem>
            <Label>Genre</Label>
            <PropertyName>Genre</PropertyName>
          </ListItem>

          <ListItem>
            <Label>RecordedDate</Label>
            <PropertyName>RecordedDate</PropertyName>
          </ListItem>

        </ListItems>
      </ListEntry>


      <!-- Image -->
      <ListEntry>
        <EntrySelectedBy>
          <TypeName>GetMediaInfo.ImageMediaInfoResult.Extended</TypeName>
        </EntrySelectedBy>

        <ListItems>

          <ListItem>
            <Label>PSPath</Label>
            <PropertyName>PSPath</PropertyName>
          </ListItem>

          <ListItem>
            <Label>LastWriteTime</Label>
            <PropertyName>LastWriteTime</PropertyName>
          </ListItem>

          <ListItem>
            <Label>Name</Label>
            <PropertyName>Name</PropertyName>
          </ListItem>

          <ListItem>
            <Label>BaseName</Label>
            <PropertyName>BaseName</PropertyName>
          </ListItem>

          <ListItem>
            <Label>DirectoryName</Label>
            <PropertyName>DirectoryName</PropertyName>
          </ListItem>

          <ListItem>
            <Label>Extension</Label>
            <PropertyName>Extension</PropertyName>
          </ListItem>

          <ListItem>
            <Label>Length</Label>
            <PropertyName>Length</PropertyName>
          </ListItem>

          <ListItem>
            <Label>SizeMiB</Label>
            <ScriptBlock>
              if ($null -ne $_.SizeMiB) {
                '{0:F2}' -f $_.SizeMiB
              }
            </ScriptBlock>
          </ListItem>

          <ListItem>
            <Label>Duration</Label>
            <ScriptBlock>
              if ($null -ne $_.Duration) {
                $_.Duration.ToString('hh\:mm\:ss\.ff')
              }
            </ScriptBlock>
          </ListItem>

          <ListItem>
            <Label>ContainerFormat</Label>
            <PropertyName>ContainerFormat</PropertyName>
          </ListItem>

          <ListItem>
            <Label>MediaType</Label>
            <PropertyName>MediaType</PropertyName>
          </ListItem>

          <ListItem>
            <Label>ImageStreamCount</Label>
            <PropertyName>ImageStreamCount</PropertyName>
          </ListItem>

          <ListItem>
            <Label>ImageFormat</Label>
            <PropertyName>ImageFormat</PropertyName>
          </ListItem>

          <ListItem>
            <Label>Width</Label>
            <PropertyName>Width</PropertyName>
          </ListItem>

          <ListItem>
            <Label>Height</Label>
            <PropertyName>Height</PropertyName>
          </ListItem>

          <ListItem>
            <Label>Resolution</Label>
            <PropertyName>Resolution</PropertyName>
          </ListItem>

          <ListItem>
            <Label>BitDepth</Label>
            <PropertyName>BitDepth</PropertyName>
          </ListItem>

          <ListItem>
            <Label>ColorSpace</Label>
            <PropertyName>ColorSpace</PropertyName>
          </ListItem>

          <ListItem>
            <Label>Title</Label>
            <PropertyName>Title</PropertyName>
          </ListItem>

        </ListItems>
      </ListEntry>


      <!-- Unknown / default fallback -->
      <ListEntry>
        <ListItems>

          <ListItem>
            <Label>PSPath</Label>
            <PropertyName>PSPath</PropertyName>
          </ListItem>

          <ListItem>
            <Label>LastWriteTime</Label>
            <PropertyName>LastWriteTime</PropertyName>
          </ListItem>

          <ListItem>
            <Label>Name</Label>
            <PropertyName>Name</PropertyName>
          </ListItem>

          <ListItem>
            <Label>BaseName</Label>
            <PropertyName>BaseName</PropertyName>
          </ListItem>

          <ListItem>
            <Label>DirectoryName</Label>
            <PropertyName>DirectoryName</PropertyName>
          </ListItem>

          <ListItem>
            <Label>Extension</Label>
            <PropertyName>Extension</PropertyName>
          </ListItem>

          <ListItem>
            <Label>Length</Label>
            <PropertyName>Length</PropertyName>
          </ListItem>

          <ListItem>
            <Label>SizeMiB</Label>
            <ScriptBlock>
              if ($null -ne $_.SizeMiB) {
                '{0:F2}' -f $_.SizeMiB
              }
            </ScriptBlock>
          </ListItem>

          <ListItem>
            <Label>Duration</Label>
            <ScriptBlock>
              if ($null -ne $_.Duration) {
                $_.Duration.ToString('hh\:mm\:ss\.ff')
              }
            </ScriptBlock>
          </ListItem>

          <ListItem>
            <Label>ContainerFormat</Label>
            <PropertyName>ContainerFormat</PropertyName>
          </ListItem>

          <ListItem>
            <Label>MediaType</Label>
            <PropertyName>MediaType</PropertyName>
          </ListItem>

        </ListItems>
      </ListEntry>

    </ListEntries>
  </ListControl>
</View>

<View>
  <Name>GetMediaInfo.MediaInfoResult.Table</Name>

  <ViewSelectedBy>
    <SelectionSetName>GetMediaInfo.MediaInfoResultTypes</SelectionSetName>
  </ViewSelectedBy>

  <TableControl>

    <TableHeaders>
      <TableColumnHeader><Label>Name</Label></TableColumnHeader>
      <TableColumnHeader><Label>Type</Label><Width>8</Width></TableColumnHeader>
      <TableColumnHeader><Label>Format</Label><Width>12</Width></TableColumnHeader>
      <TableColumnHeader><Label>Resolution</Label><Width>12</Width></TableColumnHeader>
      <TableColumnHeader><Label>BitRate</Label><Width>15</Width></TableColumnHeader>
      <TableColumnHeader><Label>Details</Label></TableColumnHeader>
      <TableColumnHeader><Label>Duration</Label><Width>12</Width></TableColumnHeader>
      <TableColumnHeader><Label>Codec</Label><Width>12</Width></TableColumnHeader>
      <TableColumnHeader><Label>SizeMiB</Label><Width>8</Width></TableColumnHeader>
    </TableHeaders>

    <TableRowEntries>

  <TableRowEntry>
    <TableColumnItems>

      <!-- Name -->
      <TableColumnItem>
        <PropertyName>Name</PropertyName>
      </TableColumnItem>


      <!-- Type -->
      <TableColumnItem>
        <PropertyName>MediaType</PropertyName>
      </TableColumnItem>


      <!-- Format -->
      <TableColumnItem>
        <ScriptBlock>
          if ($_.MediaType -eq 'Image') {
            $_.ImageFormat
          }
          else {
            $_.ContainerFormat
          }
        </ScriptBlock>
      </TableColumnItem>

      <!-- Resolution -->
      <TableColumnItem>
  <ScriptBlock>
    if ($_ -is [GetMediaInfo.AudioMediaInfoResult]) {
      if ($null -ne $_.SamplingRate) {
        '{0:0.###} kHz' -f ($_.SamplingRate / 1000.0)
      }
    }
    elseif ($_.Resolution) {
      $_.Resolution
    }
  </ScriptBlock>
</TableColumnItem>


<!-- BitRate -->
<TableColumnItem>
  <ScriptBlock>
    if ($_ -is [GetMediaInfo.VideoMediaInfoResult]) {
      if ($null -ne $_.VideoBitRate) {
        '{0:0.##} Mbps' -f ($_.VideoBitRate / 1000000.0)
      }
    }
    elseif ($_ -is [GetMediaInfo.AudioMediaInfoResult]) {
      if ($null -ne $_.AudioBitRate) {
        '{0:0.##} kbps' -f ($_.AudioBitRate / 1000.0)
      }
    }
    elseif ($_ -is [GetMediaInfo.ImageMediaInfoResult]) {
      if ($null -ne $_.BitDepth) {
        '{0}-bit' -f $_.BitDepth
      }
    }
  </ScriptBlock>
</TableColumnItem>


      <!-- Details -->
      <TableColumnItem>
         <ScriptBlock>
    $parts = @()

    if ($_.VideoCodec) {
      

      if ($null -ne $_.FrameRate) {
        $parts += ('{0:0.###} fps' -f $_.FrameRate)
      }

    
    }
    elseif ($_.AudioCodec) {

      if($_.AudioBitRateMode) {
        $parts += $_.AudioBitRateMode
      }
      if ($_.Artist) {
        $parts += $_.Artist
      }
    


      if ($_.Album) {
        $parts += $_.Album
      }

      if ($null -ne $_.TrackNumber) {
        $parts += ('Track {0}' -f $_.TrackNumber)
      }
    }



    $parts -join ', '
  </ScriptBlock>
      </TableColumnItem>


      <!-- Duration -->
      <TableColumnItem>
        <ScriptBlock>
          if ($null -ne $_.Duration) {
            $_.Duration.ToString('hh\:mm\:ss\.ff')
          }
        </ScriptBlock>
      </TableColumnItem>


      <!-- Codec -->
      <TableColumnItem>
         <ScriptBlock>
     if ($_.VideoCodec) {
      $_.VideoCodec
    }
    elseif ($_.AudioCodec) {
      $_.AudioCodec
    }
  </ScriptBlock>
      </TableColumnItem>


      <!-- SizeMiB -->
      <TableColumnItem>
        <ScriptBlock>
          if ($null -ne $_.SizeMiB) {
            '{0:F2}' -f $_.SizeMiB
          }
        </ScriptBlock>
      </TableColumnItem>

    </TableColumnItems>
  </TableRowEntry>

</TableRowEntries>
  </TableControl>
</View>




    <View>
      <Name>GetMediaInfo.VideoMediaInfoResult.Table</Name>
      
      <ViewSelectedBy>
        <TypeName>GetMediaInfo.VideoMediaInfoResult</TypeName>
      </ViewSelectedBy>
      <TableControl>
        <TableHeaders>
          <TableColumnHeader><Label>Name</Label></TableColumnHeader>
          <TableColumnHeader><Label>Frame rate</Label><Width>8</Width></TableColumnHeader>
          <TableColumnHeader><Label>Resolution</Label><Width>8</Width></TableColumnHeader>
          <TableColumnHeader><Label>Duration</Label><Width>10</Width></TableColumnHeader>
          <TableColumnHeader><Label>VideoCodec</Label><Width>8</Width></TableColumnHeader>
          <TableColumnHeader><Label>Audio</Label><Width>8</Width></TableColumnHeader>
        </TableHeaders>
        <TableRowEntries>
          <TableRowEntry>
            <TableColumnItems>
              <TableColumnItem><PropertyName>Name</PropertyName></TableColumnItem>
              <TableColumnItem>
                <ScriptBlock>
                  if ($null -ne $_.FrameRate) {
                    '{0:0.###} fps' -f $_.FrameRate
                  }
                </ScriptBlock>
              </TableColumnItem>
              <TableColumnItem><PropertyName>Resolution</PropertyName></TableColumnItem>
              <TableColumnItem>
                <ScriptBlock>
                  if ($null -ne $_.Duration) {
                    $_.Duration.ToString('hh\:mm\:ss\.ff')
                  }
                </ScriptBlock>
              </TableColumnItem>
              <TableColumnItem><PropertyName>VideoCodec</PropertyName></TableColumnItem>
              <TableColumnItem><PropertyName>AudioCodec</PropertyName></TableColumnItem>
            </TableColumnItems>
          </TableRowEntry>
        </TableRowEntries>
      </TableControl>
    </View>

    <View>
      <Name>GetMediaInfo.AudioMediaInfoResult.Table</Name>
      <ViewSelectedBy>
        <TypeName>GetMediaInfo.AudioMediaInfoResult</TypeName>
      </ViewSelectedBy>
      <TableControl>
        <TableHeaders>
          <TableColumnHeader><Label>Name</Label></TableColumnHeader>
          <TableColumnHeader><Label>Format</Label></TableColumnHeader>
          <TableColumnHeader><Label>Duration</Label></TableColumnHeader>
          <TableColumnHeader><Label>AudioBitRate</Label></TableColumnHeader>
          <TableColumnHeader><Label>SamplingRate</Label></TableColumnHeader>
          <TableColumnHeader><Label>Artist</Label></TableColumnHeader>
          <TableColumnHeader><Label>Album</Label></TableColumnHeader>
          <TableColumnHeader><Label>Track</Label></TableColumnHeader>

        </TableHeaders>
        <TableRowEntries>
          <TableRowEntry>
            <TableColumnItems>
              <TableColumnItem><PropertyName>Name</PropertyName></TableColumnItem>
              <TableColumnItem><PropertyName>ContainerFormat</PropertyName></TableColumnItem>
              <TableColumnItem>
                <ScriptBlock>
                  if ($null -ne $_.Duration) {
                    $_.Duration.ToString('hh\:mm\:ss\.ff')
                  }
                </ScriptBlock>
              </TableColumnItem>
              <TableColumnItem><PropertyName>AudioBitRate</PropertyName></TableColumnItem>
              <TableColumnItem><PropertyName>SamplingRate</PropertyName></TableColumnItem>
              <TableColumnItem><PropertyName>Artist</PropertyName></TableColumnItem>
              <TableColumnItem><PropertyName>Album</PropertyName></TableColumnItem>
              <TableColumnItem>
                <ScriptBlock>
                  if ($null -ne $_.TrackNumber) {
                    if ($null -ne $_.TrackCount) {
                      '{0}/{1}' -f $_.TrackNumber, $_.TrackCount
                    } else {
                      $_.TrackNumber
                    }
                  }
                </ScriptBlock>
              </TableColumnItem>
            </TableColumnItems>
          </TableRowEntry>
        </TableRowEntries>
      </TableControl>
    </View>

    <View>
      <Name>GetMediaInfo.ImageMediaInfoResult.Table</Name>
      
      <ViewSelectedBy>
        <TypeName>GetMediaInfo.ImageMediaInfoResult</TypeName>
      </ViewSelectedBy>
      <TableControl>
        <TableHeaders>
          <TableColumnHeader><Label>Name</Label></TableColumnHeader>
          <TableColumnHeader><Label>Format</Label></TableColumnHeader>
          <TableColumnHeader><Label>Resolution</Label></TableColumnHeader>
          <TableColumnHeader><Label>BitDepth</Label></TableColumnHeader>
          <TableColumnHeader><Label>SizeMiB</Label></TableColumnHeader>
        </TableHeaders>
        <TableRowEntries>
          <TableRowEntry>
            <TableColumnItems>
              <TableColumnItem><PropertyName>Name</PropertyName></TableColumnItem>
              <TableColumnItem><PropertyName>ImageFormat</PropertyName></TableColumnItem>
              <TableColumnItem><PropertyName>Resolution</PropertyName></TableColumnItem>
              <TableColumnItem><PropertyName>BitDepth</PropertyName></TableColumnItem>
              <TableColumnItem><PropertyName>SizeMiB</PropertyName></TableColumnItem>
            </TableColumnItems>
          </TableRowEntry>
        </TableRowEntries>
      </TableControl>
    </View>

    <View>
      <Name>GetMediaInfo.UnknownMediaInfoResult.Table</Name>
      
      <ViewSelectedBy>
        <TypeName>GetMediaInfo.UnknownMediaInfoResult</TypeName>
      </ViewSelectedBy>
      <TableControl>
        <TableHeaders>
          <TableColumnHeader><Label>Name</Label></TableColumnHeader>
          <TableColumnHeader><Label>Format</Label></TableColumnHeader>
          <TableColumnHeader><Label>SizeMiB</Label></TableColumnHeader>
        </TableHeaders>
        <TableRowEntries>
          <TableRowEntry>
            <TableColumnItems>
              <TableColumnItem><PropertyName>Name</PropertyName></TableColumnItem>
              <TableColumnItem><PropertyName>ContainerFormat</PropertyName></TableColumnItem>
              <TableColumnItem><PropertyName>SizeMiB</PropertyName></TableColumnItem>
            </TableColumnItems>
          </TableRowEntry>
        </TableRowEntries>
      </TableControl>
    </View>

    <View>
  <Name>GetMediaInfo.MediaInfoResult.Extended.Table</Name>

  <ViewSelectedBy>
    <SelectionSetName>GetMediaInfo.MediaInfoResult.Extended.Types</SelectionSetName>
  </ViewSelectedBy>

  <TableControl>

    <TableHeaders>

      <!-- Common -->
      <TableColumnHeader><Label>PSPath</Label></TableColumnHeader>
      <TableColumnHeader><Label>LastWriteTime</Label></TableColumnHeader>
      <TableColumnHeader><Label>Extension</Label></TableColumnHeader>
      <TableColumnHeader><Label>Length</Label></TableColumnHeader>
      <TableColumnHeader><Label>SizeMiB</Label></TableColumnHeader>
      <TableColumnHeader><Label>Duration</Label></TableColumnHeader>
      <TableColumnHeader><Label>ContainerFormat</Label></TableColumnHeader>
      <TableColumnHeader><Label>MediaType</Label></TableColumnHeader>
      <TableColumnHeader><Label>Name</Label></TableColumnHeader>
      <TableColumnHeader><Label>BaseName</Label></TableColumnHeader>
      <TableColumnHeader><Label>DirectoryName</Label></TableColumnHeader>
      

      <!-- Shared Video / Image -->
      <TableColumnHeader><Label>Resolution</Label></TableColumnHeader>

      <!-- Video -->
      <TableColumnHeader><Label>VideoStreamCount</Label></TableColumnHeader>
      <TableColumnHeader><Label>VideoCodec</Label></TableColumnHeader>
      <TableColumnHeader><Label>VideoWidth</Label></TableColumnHeader>
      <TableColumnHeader><Label>VideoHeight</Label></TableColumnHeader>
      <TableColumnHeader><Label>FrameRateMode</Label></TableColumnHeader>
      <TableColumnHeader><Label>FrameRate</Label></TableColumnHeader>
      <TableColumnHeader><Label>VideoBitRate</Label></TableColumnHeader>
      <TableColumnHeader><Label>DisplayAspectRatio</Label></TableColumnHeader>
      <TableColumnHeader><Label>FormatProfile</Label></TableColumnHeader>
      <TableColumnHeader><Label>ScanType</Label></TableColumnHeader>
      <TableColumnHeader><Label>ColorSpace</Label></TableColumnHeader>
      <TableColumnHeader><Label>ColorRange</Label></TableColumnHeader>
      <TableColumnHeader><Label>ColorPrimaries</Label></TableColumnHeader>
      <TableColumnHeader><Label>TransferCharacteristics</Label></TableColumnHeader>
      <TableColumnHeader><Label>MatrixCoefficients</Label></TableColumnHeader>

      <!-- Audio, including audio streams attached to video -->
      <TableColumnHeader><Label>AudioStreamCount</Label></TableColumnHeader>
      <TableColumnHeader><Label>AudioCodec</Label></TableColumnHeader>
      <TableColumnHeader><Label>AudioBitRate</Label></TableColumnHeader>
      <TableColumnHeader><Label>AudioBitRateMode</Label></TableColumnHeader>
      <TableColumnHeader><Label>Channels</Label></TableColumnHeader>
      <TableColumnHeader><Label>SamplingRate</Label></TableColumnHeader>
      <TableColumnHeader><Label>ArtworkCount</Label></TableColumnHeader>

      <!-- Metadata -->
      <TableColumnHeader><Label>Title</Label></TableColumnHeader>
      <TableColumnHeader><Label>Album</Label></TableColumnHeader>
      <TableColumnHeader><Label>Artist</Label></TableColumnHeader>
      <TableColumnHeader><Label>TrackNumber</Label></TableColumnHeader>
      <TableColumnHeader><Label>TrackCount</Label></TableColumnHeader>
      <TableColumnHeader><Label>Genre</Label></TableColumnHeader>
      <TableColumnHeader><Label>RecordedDate</Label></TableColumnHeader>

      <!-- Image -->
      <TableColumnHeader><Label>ImageStreamCount</Label></TableColumnHeader>
      <TableColumnHeader><Label>ImageFormat</Label></TableColumnHeader>
      <TableColumnHeader><Label>Width</Label></TableColumnHeader>
      <TableColumnHeader><Label>Height</Label></TableColumnHeader>
      <TableColumnHeader><Label>BitDepth</Label></TableColumnHeader>

      <!-- Text -->
      <TableColumnHeader><Label>TextStreamCount</Label></TableColumnHeader>
      <TableColumnHeader><Label>TextFormats</Label></TableColumnHeader>

    </TableHeaders>


    <TableRowEntries>

      <!--
        One row schema for every Extended MediaInfoResult type.
        No EntrySelectedBy.
      -->
      <TableRowEntry>

        <TableColumnItems>

          <!-- Common -->
          <TableColumnItem>
            <PropertyName>PSPath</PropertyName>
          </TableColumnItem>

          <TableColumnItem>
            <PropertyName>LastWriteTime</PropertyName>
          </TableColumnItem>

         

          <TableColumnItem>
            <PropertyName>Extension</PropertyName>
          </TableColumnItem>

          <TableColumnItem>
            <PropertyName>Length</PropertyName>
          </TableColumnItem>

          <TableColumnItem>
            <ScriptBlock>
              if ($null -ne $_.SizeMiB) {
                '{0:F2}' -f $_.SizeMiB
              }
            </ScriptBlock>
          </TableColumnItem>

          <TableColumnItem>
            <ScriptBlock>
              if ($null -ne $_.Duration) {
                $_.Duration.ToString('hh\:mm\:ss\.ff')
              }
            </ScriptBlock>
          </TableColumnItem>

          <TableColumnItem>
            <PropertyName>ContainerFormat</PropertyName>
          </TableColumnItem>

          <TableColumnItem>
            <PropertyName>MediaType</PropertyName>
          </TableColumnItem>
           <TableColumnItem>
            <PropertyName>Name</PropertyName>
          </TableColumnItem>

          <TableColumnItem>
            <PropertyName>BaseName</PropertyName>
          </TableColumnItem>

          <TableColumnItem>
            <PropertyName>DirectoryName</PropertyName>
          </TableColumnItem>


          <!-- Video / Image -->
          <TableColumnItem>
            <PropertyName>Resolution</PropertyName>
          </TableColumnItem>


          <!-- Video -->
          <TableColumnItem>
            <PropertyName>VideoStreamCount</PropertyName>
          </TableColumnItem>

          <TableColumnItem>
            <PropertyName>VideoCodec</PropertyName>
          </TableColumnItem>

          <TableColumnItem>
            <PropertyName>VideoWidth</PropertyName>
          </TableColumnItem>

          <TableColumnItem>
            <PropertyName>VideoHeight</PropertyName>
          </TableColumnItem>

          <TableColumnItem>
            <PropertyName>FrameRateMode</PropertyName>
          </TableColumnItem>

          <TableColumnItem>
            <PropertyName>FrameRate</PropertyName>
          </TableColumnItem>

          <TableColumnItem>
            <PropertyName>VideoBitRate</PropertyName>
          </TableColumnItem>

          <TableColumnItem>
            <PropertyName>DisplayAspectRatio</PropertyName>
          </TableColumnItem>

          <TableColumnItem>
            <PropertyName>FormatProfile</PropertyName>
          </TableColumnItem>

          <TableColumnItem>
            <PropertyName>ScanType</PropertyName>
          </TableColumnItem>

          <TableColumnItem>
            <PropertyName>ColorSpace</PropertyName>
          </TableColumnItem>

          <TableColumnItem>
            <PropertyName>ColorRange</PropertyName>
          </TableColumnItem>

          <TableColumnItem>
            <PropertyName>ColorPrimaries</PropertyName>
          </TableColumnItem>

          <TableColumnItem>
            <PropertyName>TransferCharacteristics</PropertyName>
          </TableColumnItem>

          <TableColumnItem>
            <PropertyName>MatrixCoefficients</PropertyName>
          </TableColumnItem>


          <!-- Audio -->
          <TableColumnItem>
            <PropertyName>AudioStreamCount</PropertyName>
          </TableColumnItem>

          <TableColumnItem>
            <PropertyName>AudioCodec</PropertyName>
          </TableColumnItem>

          <TableColumnItem>
            <PropertyName>AudioBitRate</PropertyName>
          </TableColumnItem>

          <TableColumnItem>
            <PropertyName>AudioBitRateMode</PropertyName>
          </TableColumnItem>

          <TableColumnItem>
            <PropertyName>Channels</PropertyName>
          </TableColumnItem>

          <TableColumnItem>
            <PropertyName>SamplingRate</PropertyName>
          </TableColumnItem>

          <TableColumnItem>
            <PropertyName>ArtworkCount</PropertyName>
          </TableColumnItem>


          <!-- Metadata -->
          <TableColumnItem>
            <PropertyName>Title</PropertyName>
          </TableColumnItem>

          <TableColumnItem>
            <PropertyName>Album</PropertyName>
          </TableColumnItem>

          <TableColumnItem>
            <PropertyName>Artist</PropertyName>
          </TableColumnItem>

          <TableColumnItem>
            <PropertyName>TrackNumber</PropertyName>
          </TableColumnItem>

          <TableColumnItem>
            <PropertyName>TrackCount</PropertyName>
          </TableColumnItem>

          <TableColumnItem>
            <PropertyName>Genre</PropertyName>
          </TableColumnItem>

          <TableColumnItem>
            <PropertyName>RecordedDate</PropertyName>
          </TableColumnItem>


          <!-- Image -->
          <TableColumnItem>
            <PropertyName>ImageStreamCount</PropertyName>
          </TableColumnItem>

          <TableColumnItem>
            <PropertyName>ImageFormat</PropertyName>
          </TableColumnItem>

          <TableColumnItem>
            <PropertyName>Width</PropertyName>
          </TableColumnItem>

          <TableColumnItem>
            <PropertyName>Height</PropertyName>
          </TableColumnItem>

          <TableColumnItem>
            <PropertyName>BitDepth</PropertyName>
          </TableColumnItem>


          <!-- Text -->
          <TableColumnItem>
            <PropertyName>TextStreamCount</PropertyName>
          </TableColumnItem>

          <TableColumnItem>
            <PropertyName>TextFormats</PropertyName>
          </TableColumnItem>

        </TableColumnItems>

      </TableRowEntry>

    </TableRowEntries>

  </TableControl>
</View>


    




  </ViewDefinitions>
</Configuration>