Skip to content

Instantly share code, notes, and snippets.

@Koasing
Created August 24, 2016 01:37
Show Gist options
  • Save Koasing/673441cf4d5417336a1e92e0b808631f to your computer and use it in GitHub Desktop.
Save Koasing/673441cf4d5417336a1e92e0b808631f to your computer and use it in GitHub Desktop.
Image Watch natvis for HEVC HM Reference Software
<?xml version="1.0" encoding="utf-8"?>
<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
<UIVisualizer ServiceId="{A452AFEA-3DF6-46BB-9177-C0B08F318025}" Id="1" MenuName="Add to Image Watch"/>
<Type Name="TComPicYuv">
<UIVisualizer ServiceId="{A452AFEA-3DF6-46BB-9177-C0B08F318025}" Id="1" />
</Type>
<Type Name="TComPicYuv">
<DisplayString Condition="m_chromaFormatIDC == CHROMA_400">{{TComPicYuv YUV400 {m_iPicWidth} x {m_iPicHeight} x {m_chromaFormatIDC}}}</DisplayString>
<DisplayString Condition="m_chromaFormatIDC == CHROMA_420">{{TComPicYuv YUV420 {m_iPicWidth} x {m_iPicHeight} x {m_chromaFormatIDC}}}</DisplayString>
<DisplayString Condition="m_chromaFormatIDC == CHROMA_422">{{TComPicYuv YUV422 {m_iPicWidth} x {m_iPicHeight} x {m_chromaFormatIDC}}}</DisplayString>
<DisplayString Condition="m_chromaFormatIDC == CHROMA_444">{{TComPicYuv YUV444 {m_iPicWidth} x {m_iPicHeight} x {m_chromaFormatIDC}}}</DisplayString>
<Expand>
<Synthetic Name="[type]"><DisplayString>INT16</DisplayString></Synthetic>
<Synthetic Name="[channels]">
<DisplayString Condition="m_chromaFormatIDC == CHROMA_400">1</DisplayString>
<DisplayString Condition="m_chromaFormatIDC == CHROMA_420">YV12</DisplayString>
<DisplayString Condition="m_chromaFormatIDC == CHROMA_422">YV12</DisplayString>
<DisplayString Condition="m_chromaFormatIDC == CHROMA_444">YUV</DisplayString>
</Synthetic>
<Synthetic Name="[planes]">
<DisplayString Condition="m_chromaFormatIDC == CHROMA_400">1</DisplayString>
<DisplayString Condition="m_chromaFormatIDC == CHROMA_420">3</DisplayString>
<DisplayString Condition="m_chromaFormatIDC == CHROMA_422">3</DisplayString>
<DisplayString Condition="m_chromaFormatIDC == CHROMA_444">3</DisplayString>
</Synthetic>
<Item Name="[width]">m_iPicWidth</Item>
<Item Name="[height]">m_iPicHeight</Item>
<Synthetic Name="[data]">
<DisplayString Condition="m_chromaFormatIDC==CHROMA_400">{(void *)m_piPicOrg[0]}</DisplayString>
<DisplayString Condition="m_chromaFormatIDC==CHROMA_420">{(void *)m_piPicOrg[0]}; {(void *)m_piPicOrg[1]}; {(void *)m_piPicOrg[2]}</DisplayString>
<DisplayString Condition="m_chromaFormatIDC==CHROMA_422">{(void *)m_piPicOrg[0]}; {(void *)m_piPicOrg[1]}; {(void *)m_piPicOrg[2]}</DisplayString>
<DisplayString Condition="m_chromaFormatIDC==CHROMA_444">{(void *)m_piPicOrg[0]}; {(void *)m_piPicOrg[1]}; {(void *)m_piPicOrg[2]}</DisplayString>
</Synthetic>
<Synthetic Name="[stride]">
<DisplayString Condition="m_chromaFormatIDC==CHROMA_400">{(m_iPicWidth + (m_iMarginX * 2)) * sizeof(Pel)}</DisplayString>
<DisplayString Condition="m_chromaFormatIDC==CHROMA_420">{(m_iPicWidth + (m_iMarginX * 2)) * sizeof(Pel)}; {(m_iPicWidth + (m_iMarginX * 2)) / 2 * sizeof(Pel)}; {(m_iPicWidth + (m_iMarginX * 2)) / 2 * sizeof(Pel)}</DisplayString>
<DisplayString Condition="m_chromaFormatIDC==CHROMA_422">{(m_iPicWidth + (m_iMarginX * 2)) * sizeof(Pel)}; {(m_iPicWidth + (m_iMarginX * 2)) * sizeof(Pel)}; {(m_iPicWidth + (m_iMarginX * 2)) * sizeof(Pel)}</DisplayString>
<DisplayString Condition="m_chromaFormatIDC==CHROMA_444">{(m_iPicWidth + (m_iMarginX * 2)) * sizeof(Pel)}; {(m_iPicWidth + (m_iMarginX * 2)) * sizeof(Pel)}; {(m_iPicWidth + (m_iMarginX * 2)) * sizeof(Pel)}</DisplayString>
</Synthetic>
<Synthetic Name="[range]"><DisplayString>0; {(1 &lt;&lt; g_bitDepth[0]) - 1}</DisplayString></Synthetic>
</Expand>
</Type>
<Type Name="TComYuv">
<UIVisualizer ServiceId="{A452AFEA-3DF6-46BB-9177-C0B08F318025}" Id="1" />
</Type>
<Type Name="TComYuv">
<DisplayString Condition="m_chromaFormatIDC == CHROMA_400">{{TComYuv YUV400 {m_iWidth} x {m_iHeight} x {m_chromaFormatIDC}}}</DisplayString>
<DisplayString Condition="m_chromaFormatIDC == CHROMA_420">{{TComYuv YUV420 {m_iWidth} x {m_iHeight} x {m_chromaFormatIDC}}}</DisplayString>
<DisplayString Condition="m_chromaFormatIDC == CHROMA_422">{{TComYuv YUV422 {m_iWidth} x {m_iHeight} x {m_chromaFormatIDC}}}</DisplayString>
<DisplayString Condition="m_chromaFormatIDC == CHROMA_444">{{TComYuv YUV444 {m_iWidth} x {m_iHeight} x {m_chromaFormatIDC}}}</DisplayString>
<Expand>
<Synthetic Name="[type]"><DisplayString>INT16</DisplayString></Synthetic>
<Synthetic Name="[channels]">
<DisplayString Condition="m_chromaFormatIDC == CHROMA_400">1</DisplayString>
<DisplayString Condition="m_chromaFormatIDC == CHROMA_420">YV12</DisplayString>
<DisplayString Condition="m_chromaFormatIDC == CHROMA_422">YV12</DisplayString>
<DisplayString Condition="m_chromaFormatIDC == CHROMA_444">YUV</DisplayString>
</Synthetic>
<Synthetic Name="[planes]">
<DisplayString Condition="m_chromaFormatIDC == CHROMA_400">1</DisplayString>
<DisplayString Condition="m_chromaFormatIDC == CHROMA_420">3</DisplayString>
<DisplayString Condition="m_chromaFormatIDC == CHROMA_422">3</DisplayString>
<DisplayString Condition="m_chromaFormatIDC == CHROMA_444">3</DisplayString>
</Synthetic>
<Item Name="[width]">m_iWidth</Item>
<Item Name="[height]">m_iHeight</Item>
<Synthetic Name="[data]">
<DisplayString Condition="m_chromaFormatIDC == CHROMA_400">{(void *)m_apiBuf[0]}</DisplayString>
<DisplayString Condition="m_chromaFormatIDC == CHROMA_420">{(void *)m_apiBuf[0]}; {(void *)m_apiBuf[1]}; {(void *)m_apiBuf[2]}</DisplayString>
<DisplayString Condition="m_chromaFormatIDC == CHROMA_422">{(void *)m_apiBuf[0]}; {(void *)m_apiBuf[1]}; {(void *)m_apiBuf[2]}</DisplayString>
<DisplayString Condition="m_chromaFormatIDC == CHROMA_444">{(void *)m_apiBuf[0]}; {(void *)m_apiBuf[1]}; {(void *)m_apiBuf[2]}</DisplayString>
</Synthetic>
<Synthetic Name="[stride]">
<DisplayString Condition="m_chromaFormatIDC == CHROMA_400">{m_iWidth * sizeof(Pel)}</DisplayString>
<DisplayString Condition="m_chromaFormatIDC == CHROMA_420">{m_iWidth * sizeof(Pel)}; {m_iWidth / 2 * sizeof(Pel)}; {m_iWidth / 2 * sizeof(Pel)}</DisplayString>
<DisplayString Condition="m_chromaFormatIDC == CHROMA_422">{m_iWidth * sizeof(Pel)}; {m_iWidth * sizeof(Pel)}; {m_iWidth * sizeof(Pel)}</DisplayString>
<DisplayString Condition="m_chromaFormatIDC == CHROMA_444">{m_iWidth * sizeof(Pel)}; {m_iWidth * sizeof(Pel)}; {m_iWidth * sizeof(Pel)}</DisplayString>
</Synthetic>
<Synthetic Name="[range]"><DisplayString>0; {(1 &lt;&lt; g_bitDepth[0]) - 1}</DisplayString></Synthetic>
</Expand>
</Type>
</AutoVisualizer>
@Koasing
Copy link
Author

Koasing commented Aug 24, 2016

Image Watch natvis for HEVC HM Reference Software

How to Install

  1. Install Image Watch extension
  2. Download natvis file
  3. Place it to your %USERPROFILE%\My Documents\Visual Studio 201x\Visualizers folder.
  4. Restart Visual Studio.

Note

If image color is strange, replace all "YV12" to "IYUV" in natvis file. These are same but U-V channels are switched.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment