[vlc-commits] [Git][videolan/vlc][master] macos: fix short audio duration display in library

Steve Lhomme (@robUx4) gitlab at videolan.org
Wed Aug 12 05:11:45 UTC 2026



Steve Lhomme pushed to branch master at VideoLAN / VLC


Commits:
2249fe75 by Serhii Bykov at 2026-08-12T04:39:32+00:00
macos: fix short audio duration display in library

- - - - -


4 changed files:

- modules/gui/macosx/extensions/NSString+Helpers.h
- modules/gui/macosx/extensions/NSString+Helpers.m
- modules/gui/macosx/library/VLCLibraryDataTypes.h
- modules/gui/macosx/library/VLCLibraryDataTypes.m


Changes:

=====================================
modules/gui/macosx/extensions/NSString+Helpers.h
=====================================
@@ -108,6 +108,17 @@ bool fixIntfSettings(void);
  */
 + (instancetype)stringWithTimeFromTicks:(vlc_tick_t)time;
 
+/**
+ Creates an NSString with the given time in milliseconds
+
+ This method allocates and initializes an NSString with the given
+ time formatted as displayable time, returning an undefined time
+ placeholder for non-positive values.
+
+ \param time   Time in milliseconds
+ */
++ (instancetype)stringWithTimeFromMilliseconds:(int64_t)time;
+
 /**
  Returns a time in seconds from strings formatted with colons (aka ##, ##:##, ##:##:##)
 


=====================================
modules/gui/macosx/extensions/NSString+Helpers.m
=====================================
@@ -103,6 +103,15 @@ NSString * flagEmojiStringForCountryCode(NSString *countryCode)
             vlc_tick_to_str(psz_time, time)];
 }
 
++ (instancetype)stringWithTimeFromMilliseconds:(int64_t)time
+{
+    if (time <= 0) {
+        return @"--:--";
+    }
+
+    return [NSString stringWithTimeFromTicks:VLC_TICK_FROM_MS(time)];
+}
+
 + (instancetype)stringWithTime:(long long int)time
 {
     if (time > 0) {


=====================================
modules/gui/macosx/library/VLCLibraryDataTypes.h
=====================================
@@ -34,8 +34,6 @@ extern NSString * const VLCMediaLibraryMediaItemUTI;
 @class VLCMediaLibraryGenre;
 @class VLCInputItem;
 
-extern const long long int VLCMediaLibraryMediaItemDurationDenominator;
-
 vlc_medialibrary_t * _Nullable getMediaLibrary(void);
 
 typedef NS_ENUM(NSUInteger, VLCMediaLibraryParentGroupType) {


=====================================
modules/gui/macosx/library/VLCLibraryDataTypes.m
=====================================
@@ -42,7 +42,6 @@ const CGFloat VLCMediaLibrary1080pWidth = 1920.;
 const CGFloat VLCMediaLibrary1080pHeight = 1080.;
 const CGFloat VLCMediaLibrary540pWidth = 960.;
 const CGFloat VLCMediaLibrary540pHeight = 540.;
-const long long int VLCMediaLibraryMediaItemDurationDenominator = 1000;
 
 NSString *VLCMediaLibraryMediaItemLibraryID = @"VLCMediaLibraryMediaItemLibraryID";
 
@@ -708,7 +707,7 @@ static NSString *genreArrayDisplayString(NSArray<VLCMediaLibraryGenre *> * const
 
 - (NSString *)durationString
 {
-    return [NSString stringWithTime:_duration / VLCMediaLibraryMediaItemDurationDenominator];
+    return [NSString stringWithTimeFromMilliseconds:_duration];
 }
 
 - (NSArray<VLCMediaLibraryArtist *> *)artists
@@ -960,7 +959,7 @@ static NSString *genreArrayDisplayString(NSArray<VLCMediaLibraryGenre *> * const
 
 - (NSString *)durationString
 {
-    return [NSString stringWithTime:_duration / VLCMediaLibraryMediaItemDurationDenominator];
+    return [NSString stringWithTimeFromMilliseconds:_duration];
 }
 
 - (VLCMediaLibraryMediaItem *)firstMediaItem
@@ -1016,7 +1015,7 @@ static NSString *genreArrayDisplayString(NSArray<VLCMediaLibraryGenre *> * const
         self.displayString = toNSStr(p_playlist->psz_name);
         const unsigned int numberOfMedia = p_playlist->i_nb_media;
         self.primaryDetailString = numberOfMedia == 0 ? _NS("No item") : _NPS("%u item", "%u items", numberOfMedia);
-        self.durationString = [NSString stringWithTime:p_playlist->i_duration / VLCMediaLibraryMediaItemDurationDenominator];
+        self.durationString = [NSString stringWithTimeFromMilliseconds:p_playlist->i_duration];
 
         _MRL = toNSStr(p_playlist->psz_mrl);
 
@@ -1571,7 +1570,7 @@ static NSString *genreArrayDisplayString(NSArray<VLCMediaLibraryGenre *> * const
 
 - (NSString *)durationString
 {
-    return [NSString stringWithTime:_duration / VLCMediaLibraryMediaItemDurationDenominator];
+    return [NSString stringWithTimeFromMilliseconds:_duration];
 
 }
 
@@ -1959,7 +1958,7 @@ static NSString *genreArrayDisplayString(NSArray<VLCMediaLibraryGenre *> * const
         self.displayString = p_media->psz_title ? toNSStr(p_media->psz_title) : @"";
         self.primaryDetailString = self.displayString;
         self.secondaryDetailString = @"";
-        self.durationString = [NSString stringWithTime:p_media->i_duration / VLCMediaLibraryMediaItemDurationDenominator];
+        self.durationString = [NSString stringWithTimeFromMilliseconds:p_media->i_duration];
 
         // Movie-specific
         _summary = toNSStr(p_media->movie.psz_summary);



View it on GitLab: https://code.videolan.org/videolan/vlc/-/commit/2249fe7510a48d6e7426df842294ce351820c8f7

-- 
View it on GitLab: https://code.videolan.org/videolan/vlc/-/commit/2249fe7510a48d6e7426df842294ce351820c8f7
You're receiving this email because of your account on code.videolan.org. Manage all notifications: https://code.videolan.org/-/profile/notifications | Help: https://code.videolan.org/help




More information about the vlc-commits mailing list