Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
78 commits
Select commit Hold shift + click to select a range
e2914c3
[cmake] addons: windows: only add sse2 flags for x86
lrusak Apr 29, 2023
0a912ae
Revert "Backport weather fix"
Hitcher Nov 12, 2023
a6a275a
[music] Allow scanning of mkv files directly into the music library
the-black-eagle Feb 23, 2025
5f6d795
Add support for mp4 music videos in music library
the-black-eagle Mar 1, 2025
955a403
Fix an issue when scanning mkv files with incorrect chapter info
the-black-eagle Mar 1, 2025
76866dd
[MUSIC] Get bits-per-sample & codec info at scan time, save to db and…
the-black-eagle Feb 6, 2022
9f25e2b
[tidy up] add ffmpeg stuff
the-black-eagle Feb 8, 2022
5454978
[tidy up] add ffmpeg stuff
the-black-eagle Feb 8, 2022
9d29d0a
tidyups
the-black-eagle Feb 8, 2022
d0975ed
[FIXUP] Clean up comments, rename CMusicInfoFFmpeg to CMusicCodecInfo…
the-black-eagle Apr 1, 2022
77a74d5
Add new files
the-black-eagle Apr 1, 2022
215d156
small fix for ffmpeg code
the-black-eagle Mar 8, 2025
b345391
Update MusicDatabase to add properties to item
the-black-eagle Mar 8, 2025
c5b1c16
[MUSIC] Ensure mka/mkv reader is looking at the first audio track
the-black-eagle Mar 8, 2025
87d0b91
[MUSIC] Make sure we have a valid audio track to extract info from
the-black-eagle Mar 8, 2025
90b3351
[music] Remove un-needed files left over from earlier work
the-black-eagle Mar 8, 2025
34bb1ed
[music] Update CMusicInfoTagLoaderFFmpeg to load a full set of tags
the-black-eagle Mar 8, 2025
316d6b1
[music] Update tagloader. Remove old files, change MusicInfoCodec to…
the-black-eagle Mar 8, 2025
1ee06f2
Fix damaged doxygen table
the-black-eagle Mar 9, 2025
c0f03bb
[music] make infolabel consistent with other views
the-black-eagle Mar 9, 2025
3a93c3c
[music] Apply clang-format to file
the-black-eagle Mar 9, 2025
b081338
[music] Add missing channel info
the-black-eagle Mar 9, 2025
469c0ae
[music] Drop multiple use of StringUtils
the-black-eagle Mar 9, 2025
fab86a6
[music][backport]Add new cover loader
the-black-eagle Feb 19, 2025
543b3b9
Backport mka tag changes
the-black-eagle Feb 19, 2025
f58aee3
Use CAudioBookFileDirectory to open matroska containers
the-black-eagle Mar 13, 2025
300c399
[music] Detect audio codec in use
the-black-eagle Mar 13, 2025
8f62715
[music] Fetch codec info etc from songs, add to albums for display in…
the-black-eagle Mar 13, 2025
f0d7970
[music] Allow scanning of mkv files directly into the music library
the-black-eagle Feb 23, 2025
519ba2b
Add support for mp4 music videos in music library
the-black-eagle Mar 1, 2025
4981b19
Fix an issue when scanning mkv files with incorrect chapter info
the-black-eagle Mar 1, 2025
78c0c77
Update MusicDatabase to add properties to item
the-black-eagle Mar 8, 2025
494613e
[MUSIC] Ensure mka/mkv reader is looking at the first audio track
the-black-eagle Mar 8, 2025
94a62c0
[MUSIC] Make sure we have a valid audio track to extract info from
the-black-eagle Mar 8, 2025
163af07
[music] Add missing channel info
the-black-eagle Mar 9, 2025
68c91a3
[music] Detect audio codec in use
the-black-eagle Mar 13, 2025
041dc8c
[Music] Detect hd codecs in mka/mkv/mp4 files
the-black-eagle Mar 15, 2025
2f8b661
[Music] Divide bitrate if file not in library
the-black-eagle Mar 15, 2025
942b004
[music] Update skin includes to show codecs etc at album level
the-black-eagle Mar 16, 2025
f1e94a3
[music] Get the average bitrate for an album as an integer in albumview
the-black-eagle Mar 16, 2025
31b5fc8
[music] Ensure MusicInfoTag is filled with a URL at the album level -…
the-black-eagle Mar 19, 2025
cc3d544
[MUSIC] Extend smartplaylists to use codec/samplerate etc for albums …
the-black-eagle Mar 28, 2025
627b836
[MUSIC] Improve dts-hdma detection in mka etc files
the-black-eagle Mar 29, 2025
b7353fa
[MUSIC] Add codec to music database, allow for fetching for smartplay…
the-black-eagle Mar 29, 2025
8e2899c
[MUSIC] only first byte of priv_data matters
the-black-eagle Mar 30, 2025
0c0ca22
[MUSIC] Test should be less than to avoid nullptr issues
the-black-eagle Mar 30, 2025
67c5e4a
[MUSIC] Add album path for recently added and played albums to CMusic…
the-black-eagle Apr 16, 2025
15caa2e
[MUSIC] Move codec name detection to CMusicCodecInfoFFmpeg
the-black-eagle Apr 16, 2025
26b22f5
[MUSIC] Remove code to read metadata tags from streams as this is lik…
the-black-eagle Apr 16, 2025
d430b0c
[MUSIC][MKV] Find 1st default audio stream or 1st stream if no defaul…
the-black-eagle May 17, 2025
c32e767
[MUSIC][mka/v] Update detection of micro-chapters for all mka/v/mp4 …
the-black-eagle Jun 4, 2025
f60d143
[MUSIC][filesystem] Only open CAudioBookFileDirectory for files withi…
the-black-eagle Jun 4, 2025
1dfcf83
[MUSIC] Only require music source(s) for mkv or mp4 files, not mka etc
the-black-eagle Jun 7, 2025
a4c9857
[MUSIC][mkv] Fix not being able to scan mkv/mp4 to the music library
the-black-eagle Jun 9, 2025
bd7a7ee
[MUSIC] Improve codec detection
the-black-eagle Jun 12, 2025
b104d54
[GUIINFO] Add new chapter length and elapsed infolabels. Add new Vide…
the-black-eagle Jun 12, 2025
051713a
[MUSIC][GUIINFO] Ensure elapsed chapter time is never negative
the-black-eagle Jun 15, 2025
0e4019d
[MUSIC] Update gui arrays for Piers
the-black-eagle Jun 17, 2025
19681a4
[MUSIC] Fix issues porting Omega commits to Piers
the-black-eagle Jun 17, 2025
c9e1691
[FILESYSTEM] Drop use of vecsources
the-black-eagle Jun 17, 2025
2ecac79
[MUSIC] Add chapterlength to player infolabels
the-black-eagle Jun 17, 2025
c4aced2
[MUSIC] Fix type, missing curly bracket
the-black-eagle Jun 17, 2025
1bab5e3
[GUIInfoManager] Avoid a nullptr crash
the-black-eagle Jun 18, 2025
c4e77b9
[MUSIC] Remove dead code
the-black-eagle Jun 18, 2025
c848f45
[MUSIC] Get codec info from db as it's more accurate
the-black-eagle Jun 20, 2025
f39802f
Add Music Concerts xml node, allow filtering of music concerts and ad…
the-black-eagle Jun 21, 2025
65a50b0
[MUSIC] Fix small typo error
the-black-eagle Jun 21, 2025
df1923d
[MUSIC] Simplify counting of mka/mp4 files in the music library
the-black-eagle Jun 21, 2025
fb8eb32
[codebase] Incorporate latest updates to master
the-black-eagle Jul 1, 2025
7ed7563
[dialogs] Update to latest master changes
the-black-eagle Jul 1, 2025
9bd8fa9
[Music] Use ffmpeg to detect mp4 codecs not taglib
the-black-eagle Jul 1, 2025
f4e42b5
[Music] Guard against missing bitspersample when reading tags
the-black-eagle Jun 30, 2025
7a7ffb5
[MUSIC][AUDIOBOOKS] Add boolean field to include/exclude audiobooks i…
the-black-eagle Apr 16, 2026
497cbab
[MUSIC] Fix up some stuff that sneaked in during rebase
the-black-eagle Apr 17, 2026
7af9dc1
[MUSIC] Create nodes for easy navigation to concerts / audiobooks
the-black-eagle Apr 19, 2026
d8088f3
[MUSIC] Move to using new 'AudioType' in the database. Autodetect con…
the-black-eagle Apr 19, 2026
9c21c5e
[MUSIC] Use new AudioType to select items in smartplaylists
the-black-eagle Apr 19, 2026
5cdaa7e
[Audiobooks] Add missing '#' to strings.po so it works git add -p add…
the-black-eagle Apr 19, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 20 additions & 1 deletion addons/resource.language.en_gb/resources/strings.po
Original file line number Diff line number Diff line change
Expand Up @@ -15167,7 +15167,26 @@ msgctxt "#21485"
msgid "Supported file extensions and media types"
msgstr ""

