google / libultrahdr

Ultra HDR is a true HDR image format, and is backcompatible. libultrahdr is the reference codec for the Ultra HDR format. The codecs that support the format can render the HDR intent of the image on HDR displays; other codecs can still decode and display the SDR intent of the image.
https://developer.android.com/guide/topics/media/platform/hdr-image-format
Apache License 2.0
169 stars 29 forks source link

Request: Support prebuilt binaries for Major Linux distributions #20

Open ganadist opened 1 year ago

ganadist commented 1 year ago

Hello.

I'm considering to use this library on our media server implementation.

In my case, I'm using RHEL(Redhat Enterprise Linux)7 compliant distribution (CentOS 7)

In the case of the Linux operating environment, if EOL remains, there is a high tendency not to change the operating environment.

Currently, libultrahdr requires (or recommends)

For RHEL7, It seems Redhat provides Clang 15 for their service subscribers. But for CentOS7, it provides Clang 7 by SCL Also CentOS7 provides CMake 3.6.1 by SCL

So libultrahdr is hard to use with CentOS7 by toolchain requirements even if they are supported by upstream(RHEL7).

Providing prebuilt binaries for popular Linux distributions would make it easier to adapt this library and help spread the Ultra HDR format.

kmilos commented 7 months ago

Interested in packaging this for MSYS2, but have a question:

The archive created is libultrahdr.a, but the pkgconf file is libuhdr.pc. What should be the package called then? Can these two be synced to either name please?

E.g. although the project name is highway, the majority of distros package it as libhwy as both the .a and .pc have that name.

ram-mohan commented 7 months ago

@kmilos this may not be completely true, with this pull request all the names are in sync https://github.com/google/libultrahdr/pull/96

kmilos commented 7 months ago

@ram-mohan Thanks Ram, that's great, at least the .pc and .a are in sync now, which is the main thing.

spvkgn commented 5 months ago

Shared library should be versioned and install with appropriate symlinks for -dev package. See https://www.debian.org/doc/debian-policy/ch-sharedlibs#s-sharedlibs-runtime

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 1827267..892b83d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -567,7 +567,7 @@ set(UHDR_TARGET_NAME uhdr)
 add_library(${UHDR_TARGET_NAME})
 add_dependencies(${UHDR_TARGET_NAME} ${UHDR_CORE_LIB_NAME})
 target_link_libraries(${UHDR_TARGET_NAME} PRIVATE ${JPEG_LIBRARIES})
-set_target_properties(${UHDR_TARGET_NAME} PROPERTIES PUBLIC_HEADER ultrahdr_api.h)
+set_target_properties(${UHDR_TARGET_NAME} PROPERTIES VERSION ${PROJECT_VERSION} SOVERSION ${PROJECT_VERSION_MAJOR} PUBLIC_HEADER ultrahdr_api.h)
 combine_static_libs(${UHDR_CORE_LIB_NAME} ${UHDR_TARGET_NAME})

 if(UHDR_ENABLE_INSTALL)
.
├── include
│   └── ultrahdr_api.h
└── lib
    ├── libuhdr.so -> libuhdr.so.1
    ├── libuhdr.so.1 -> libuhdr.so.1.0
    ├── libuhdr.so.1.0
    └── pkgconfig
        └── libuhdr.pc

Also need to install appropriate static library.

kmilos commented 2 months ago

Starting to trickle in 😉

https://repology.org/project/libultrahdr/versions