lavf/webvttdec: factorize identifier and settings side data code.
authorClément Bœsch <ubitux@gmail.com>
Sat, 1 Jun 2013 13:08:00 +0000 (15:08 +0200)
committerClément Bœsch <ubitux@gmail.com>
Sat, 1 Jun 2013 13:12:49 +0000 (15:12 +0200)
libavformat/webvttdec.c

index 894a762..7d9910b 100644 (file)
@@ -142,27 +142,19 @@ static int webvtt_read_header(AVFormatContext *s)
         sub->pts = ts_start;
         sub->duration = ts_end - ts_start;
 
-        if (identifier_len) {
-            uint8_t *buf = av_packet_new_side_data(sub,
-                                                   AV_PKT_DATA_WEBVTT_IDENTIFIER,
-                                                   identifier_len);
-            if (!buf) {
-                res = AVERROR(ENOMEM);
-                goto end;
-            }
-            memcpy(buf, identifier, identifier_len);
-        }
-
-        if (settings_len) {
-            uint8_t *buf = av_packet_new_side_data(sub,
-                                                   AV_PKT_DATA_WEBVTT_SETTINGS,
-                                                   settings_len);
-            if (!buf) {
-                res = AVERROR(ENOMEM);
-                goto end;
-            }
-            memcpy(buf, settings, settings_len);
-        }
+#define SET_SIDE_DATA(name, type) do {                                  \
+    if (name##_len) {                                                   \
+        uint8_t *buf = av_packet_new_side_data(sub, type, name##_len);  \
+        if (!buf) {                                                     \
+            res = AVERROR(ENOMEM);                                      \
+            goto end;                                                   \
+        }                                                               \
+        memcpy(buf, name, name##_len);                                  \
+    }                                                                   \
+} while (0)
+
+        SET_SIDE_DATA(identifier, AV_PKT_DATA_WEBVTT_IDENTIFIER);
+        SET_SIDE_DATA(settings,   AV_PKT_DATA_WEBVTT_SETTINGS);
     }
 
     ff_subtitles_queue_finalize(&webvtt->q);