]> git.sesse.net Git - ffmpeg/blobdiff - libavformat/jacosubdec.c
configure: add -lvulkan to libglslang's lib flags
[ffmpeg] / libavformat / jacosubdec.c
index e70ceeaafd6820a8c375879541e4f11575a69da5..c8bded02fefb69dcdcc8a5d7e02cc2787c022703 100644 (file)
@@ -125,8 +125,8 @@ static const char *read_ts(JACOsubContext *jacosub, const char *buf,
     return NULL;
 
 shift_and_ret:
-    ts_start64  = (ts_start + jacosub->shift) * 100LL / jacosub->timeres;
-    ts_end64    = (ts_end   + jacosub->shift) * 100LL / jacosub->timeres;
+    ts_start64  = (ts_start + (int64_t)jacosub->shift) * 100LL / jacosub->timeres;
+    ts_end64    = (ts_end   + (int64_t)jacosub->shift) * 100LL / jacosub->timeres;
     *start    = ts_start64;
     *duration = ts_end64 - ts_start64;
     return buf + len;
@@ -148,9 +148,15 @@ static int get_shift(int timeres, const char *buf)
 
     ret = 0;
     switch (n) {
-    case 4: ret = sign * (((int64_t)a*3600 + b*60 + c) * timeres + d);
-    case 3: ret = sign * ((         (int64_t)a*60 + b) * timeres + c);
-    case 2: ret = sign * ((                (int64_t)a) * timeres + b);
+    case 4:
+        ret = sign * (((int64_t)a*3600 + b*60 + c) * timeres + d);
+        break;
+    case 3:
+        ret = sign * ((         (int64_t)a*60 + b) * timeres + c);
+        break;
+    case 2:
+        ret = sign * ((                (int64_t)a) * timeres + b);
+        break;
     }
     if ((int)ret != ret)
         ret = 0;
@@ -193,6 +199,7 @@ static int jacosub_read_header(AVFormatContext *s)
 
             sub = ff_subtitles_queue_insert(&jacosub->q, line, len, merge_line);
             if (!sub) {
+                av_bprint_finalize(&header, NULL);
                 ret = AVERROR(ENOMEM);
                 goto fail;
             }
@@ -244,7 +251,7 @@ static int jacosub_read_header(AVFormatContext *s)
     /* SHIFT and TIMERES affect the whole script so packet timing can only be
      * done in a second pass */
     for (i = 0; i < jacosub->q.nb_subs; i++) {
-        AVPacket *sub = &jacosub->q.subs[i];
+        AVPacket *sub = jacosub->q.subs[i];
         read_ts(jacosub, sub->data, &sub->pts, &sub->duration);
     }
     ff_subtitles_queue_finalize(s, &jacosub->q);
@@ -269,7 +276,7 @@ static int jacosub_read_seek(AVFormatContext *s, int stream_index,
                                    min_ts, ts, max_ts, flags);
 }
 
-AVInputFormat ff_jacosub_demuxer = {
+const AVInputFormat ff_jacosub_demuxer = {
     .name           = "jacosub",
     .long_name      = NULL_IF_CONFIG_SMALL("JACOsub subtitle format"),
     .priv_data_size = sizeof(JACOsubContext),