[Opalvoip-devel] Polycom H.323 High profile specifics
Brought to you by:
csoutheren,
rjongbloed
From: Alexander S. <ale...@gm...> - 2012-09-21 13:44:02
|
After adding High profile and making it default H.264 profile, I've found it working fine with opal clients but broke compatibility with Polycom codecs. Looking inside negotiations dumps i've found that opal and Polycom are using different approaches for capabilities distribution. So I just want to ask Robert's opinion on situation with Polycom H.323 High profile negotiation. I'm myself not found yet authoritative info on the problem. Basically i'm just drowning in those RFCs and specification manuals. How i see current compatibility problem: 1) If High Profile is enabled in Opal, there will be just one H.264 entry in capabilities table. If Opal with Baseline profile receive such capability it (i suppose) automatically imply that device with possibility of High profile decoding can decode Baseline profile as well. 2) Polycom HDX 8000 (High profile capable) in its turn create multiple H.264 entries in capabilities table. Two entries for Baseline and one entry for High profile. If HDX 4002 (not capable of High profile) get High profile capability from Opal it just ignore it and without additional Baseline cap will not create video stream at all (in case Opal has disabled H.263 and H.261 codecs as well). Due to my unenlightened state I can't say which approach is right or wrong. BTW in the end i was able to create HDX 8000 <-> Opal High profile connection (with H.264-1 codec preferred). As illustration here comes HDX 8000 capabilities table: request terminalCapabilitySet { sequenceNumber = 1 protocolIdentifier = 0.0.8.245.0.13 ............................... capabilityTable = 29 entries { [0]={ capabilityTableEntryNumber = 1 capability = genericControlCapability { capabilityIdentifier = standard 0.0.8.239.1.1 } } ............................. [17]={ capabilityTableEntryNumber = 18 capability = receiveVideoCapability genericVideoCapability { capabilityIdentifier = standard 0.0.8.241.0.0.1 maxBitRate = 10240 collapsing = 5 entries { [0]={ parameterIdentifier = standard 41 parameterValue = booleanArray 64 // Baseline profile } [1]={ parameterIdentifier = standard 42 parameterValue = unsignedMin 71 // Level 3.1 } [2]={ parameterIdentifier = standard 3 parameterValue = unsignedMin 432 } [3]={ parameterIdentifier = standard 4 parameterValue = unsignedMin 15 } [4]={ parameterIdentifier = standard 10 parameterValue = unsignedMin 13 } } } } [18]={ capabilityTableEntryNumber = 19 capability = receiveVideoCapability genericVideoCapability { capabilityIdentifier = standard 0.0.8.241.0.0.1 maxBitRate = 10240 collapsing = 5 entries { [0]={ parameterIdentifier = standard 41 parameterValue = booleanArray 8 // High profile } [1]={ parameterIdentifier = standard 42 parameterValue = unsignedMin 71 // Level 3.1 } [2]={ parameterIdentifier = standard 3 parameterValue = unsignedMin 432 } [3]={ parameterIdentifier = standard 4 parameterValue = unsignedMin 15 } [4]={ parameterIdentifier = standard 10 parameterValue = unsignedMin 13 } } } } ................................. [25]={ capabilityTableEntryNumber = 26 capability = receiveVideoCapability extendedVideoCapability { videoCapability = 1 entries { [0]=genericVideoCapability { capabilityIdentifier = standard 0.0.8.241.0.0.1 maxBitRate = 10240 collapsing = 5 entries { [0]={ parameterIdentifier = standard 41 parameterValue = booleanArray 64 // Baseline profile } [1]={ parameterIdentifier = standard 42 parameterValue = unsignedMin 71 // Level 3.1 } [2]={ parameterIdentifier = standard 3 parameterValue = unsignedMin 226 } [3]={ parameterIdentifier = standard 4 parameterValue = unsignedMin 20 } [4]={ parameterIdentifier = standard 10 parameterValue = unsignedMin 13 } } } } videoCapabilityExtension = 1 entries { [0]={ capabilityIdentifier = standard 0.0.8.239.1.2 maxBitRate = 0 collapsing = 1 entries { [0]={ parameterIdentifier = standard 1 parameterValue = booleanArray 1 } } } } } } ................................ |