We are happy to announce that Gerbera Media Server 1.9.0 is now available.
Since release of the last version many issues have been fixed. We are also making several new features available. The full the list of changes can be found below, here is the extract:
New or Improved Features
- Many more things have been added to configuration (order of resources for album art, DLNA profiles, upnp properties). Please consult https://docs.gerbera.io/en/stable/config-overview.html for the exact usage
- Gerbera now can display dynamic containers, i.e. its contents are calculated as you click. This may show you recently add or changed media
- Gerbera now supports client specific transcoding, i.e. video is only transcode for your older devices, newer can stream it as it is
- The compatibility with Samsung TV sets was increase again
- Minor media and upnp additions in search allow you to make the most out of your files
Refactoring of Code in Database Layer
We worked hard to remove legacy code from the database layer to make it even faster and easier to maintain. As a consequence, support for older columns was dropped which means after upgrading to 1.9.0 the database is migrated and cannot be used with older versions anymore. Based on this a resources table was created to contain all the details on media, like subtitles, thumbnails etc.
If not sure backup your database before upgrading or start with a completely new database and let gerbera rebuild it.
Changes
- fix wrong define (#1717), thanks @neheb
- use auto instead of const char* (#1718), thanks @neheb
- move several variables down (#1719), thanks @neheb
- unique_ptr removals (#1711), thanks @neheb
- getTimespecAfterMillis: return ret instead of void (#1710), thanks @neheb
- Generate namespace attributes required for properties (#1707), thanks @KarlStraussberger
- replace reference parameter with std::pair (#1708), thanks @neheb
- clang-tidy 8 fixes (#1709), thanks @neheb
- Allow setting resource order (#1701), thanks @KarlStraussberger
- remove pointless {} (#1706), thanks @neheb
- use map.emplace (#1705), thanks @neheb
- remove some = {} (#1699), thanks @neheb
- use thread constructor (#1698), thanks @neheb
- Re-add CI check with clang (#1696), thanks @KarlStraussberger
- Send container updates (#1692), thanks @KarlStraussberger
- fixup lambda for C++20 compatibility (#1693), thanks @neheb
- lastfm: switch to C++ API (#1694), thanks @neheb
- move make_unique down (#1689), thanks @neheb
- use move with shared_ptr (#1691), thanks @neheb
- make uiUpdateIDs a unique_ptr (#1690), thanks @neheb
- remove pointless const_cast (#1688), thanks @neheb
- Factor out transactions to reduce overhead when disabled (#1682), thanks @KarlStraussberger
- Fix X_GetFeatureList (Samsung) (#1681), thanks @KarlStraussberger
- some move (#1685), thanks @neheb
- move make_shared outside of initializer list (#1675), thanks @neheb
- switch xmlDoc to unique_ptr (#1684), thanks @neheb
- remove ret variable (#1683), thanks @neheb
- lambda conversion (#1679), thanks @neheb
- more unique_ptr (#1677), thanks @neheb
- some CTAD (#1678), thanks @neheb
- remove pointless temporary (#1676), thanks @neheb
- small cleanups (#1673), thanks @neheb
- Add more documentation and cleanup SQL init code (#1669), thanks @KarlStraussberger
- remove wrong static (#1671), thanks @neheb
- Move resources to separate table. (#1667), thanks @KarlStraussberger
- several string_view conversions (#1665), thanks @neheb
- convert expandName to string_view (#1664), thanks @neheb
- Add link to database doc (#1663), thanks @KarlStraussberger
- Add migration hook to version update (#1662), thanks @KarlStraussberger
- Automatically load options (#1658), thanks @KarlStraussberger
- use make_pair in std::array (#1652), thanks @neheb
- remove std from std::next (#1657), thanks @neheb
- remove aslowercase (#1659), thanks @neheb
- pass by value (#1654), thanks @neheb
- Add DLNA profiles strings and visible file system directories to configuration (#1651), thanks @KarlStraussberger
- don't default assign nullptr to smart pointers (#1656), thanks @neheb
- add missing const (#1653), thanks @neheb
- remove == nullptr (#1649), thanks @neheb
- Add ProductCap to please Samsung TVs (#1650), thanks @KarlStraussberger
- simplify pidfile write (#1647), thanks @neheb
- Move db upgrade commands to config file (#1644), thanks @KarlStraussberger
- clang-tidy: remove implicit bool conversions (#1640), thanks @neheb
- Add codec info to resource data (#1641), thanks @KarlStraussberger
- Subtitle: Add resouce and CaptionInfoEx (#1634), thanks @KarlStraussberger
- remove pointless constructor (#1639), thanks @neheb
- clang-tidy: don't use else after return (#1638), thanks @neheb
- several constructor changes (#1637), thanks @neheb
- static (#1631), thanks @neheb
- change length parameter to size_t (#1636), thanks @neheb
- add missing header (#1635), thanks @neheb
- Implement EnumIterator (#1610), thanks @KarlStraussberger
- SQLDatabase: Refactor init and upgrade (#1633), thanks @KarlStraussberger
- const member function conversions (#1629), thanks @neheb
- clang-tidy: add missing functions (#1630), thanks @neheb
- add a missing this-> (#1627), thanks @neheb
- pass 0 to std::unordered_ (#1626), thanks @neheb
- replace std::list with std::vector (#1623), thanks @neheb
- remove manual loop (#1624), thanks @neheb
- remove pointless find (#1625), thanks @neheb
- small lambda conversion (#1615), thanks @neheb
- Regression: Samsung Compatibility (#1620), thanks @KarlStraussberger
- switch to C++ ffmpegthumbnailer API (#1619), thanks @neheb
- cosmetic map changes (#1616), thanks @neheb
- remove two pointless unique_ptrs (#1617), thanks @neheb
- declare AVFormatContext as struct (#1618), thanks @neheb
- default init some members (#1614), thanks @neheb
- Fix MySQL migration (#1611), thanks @KarlStraussberger
- switch several for loops to use size_t (#1602), thanks @neheb
- replace POSIX file stuff with C (#1608), thanks @neheb
- Implemement dynamic containers (#1601), thanks @KarlStraussberger
- small error handle (#1598), thanks @neheb
- replace several usages of format with to_string (#1604), thanks @neheb
- remove several {} (#1603), thanks @neheb
- don't throw in noexcept destructors (#1589), thanks @neheb
- Fix lastfm compilation (#1595), thanks @KarlStraussberger
- use make_pair (#1593), thanks @neheb
- use a unique_ptr in lambda (#1594), thanks @neheb
- nppnp changes (#1592), thanks @neheb
- Close memory leak by duplicate call to ixmlCloneDOMString (#1590), thanks @KarlStraussberger
- replace rand with std::random (#1587), thanks @neheb
- server: default init some variables (#1588), thanks @neheb
- fix std::accumulate (#1584), thanks @neheb
- add missing default initialization (#1581), thanks @neheb
- default initialize some io stuff (#1580), thanks @neheb
- add missing close (#1578), thanks @neheb
- add missing nullptr check (#1577), thanks @neheb
- default initialize members in mysql (#1575), thanks @neheb
- Simplify and cleanup (#1574), thanks @KarlStraussberger
- string ref to string_view conversion (#1572), thanks @neheb
- Cleanup exifhandler (#1570), thanks @KarlStraussberger
- Assign clientInfo in a default constructor (#1573), thanks @neheb
- pass by value and std::move (#1568), thanks @neheb
- use sizeof for snprintf (#1562), thanks @neheb
- Add configuration option for SopCast mimetypes (#1567), thanks @KarlStraussberger
- fix replace string functions (#1565), thanks @neheb
- lambda conversion (#1560), thanks @neheb
- clang-tidy: remove redundant specifiers (#1563), thanks @neheb
- clang-tidy: use auto (#1561), thanks @neheb
- clang-tidy: simplify boolean expression (#1564), thanks @neheb
- Configuration of folders for resources (#1549), thanks @KarlStraussberger
- remove const so move can be used (#1557), thanks @neheb
- replace const static with static const (#1558), thanks @neheb
- default member init (#1559), thanks @neheb
- use std::replace instead of replaceAllString (#1553), thanks @neheb
- replace stringHash with single accumulate call (#1552), thanks @neheb
- remove pointless blank lines (#1555), thanks @neheb
- match else and if blocks (#1551), thanks @neheb
- remove duplicate include (#1550), thanks @neheb
- use raw strings for multi line ones (#1548), thanks @neheb
- Dockerfile: add tzdata (#1546), thanks @neheb
- more make_unique changes (#1542), thanks @neheb
- make bultinClientInfo constexpr (#1538), thanks @neheb
- add m4a support for taglib (#1540), thanks @neheb
- add back several defaulted destructors (#1541), thanks @neheb
- avoid unused template warning (#1537), thanks @neheb
- clang: add missing move (#1539), thanks @neheb
- default init some members (#1536), thanks @neheb
- Cleanup legacy code (#1535), thanks @KarlStraussberger
- Clean up a bit (#1534), thanks @KarlStraussberger
- Cppcheck (#1532), thanks @neheb
- Add documentation and template for Apache/NGinx as reverse proxy (#1531), thanks @KarlStraussberger
- Fix script syntax (#1533), thanks @KarlStraussberger
- clang-tidy applied to tests (#1527), thanks @neheb
- Add build for ubuntu 21.04 hirsute hippo (#1530), thanks @KarlStraussberger
- create-config: Reset config dir to empty if not in command line (#1529), thanks @KarlStraussberger
- TagLib: Add support for aux data to all supported media types (#1526), thanks @KarlStraussberger
- Haiku patches (#1523), thanks @extrowerk
- clangh-tidy: non const reference removal (#1525), thanks @neheb
- manual structured binding conversions (#1522), thanks @neheb
- clang-tidy: pass unique_ptr by value (#1518), thanks @neheb
- clang-tidy: get rid of some long and short (#1521), thanks @neheb
- clang-tidy: fix some narrowing conversions (#1516), thanks @neheb
- clang-tidy: use auto&& to avoid warning (#1517), thanks @neheb
- clang-tidy: C to C++ headers (#1513), thanks @neheb
- clang-tidy: initialize some members (#1515), thanks @neheb
- Refactor SearchHandler to use ColumnMapper instead of hard coded texts. (#1510), thanks @KarlStraussberger
- mostly unique_ptr changes (#1500), thanks @neheb
- move some initializations up (#1493), thanks @neheb
- Revert "initialize several unique_ptrs" (#1494), thanks @KarlStraussberger
- initialize several unique_ptrs (#1483), thanks @neheb
- Bump main branch after release (#1492), thanks @KarlStraussberger
Please see our Documentation for how to install the latest Gerbera version on your system.