caps: fix is_strictly_equal
authorHenry Wilkes <hwilkes@igalia.com>
Tue, 21 Jan 2020 19:02:48 +0000 (19:02 +0000)
committerJan Schmidt <thaytan@noraisin.net>
Wed, 12 Feb 2020 14:41:40 +0000 (14:41 +0000)
commit407e32588d6ad9defdb6a6ae3f25d63c5f34c331
tree0088bcd8782f221e4a3d4f63cf4804d3e9f51c9f
parent6ab1cdf51dec19e64c0afc8881c2cadae0835c25
caps: fix is_strictly_equal

Fixed gst_caps_is_strictly_equal() to take into account whether either of
the caps are ANY caps. Previously, two ANY caps could be considered not
strictly equal if one of them still contained some remnant *internal*
structure (this can happen if an ANY caps has emerged from an append or
merge operation). Also, an ANY caps with no remnant internal structures
was considered strictly equal to an EMPTY caps. Similarly, a non-ANY caps
was considered strictly equal to an ANY caps if its remnant internal
structures happened to match.

Also changed gst_caps_is_fixed to take into account that an ANY caps
should not be considered fixed even if it contains a single remnant
internal fixed structure. This affects gst_caps_is_equal(), which uses a
separate method if both caps are fixed. Previously, this meant that a
non-ANY fixed caps was considered equal to an ANY caps if it contained a
single matching remnant internal structure.

Added some tests for these two equality methods, which covers the above
examples, as well as asserts existing behaviour.

Fixes #496
gst/gstcaps.c
tests/check/gst/gstcaps.c