#empty strings from id 21486 to 21601
#: xbmc/dialogs/GUIDialogMediaFilter.cpp
#: xbmc/playlist/SmartPlayList.cpp
msgctxt "#21486"
msgid "Music concerts"
msgstr ""

#. Boolean value to include/exclude audiobooks in the filter or smartplaylist
#: xbmc/dialogs/GUIDialogMediaFilter.cpp
#: xbmc/playlist/SmartPlayList.cpp
msgctxt "#21487"
msgid "Audiobook"
msgstr ""

#. Plural of #21487 - for display on screen in the associated node name
#: system/library/music/audiobook.xml
msgctxt "#21488"
msgid "Audiobooks"
msgstr ""

#empty strings from id 21489 to 21601

#: xbmc/Util.cpp
msgctxt "#21602"
Expand Down
91 changes: 91 additions & 0 deletions addons/skin.estuary/xml/Includes.xml
Original file line number Diff line number Diff line change
Expand Up @@ -403,6 +403,21 @@
<itemgap>9</itemgap>
<width>1900</width>
<usecontrolcoords>true</usecontrolcoords>
<control type="group">
<width>115</width>
<visible>!String.IsEmpty(ListItem.MusicCodec)</visible>
<control type="label">
<width>110</width>
<height>60</height>
<align>center</align>
<aligny>center</aligny>
<label>$INFO[$PARAM[infolabel_prefix]ListItem.MusicCodec]</label>
<font>font_flag</font>
</control>
<include content="MediaFlag">
<param name="texture" value="flags/flag.png" />
</include>
</control>
<include content="MediaFlag">
<param name="flag_visible" value="VideoPlayer.IsStereoscopic" />
<param name="flag_label" value="3D" />
Expand Down Expand Up @@ -517,6 +532,82 @@
<param name="flag_visible" value="!String.IsEmpty(MusicPlayer.BMP)" />
<param name="flag_label" value="$INFO[MusicPlayer.BMP, ,bpm]" />
</include>
<control type="group">
<visible>!String.IsEmpty(ListItem.Samplerate)</visible>
<width>115</width>
<control type="label">
<width>110</width>
<height>60</height>
<align>center</align>
<aligny>center</aligny>
<label>$INFO[ListItem.Samplerate, ,kHz]</label>
<font>font_flag</font>
</control>
<include content="MediaFlag">
<param name="texture" value="flags/flag.png" />
</include>
</control>
<control type="group">
<visible>!String.IsEmpty(ListItem.BitRate)</visible>
<width>115</width>
<control type="label">
<width>110</width>
<height>60</height>
<align>center</align>
<aligny>center</aligny>
<label>$INFO[ListItem.BitRate, ,kbps]</label>
<font>font_flag</font>
</control>
<include content="MediaFlag">
<param name="texture" value="flags/flag.png" />
</include>
</control>
<control type="group">
<visible>!String.IsEmpty(ListItem.MusicBitsPerSample)</visible>
<width>115</width>
<control type="label">
<width>110</width>
<height>60</height>
<align>center</align>
<aligny>center</aligny>
<label>$INFO[ListItem.MusicBitsPerSample, ,bit]</label>
<font>font_flag</font>
</control>
<include content="MediaFlag">
<param name="texture" value="flags/flag.png" />
</include>
</control>
<control type="group">
<visible>!String.IsEmpty(ListItem.BPM)</visible>
<width>115</width>
<control type="label">
<width>110</width>
<height>60</height>
<align>center</align>
<aligny>center</aligny>
<label>$INFO[ListItem.BPM, ,bpm]</label>
<font>font_flag</font>
</control>
<include content="MediaFlag">
<param name="texture" value="flags/flag.png" />
</include>
</control>
<control type="group">
<width>115</width>
<visible>!String.IsEmpty($PARAM[infolabel_prefix]ListItem.Duration)</visible>
<visible>Container.Content(albums) + ![Window.IsVisible(songinformation) | Window.IsVisible(musicinformation)]</visible>
<control type="label">
<width>110</width>
<height>60</height>
<align>center</align>
<aligny>center</aligny>
<label>$INFO[$PARAM[infolabel_prefix]ListItem.Duration]</label>
<font>font_flag</font>
</control>
<include content="MediaFlag">
<param name="texture" value="flags/flag.png" />
</include>
</control>
</control>
</definition>
</include>
Expand Down
7 changes: 7 additions & 0 deletions system/library/music/audiobooks.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
<?xml version='1.0' encoding='UTF-8'?>
<node order="38" type="filter" visible="Library.HasContent(AudioBooks)">
<label>21488</label>
<content>albums</content>
<order direction="ascending">album</order>
<rule field="isaudiobook" operator="true" />
</node>
6 changes: 6 additions & 0 deletions system/library/music/musicconcerts.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
<?xml version='1.0' encoding='UTF-8'?>
<node order="38" type="filter" visible="Library.HasContent(MusicConcerts)">
<label>21486</label>
<content>albums</content>
<rule field="ismusicconcert" operator="true" />
</node>
19 changes: 17 additions & 2 deletions xbmc/FileItem.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -830,6 +830,21 @@ bool CFileItem::IsDeleted() const
return false;
}

