vout_subpictures: move decl and compare original stop value
authorFrancois Cartegnie <fcvlcdev@free.fr>
Mon, 23 Dec 2019 15:57:44 +0000 (16:57 +0100)
committerFrancois Cartegnie <fcvlcdev@free.fr>
Mon, 6 Jan 2020 16:34:34 +0000 (17:34 +0100)
prevents broken comparison if timestamp conversion fails

src/video_output/vout_subpictures.c

index b278b11..1092b17 100644 (file)
@@ -687,7 +687,6 @@ spu_SelectSubpictures(spu_t *spu, vlc_tick_t system_now,
         for (size_t index = 0; index < channel->entries.size; index++) {
             spu_render_entry_t *render_entry = &channel->entries.data[index];
             subpicture_t *current = render_entry->subpic;
-            bool is_stop_valid;
 
             if (!spu_render_entry_IsSelected(render_entry, channel->id,
                                              system_now, render_subtitle_date,
@@ -704,8 +703,9 @@ spu_SelectSubpictures(spu_t *spu, vlc_tick_t system_now,
                     *ephemer_order_ptr = current->i_order;
             }
 
-            is_stop_valid = !current->b_ephemer || render_entry->stop > render_entry->start;
-
+            /* If the spu is ephemer, the stop time is invalid, but it has been converted to
+               system time and used in comparisons below */
+            const bool is_stop_valid = !current->b_ephemer || render_entry->orgstop > render_entry->orgstart;
             render_entry->is_late = is_stop_valid && current->i_stop <= render_date;
 
             /* start_date will be used for correct automatic overlap support