tag: fix some GIR annotations

Mostly related to out and array parameters.
diff --git a/gst-libs/gst/tag/gstid3tag.c b/gst-libs/gst/tag/gstid3tag.c
index 5718bae..1149d5b 100644
--- a/gst-libs/gst/tag/gstid3tag.c
+++ b/gst-libs/gst/tag/gstid3tag.c
@@ -252,7 +252,7 @@
 
 /**
  * gst_tag_list_new_from_id3v1:
- * @data: 128 bytes of data containing the ID3v1 tag
+ * @data: (array fixed-size=128): 128 bytes of data containing the ID3v1 tag
  *
  * Parses the data containing an ID3v1 tag and returns a #GstTagList from the
  * parsed data.
@@ -337,7 +337,7 @@
 /**
  * gst_tag_list_add_id3_image:
  * @tag_list: a tag list
- * @image_data: the (encoded) image
+ * @image_data: (array length=image_data_len): the (encoded) image
  * @image_data_len: the length of the encoded image data at @image_data
  * @id3_picture_type: picture type as per the ID3 (v2.4.0) specification for
  *    the APIC frame (0 = unknown/other)
diff --git a/gst-libs/gst/tag/gstvorbistag.c b/gst-libs/gst/tag/gstvorbistag.c
index 118ea21..28c24ab 100644
--- a/gst-libs/gst/tag/gstvorbistag.c
+++ b/gst-libs/gst/tag/gstvorbistag.c
@@ -403,12 +403,12 @@
 
 /**
  * gst_tag_list_from_vorbiscomment:
- * @data: data to convert
+ * @data: (array length=size): data to convert
  * @size: size of @data
- * @id_data: identification data at start of stream
+ * @id_data: (array length=id_data_length): identification data at start of stream
  * @id_data_length: length of identification data
- * @vendor_string: pointer to a string that should take the vendor string
- *                 of this vorbis comment or NULL if you don't need it.
+ * @vendor_string: (out) (optional): pointer to a string that should take the
+ *     vendor string of this vorbis comment or NULL if you don't need it.
  *
  * Creates a new tag list that contains the information parsed out of a
  * vorbiscomment packet.
@@ -501,10 +501,10 @@
 /**
  * gst_tag_list_from_vorbiscomment_buffer:
  * @buffer: buffer to convert
- * @id_data: identification data at start of stream
+ * @id_data: (array length=id_data_length): identification data at start of stream
  * @id_data_length: length of identification data
- * @vendor_string: pointer to a string that should take the vendor string
- *                 of this vorbis comment or NULL if you don't need it.
+ * @vendor_string: (out) (optional): pointer to a string that should take the
+ *     vendor string of this vorbis comment or NULL if you don't need it.
  *
  * Creates a new tag list that contains the information parsed out of a
  * vorbiscomment packet.
@@ -777,9 +777,9 @@
 /**
  * gst_tag_list_to_vorbiscomment_buffer:
  * @list: tag list to convert
- * @id_data: identification data at start of stream
+ * @id_data: (array length=id_data_length): identification data at start of stream
  * @id_data_length: length of identification data, may be 0 if @id_data is NULL
- * @vendor_string: string that describes the vendor string or NULL
+ * @vendor_string: (nullable): string that describes the vendor string or NULL
  *
  * Creates a new vorbiscomment buffer from a tag list.
  *
diff --git a/gst-libs/gst/tag/gstxmptag.c b/gst-libs/gst/tag/gstxmptag.c
index 49db44b..a52b849 100644
--- a/gst-libs/gst/tag/gstxmptag.c
+++ b/gst-libs/gst/tag/gstxmptag.c
@@ -1698,7 +1698,8 @@
  * gst_tag_list_to_xmp_buffer:
  * @list: tags
  * @read_only: does the container forbid inplace editing
- * @schemas: %NULL terminated array of schemas to be used on serialization
+ * @schemas: (array zero-terminated):
+ *     %NULL terminated array of schemas to be used on serialization
  *
  * Formats a taglist as a xmp packet using only the selected
  * schemas. An empty list (%NULL) means that all schemas should
diff --git a/gst-libs/gst/tag/tags.c b/gst-libs/gst/tag/tags.c
index b3f2cd4..b0c7e61 100644
--- a/gst-libs/gst/tag/tags.c
+++ b/gst-libs/gst/tag/tags.c
@@ -242,9 +242,11 @@
 /**
  * gst_tag_parse_extended_comment:
  * @ext_comment: an extended comment string, see #GST_TAG_EXTENDED_COMMENT
- * @key: return location for the comment description key, or NULL
- * @lang: return location for the comment ISO-639 language code, or NULL
- * @value: return location for the actual comment string, or NULL
+ * @key: (out) (nullable):
+ *     return location for the comment description key, or NULL
+ * @lang: (out) (nullable):
+ *     return location for the comment ISO-639 language code, or NULL
+ * @value: (out): return location for the actual comment string, or NULL
  * @fail_if_no_key: whether to fail if strings are not in key=value form
  *
  * Convenience function to parse a GST_TAG_EXTENDED_COMMENT string and
@@ -303,10 +305,10 @@
 
 /**
  * gst_tag_freeform_string_to_utf8:
- * @data: string data
+ * @data: (array length=size) (element-type gchar): string data
  * @size: length of string data, or -1 if the string is NUL-terminated
- * @env_vars: a NULL-terminated string array of environment variable names,
- *            or NULL
+ * @env_vars: (array zero-terminated=1)
+ *    a NULL-terminated string array of environment variable names, or NULL
  *
  * Convenience function to read a string with unknown character encoding. If
  * the string is already in UTF-8 encoding, it will be returned right away.
@@ -474,7 +476,7 @@
 
 /**
  * gst_tag_image_data_to_image_sample:
- * @image_data: the (encoded) image
+ * @image_data: (array length=image_data_len): the (encoded) image
  * @image_data_len: the length of the encoded image data at @image_data
  * @image_type: type of the image, or #GST_TAG_IMAGE_TYPE_UNDEFINED. Pass
  *     #GST_TAG_IMAGE_TYPE_NONE if no image type should be set at all (e.g.