[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