bool CFileItem::IsAudioBook() const
{
return IsType(".m4b");
}

bool CFileItem::IsMatroskaAudio() const
{
return IsType(".mka|.mp4");
}

bool CFileItem::IsMatroskaVideo() const
{
return IsType(".mkv");
}

bool CFileItem::IsGame() const
{
if (HasGameInfoTag())
Expand Down Expand Up @@ -898,8 +913,8 @@ bool CFileItem::IsFileFolder(FileFolderType types) const
if (PLAYLIST::IsSmartPlayList(*this) ||
(PLAYLIST::IsPlayList(*this) &&
CServiceBroker::GetSettingsComponent()->GetAdvancedSettings()->m_playlistAsFolders) ||
IsAPK() || IsZIP() || IsRAR() || IsRSS() || URIUtils::IsArchive(GetURL()) ||
MUSIC::IsAudioBook(*this) ||
IsAPK() || IsZIP() || IsRAR() || IsRSS() || MUSIC::IsAudioBook(*this) || IsMatroskaAudio() || IsMatroskaVideo() || IsType(".mp4") ||

#if defined(TARGET_ANDROID)
IsType(".apk") ||
#endif
Expand Down
8 changes: 8 additions & 0 deletions xbmc/FileItem.h
Original file line number Diff line number Diff line change
Expand Up @@ -154,6 +154,14 @@ class CFileItem : public CGUIListItem, public IArchivable, public ISerializable,
*/
bool IsDeleted() const;

/*!
\brief Check whether an item is an audio book item.
\return true if item is audiobook, false otherwise.
*/
bool IsAudioBook() const;
bool IsMatroskaAudio() const;
bool IsMatroskaVideo() const;

bool IsGame() const;
bool IsLibraryFolder() const;
bool IsPythonScript() const;
Expand Down
Loading