libav: avcfg: Avoid brittle comparision

Subtracting a gint from another (or a guint from another) has no guarantees that
it will result in a gint.

Therefore do the actual comparision instead.

Also use the *actual* type for comparing flags (the field value types are different)

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3319>
This commit is contained in:
Edward Hervey 2022-11-04 08:00:03 +01:00 committed by GStreamer Marge Bot
parent cadc067bde
commit 0213536f77

View file

@ -79,7 +79,9 @@ gst_ffmpeg_cfg_init (void)
static gint
cmp_enum_value (GEnumValue * val1, GEnumValue * val2)
{
return val1->value - val2->value;
if (val1->value == val2->value)
return 0;
return (val1->value > val2->value) ? 1 : -1;
}
static GType
@ -176,9 +178,11 @@ done:
}
static gint
cmp_flags_value (GEnumValue * val1, GEnumValue * val2)
cmp_flags_value (GFlagsValue * val1, GFlagsValue * val2)
{
return val1->value - val2->value;
if (val1->value == val2->value)
return 0;
return (val1->value > val2->value) ? 1 : -1;
}
static GType