{
  "id": "type-n32",
  "revision": "3ae088e87c3a0683c751f01f45ddbc8a4b6c24db1d80f0d59459cdaa67b2bc56",
  "regions": [
    {
      "id": "common-logic",
      "label": "Common logic",
      "parent": null
    },
    {
      "id": "mobile",
      "label": "Mobile",
      "parent": null
    }
  ],
  "nodes": [
    {
      "id": "requirement",
      "label": "Video encoding requirement",
      "kind": "N32",
      "region": "common-logic",
      "ports": [
        {
          "id": "codec",
          "profile": "P19",
          "contract": "VideoCodecCapabilityV1",
          "polarity": "Require"
        }
      ]
    },
    {
      "id": "native",
      "label": "Native hardware codec offer",
      "kind": "N32",
      "region": "mobile",
      "ports": [
        {
          "id": "codec",
          "profile": "P19",
          "contract": "VideoCodecCapabilityV1",
          "polarity": "Offer"
        },
        {
          "id": "preference",
          "profile": "P19",
          "contract": "CodecPreferenceWithFallbackV1",
          "polarity": "Offer"
        }
      ]
    },
    {
      "id": "software",
      "label": "Software codec offer",
      "kind": "N32",
      "region": "mobile",
      "ports": [
        {
          "id": "codec",
          "profile": "P19",
          "contract": "VideoCodecCapabilityV1",
          "polarity": "Offer"
        },
        {
          "id": "preference",
          "profile": "P19",
          "contract": "CodecPreferenceWithFallbackV1",
          "polarity": "Offer"
        }
      ]
    },
    {
      "id": "resolve",
      "label": "Capability resolver",
      "kind": "N03",
      "region": "common-logic",
      "ports": [
        {
          "id": "codec",
          "profile": "P19",
          "contract": "VideoCodecCapabilityV1",
          "polarity": "Neutral"
        },
        {
          "id": "selected",
          "profile": "P01",
          "contract": "SelectedCodecBindingV1",
          "polarity": "Offer"
        },
        {
          "id": "preference",
          "profile": "P19",
          "contract": "CodecPreferenceWithFallbackV1",
          "polarity": "Require"
        }
      ]
    },
    {
      "id": "session",
      "label": "Video session",
      "kind": "N05",
      "region": "common-logic",
      "ports": [
        {
          "id": "codec",
          "profile": "P01",
          "contract": "SelectedCodecBindingV1",
          "polarity": "Require"
        }
      ]
    }
  ],
  "relations": [
    {
      "id": "resolve",
      "kind": "H24",
      "incidences": [
        {
          "node": "requirement",
          "port": "codec",
          "role": "requirement",
          "ordinal": 0
        },
        {
          "node": "native",
          "port": "codec",
          "role": "offer",
          "ordinal": 0
        },
        {
          "node": "software",
          "port": "codec",
          "role": "offer",
          "ordinal": 1
        },
        {
          "node": "resolve",
          "port": "codec",
          "role": "resolver",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "selected",
      "kind": "H02",
      "incidences": [
        {
          "node": "resolve",
          "port": "selected",
          "role": "source",
          "ordinal": 0
        },
        {
          "node": "session",
          "port": "codec",
          "role": "target",
          "ordinal": 0
        }
      ]
    },
    {
      "id": "fallback",
      "kind": "H33",
      "incidences": [
        {
          "node": "native",
          "port": "preference",
          "role": "candidate",
          "ordinal": 0
        },
        {
          "node": "software",
          "port": "preference",
          "role": "candidate",
          "ordinal": 1
        },
        {
          "node": "resolve",
          "port": "preference",
          "role": "result",
          "ordinal": 0
        }
      ]
    }
  ]
}
