[vlc-commits] [Git][videolan/vlc][3.0.x] 3 commits: bluray: use common MPEG timestamps macros
Steve Lhomme (@robUx4)
gitlab at videolan.org
Thu Aug 21 10:19:26 UTC 2025
Steve Lhomme pushed to branch 3.0.x at VideoLAN / VLC
Commits:
aa5acb36 by Steve Lhomme at 2025-08-21T09:49:16+00:00
bluray: use common MPEG timestamps macros
(cherry picked from commit 8da763f888b3b17b2f3dd596b5fbae3bae3ed3a0) (edited)
edited:
- timestamps.h was already included in f97c70a9b38c0dae8803b16381b236330cdb2ab6
- - - - -
4294c905 by Steve Lhomme at 2025-08-21T09:49:16+00:00
demux:mpeg: make sure FROM_SCALE_NZ() returns a vlc_tick_t
(cherry picked from commit c58f46eec96045389f20e4b9bea79d47974b9cc3)
- - - - -
32028657 by Steve Lhomme at 2025-08-21T09:49:16+00:00
demux: mpeg: cast to vlc_tick_t early
So we can pass smaller type and not overflow.
(cherry picked from commit 031b57d6ad2275f8fa2e35d3fbbed918745830c3)
- - - - -
3 changed files:
- modules/access/Makefile.am
- modules/access/bluray.c
- modules/demux/mpeg/timestamps.h
Changes:
=====================================
modules/access/Makefile.am
=====================================
@@ -252,7 +252,7 @@ endif
access_LTLIBRARIES += $(LTLIBdvdread)
EXTRA_LTLIBRARIES += libdvdread_plugin.la
-liblibbluray_plugin_la_SOURCES = access/bluray.c
+liblibbluray_plugin_la_SOURCES = access/bluray.c demux/mpeg/timestamps.h
liblibbluray_plugin_la_CFLAGS = $(AM_CFLAGS) $(BLURAY_CFLAGS)
liblibbluray_plugin_la_LIBADD = $(BLURAY_LIBS)
liblibbluray_plugin_la_LDFLAGS = $(AM_LDFLAGS) -rpath '$(accessdir)'
=====================================
modules/access/bluray.c
=====================================
@@ -391,8 +391,6 @@ static int onIntfEvent(vlc_object_t *, char const *,
static void blurayRestartParser(demux_t *p_demux, bool, bool);
static void notifyDiscontinuityToParser( demux_sys_t *p_sys );
-#define FROM_TICKS(a) ((a)*CLOCK_FREQ / INT64_C(90000))
-#define TO_TICKS(a) ((a)*INT64_C(90000)/CLOCK_FREQ)
#define STILL_IMAGE_NOT_SET 0
#define STILL_IMAGE_INFINITE -1
@@ -2067,7 +2065,7 @@ static bool blurayTitleIsRepeating(BLURAY_TITLE_INFO *title_info,
static void blurayUpdateTitleInfo(input_title_t *t, BLURAY_TITLE_INFO *title_info)
{
- t->i_length = FROM_TICKS(title_info->duration);
+ t->i_length = FROM_SCALE_NZ(title_info->duration);
for (int i = 0; i < t->i_seekpoint; i++)
vlc_seekpoint_Delete( t->seekpoint[i] );
@@ -2082,7 +2080,7 @@ static void blurayUpdateTitleInfo(input_title_t *t, BLURAY_TITLE_INFO *title_inf
if (!s) {
break;
}
- s->i_time_offset = FROM_TICKS(title_info->chapters[j].start);
+ s->i_time_offset = FROM_SCALE_NZ(title_info->chapters[j].start);
TAB_APPEND(t->i_seekpoint, t->seekpoint, s);
}
@@ -2371,7 +2369,7 @@ static int blurayControl(demux_t *p_demux, int query, va_list args)
case DEMUX_SET_TIME:
{
int64_t i_time = va_arg(args, int64_t);
- bd_seek_time(p_sys->bluray, TO_TICKS(i_time));
+ bd_seek_time(p_sys->bluray, TO_SCALE_NZ(i_time));
blurayRestartParser(p_demux, true, true);
notifyDiscontinuityToParser(p_sys);
p_sys->b_draining = false;
@@ -2384,7 +2382,7 @@ static int blurayControl(demux_t *p_demux, int query, va_list args)
if( p_demux->info.i_title < (int) p_sys->i_title &&
(CURRENT_TITLE->i_flags & INPUT_TITLE_INTERACTIVE))
return VLC_EGENERIC;
- *pi_time = (int64_t)FROM_TICKS(bd_tell_time(p_sys->bluray));
+ *pi_time = FROM_SCALE_NZ(bd_tell_time(p_sys->bluray));
return VLC_SUCCESS;
}
@@ -2395,13 +2393,13 @@ static int blurayControl(demux_t *p_demux, int query, va_list args)
(CURRENT_TITLE->i_flags & INPUT_TITLE_INTERACTIVE))
return VLC_EGENERIC;
*pf_position = p_demux->info.i_title < (int) p_sys->i_title && CUR_LENGTH > 0 ?
- (double)FROM_TICKS(bd_tell_time(p_sys->bluray))/CUR_LENGTH : 0.0;
+ (double)FROM_SCALE_NZ(bd_tell_time(p_sys->bluray))/CUR_LENGTH : 0.0;
return VLC_SUCCESS;
}
case DEMUX_SET_POSITION:
{
double f_position = va_arg(args, double);
- bd_seek_time(p_sys->bluray, TO_TICKS(f_position*CUR_LENGTH));
+ bd_seek_time(p_sys->bluray, TO_SCALE_NZ(f_position*CUR_LENGTH));
blurayRestartParser(p_demux, true, true);
notifyDiscontinuityToParser(p_sys);
p_sys->b_draining = false;
=====================================
modules/demux/mpeg/timestamps.h
=====================================
@@ -19,7 +19,7 @@
#ifndef VLC_MPEG_TIMESTAMPS_H
#define VLC_MPEG_TIMESTAMPS_H
-#define FROM_SCALE_NZ(x) ((x) * 100 / 9)
+#define FROM_SCALE_NZ(x) (((vlc_tick_t)(x) * 100 / 9))
#define TO_SCALE_NZ(x) ((x) * 9 / 100)
#define FROM_SCALE(x) (VLC_TICK_0 + FROM_SCALE_NZ(x))
View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/285ab70a5aba325f39f0adf4c8272a7fac7e98ca...32028657178123df1f148b9c508499adf066ab08
--
View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/285ab70a5aba325f39f0adf4c8272a7fac7e98ca...32028657178123df1f148b9c508499adf066ab08
You're receiving this email because of your account on code.videolan.org.
VideoLAN code repository instance
More information about the vlc-commits
mailing list