diff --git a/libavformat/oggparsevorbis.c b/libavformat/oggparsevorbis.c
index a1eb20dea21c40bc969617ceaaf414e1ae364e1b..a74fb9a9ff58de25e626cff4d19494ca5922e4b1 100644
--- a/libavformat/oggparsevorbis.c
+++ b/libavformat/oggparsevorbis.c
@@ -81,21 +81,7 @@ vorbis_comment(AVFormatContext * as, uint8_t *buf, int size)
             memcpy(ct, v, vl);
             ct[vl] = 0;
 
-            // took from Vorbis_I_spec
-            if (!strcmp(tt, "AUTHOR") || !strcmp(tt, "ARTIST"))
-                av_strlcpy(as->author, ct, sizeof(as->author));
-            else if (!strcmp(tt, "TITLE"))
-                av_strlcpy(as->title, ct, sizeof(as->title));
-            else if (!strcmp(tt, "COPYRIGHT"))
-                av_strlcpy(as->copyright, ct, sizeof(as->copyright));
-            else if (!strcmp(tt, "DESCRIPTION"))
-                av_strlcpy(as->comment, ct, sizeof(as->comment));
-            else if (!strcmp(tt, "GENRE"))
-                av_strlcpy(as->genre, ct, sizeof(as->genre));
-            else if (!strcmp(tt, "TRACKNUMBER"))
-                as->track = atoi(ct);
-            else if (!strcmp(tt, "ALBUM"))
-                av_strlcpy(as->album, ct, sizeof(as->album));
+            av_metadata_set(&as->metadata, tt, ct);
         }
     }