diff --git a/bellagio-0.9.3-dynamicloader-linking.patch b/bellagio-0.9.3-dynamicloader-linking.patch new file mode 100644 index 0000000..88e9672 --- /dev/null +++ b/bellagio-0.9.3-dynamicloader-linking.patch @@ -0,0 +1,16 @@ +When libomxdynamicloader.so is loaded, it complains that RM_Deinit can't be resolved. +Link explicitly against omxil-bellagio so that ld.so can find the reference. + +Signed-off-by: Qais Yousef + +--- bellagio-0.9.3/src/dynamic_loader/Makefile.am.old 2012-03-23 15:07:47.379021034 +0000 ++++ bellagio-0.9.3/src/dynamic_loader/Makefile.am 2012-03-23 15:08:47.563034818 +0000 +@@ -3,7 +3,7 @@ + omxdynamicloader_LTLIBRARIES = libomxdynamicloader.la + libomxdynamicloader_la_SOURCES = ste_dynamic_component_loader.c ste_dynamic_component_loader.h + +-libomxdynamicloader_la_LDFLAGS = ++libomxdynamicloader_la_LDFLAGS = -L$(abs_top_srcdir)/src/.libs -lomxil-bellagio + libomxdynamicloader_la_CFLAGS = -I$(top_srcdir)/include \ + -I$(top_srcdir)/src \ + -I$(top_srcdir)/src/base \ diff --git a/bellagio-0.9.3-parallel-build.patch b/bellagio-0.9.3-parallel-build.patch new file mode 100644 index 0000000..767bbeb --- /dev/null +++ b/bellagio-0.9.3-parallel-build.patch @@ -0,0 +1,16 @@ +Fix dependency issue to allow parallel build + +Signed-off-by: Qais Yousef + +Index: bellagio-0.9.3/src/Makefile.am +=================================================================== +--- bellagio-0.9.3.orig/src/Makefile.am ++++ bellagio-0.9.3/src/Makefile.am +@@ -8,6 +8,7 @@ omxregister_bellagio_SOURCES = omxregist + omxregister_bellagio_CFLAGS = -DOMXILCOMPONENTSPATH=\"$(plugindir)/\" \ + -I$(top_srcdir)/include + omxregister_bellagio_LDFLAGS = -lomxil-bellagio -L$(builddir) ++omxregister_bellagio_DEPENDENCIES = libomxil-bellagio.la + + lib_LTLIBRARIES = libomxil-bellagio.la + libomxil_bellagio_la_SOURCES = component_loader.h \ diff --git a/bellagio-0.9.3-segfault-on-removeFromWaitResource.patch b/bellagio-0.9.3-segfault-on-removeFromWaitResource.patch new file mode 100644 index 0000000..f52a2c3 --- /dev/null +++ b/bellagio-0.9.3-segfault-on-removeFromWaitResource.patch @@ -0,0 +1,37 @@ +We always access globalComponentList[] at indexComponent=-1 which causes a +segfault. Use i as the index instead. + +Signed-off-by: Qais Yousef + +--- bellagio-0.9.3/src/omx_reference_resource_manager.c.old 2012-03-13 10:15:25.743940980 +0000 ++++ bellagio-0.9.3/src/omx_reference_resource_manager.c 2012-03-13 10:18:02.201971009 +0000 +@@ -485,7 +485,6 @@ + OMX_ERRORTYPE RM_removeFromWaitForResource(OMX_COMPONENTTYPE *openmaxStandComp) { + omx_base_component_PrivateType* omx_base_component_Private; + int i = 0; +- int indexComponent = -1; + + DEBUG(DEB_LEV_FUNCTION_NAME, "In %s\n", __func__); + omx_base_component_Private = (omx_base_component_PrivateType*)openmaxStandComp->pComponentPrivate; +@@ -493,16 +492,13 @@ + while(listOfcomponentRegistered[i].component_name != NULL ) { + if (!strcmp(listOfcomponentRegistered[i].component_name, omx_base_component_Private->name)) { + // found component in the list of the resource manager +- removeElemFromList(&globalComponentList[indexComponent], openmaxStandComp); +- break; ++ removeElemFromList(&globalComponentList[i], openmaxStandComp); ++ DEBUG(DEB_LEV_FUNCTION_NAME, "Out of %s\n", __func__); ++ return OMX_ErrorNone; + } + i++; + } +- if (indexComponent <0) { +- // No resource to be handled +- DEBUG(DEB_LEV_ERR, "In %s No resource to be handled\n", __func__); +- return OMX_ErrorNone; +- } +- DEBUG(DEB_LEV_FUNCTION_NAME, "Out of %s\n", __func__); ++ // No resource to be handled ++ DEBUG(DEB_LEV_ERR, "In %s No resource to be handled\n", __func__); + return OMX_ErrorNone; + } diff --git a/libomxil-bellagio-0.9.3-fix_Werror.patch b/libomxil-bellagio-0.9.3-fix_Werror.patch new file mode 100644 index 0000000..9b02f1f --- /dev/null +++ b/libomxil-bellagio-0.9.3-fix_Werror.patch @@ -0,0 +1,79 @@ +@@ -, +, @@ + OMX_INDEXTYPE/OMX_INDEXVENDORTYPE in one switch + src/base/omx_base_component.c | 54 ++++++++++++++++++++++------------------- + 1 files changed, 29 insertions(+), 25 deletions(-) +--- a/src/base/omx_base_component.c ++++ a/src/base/omx_base_component.c +@@ -915,14 +915,6 @@ OSCL_EXPORT_REF OSCL_EXPORT_REF OMX_ERRORTYPE omx_base_component_GetParameter( + return OMX_ErrorBadParameter; + } + switch(nParamIndex) { +- case OMX_IndexParameterThreadsID: +- if ((err = checkHeader(ComponentParameterStructure, sizeof(OMX_PARAM_BELLAGIOTHREADS_ID))) != OMX_ErrorNone) { +- break; +- } +- threadID = (OMX_PARAM_BELLAGIOTHREADS_ID *)ComponentParameterStructure; +- threadID->nThreadBufferMngtID = omx_base_component_Private->bellagioThreads->nThreadBufferMngtID; +- threadID->nThreadMessageID = omx_base_component_Private->bellagioThreads->nThreadMessageID; +- break; + case OMX_IndexParamAudioInit: + case OMX_IndexParamVideoInit: + case OMX_IndexParamImageInit: +@@ -988,28 +980,40 @@ OSCL_EXPORT_REF OSCL_EXPORT_REF OMX_ERRORTYPE omx_base_component_GetParameter( + } + } + break; +- case OMX_IndexVendorCompPropTunnelFlags: +- pPropTunnelSetup = (OMX_VENDOR_PROP_TUNNELSETUPTYPE*)ComponentParameterStructure; ++ default: ++ /* additional switch statement for extended OMX_INDEXTYPE */ ++ switch((OMX_INDEXVENDORTYPE) nParamIndex) { ++ case OMX_IndexParameterThreadsID: ++ if ((err = checkHeader(ComponentParameterStructure, sizeof(OMX_PARAM_BELLAGIOTHREADS_ID))) != OMX_ErrorNone) { ++ break; ++ } ++ threadID = (OMX_PARAM_BELLAGIOTHREADS_ID *)ComponentParameterStructure; ++ threadID->nThreadBufferMngtID = omx_base_component_Private->bellagioThreads->nThreadBufferMngtID; ++ threadID->nThreadMessageID = omx_base_component_Private->bellagioThreads->nThreadMessageID; ++ break; ++ case OMX_IndexVendorCompPropTunnelFlags: ++ pPropTunnelSetup = (OMX_VENDOR_PROP_TUNNELSETUPTYPE*)ComponentParameterStructure; + +- if (pPropTunnelSetup->nPortIndex >= (omx_base_component_Private->sPortTypesParam[OMX_PortDomainAudio].nPorts + +- omx_base_component_Private->sPortTypesParam[OMX_PortDomainVideo].nPorts + +- omx_base_component_Private->sPortTypesParam[OMX_PortDomainImage].nPorts + +- omx_base_component_Private->sPortTypesParam[OMX_PortDomainOther].nPorts)) { ++ if (pPropTunnelSetup->nPortIndex >= (omx_base_component_Private->sPortTypesParam[OMX_PortDomainAudio].nPorts + ++ omx_base_component_Private->sPortTypesParam[OMX_PortDomainVideo].nPorts + ++ omx_base_component_Private->sPortTypesParam[OMX_PortDomainImage].nPorts + ++ omx_base_component_Private->sPortTypesParam[OMX_PortDomainOther].nPorts)) { + +- DEBUG(DEB_LEV_ERR,"In %s OMX_IndexVendorCompPropTunnelFlags nPortIndex=%d Line=%d \n", +- __func__,(int)pPropTunnelSetup->nPortIndex,__LINE__); ++ DEBUG(DEB_LEV_ERR,"In %s OMX_IndexVendorCompPropTunnelFlags nPortIndex=%d Line=%d \n", ++ __func__,(int)pPropTunnelSetup->nPortIndex,__LINE__); + +- return OMX_ErrorBadPortIndex; +- } ++ return OMX_ErrorBadPortIndex; ++ } + +- pPort = omx_base_component_Private->ports[pPropTunnelSetup->nPortIndex]; ++ pPort = omx_base_component_Private->ports[pPropTunnelSetup->nPortIndex]; + +- pPropTunnelSetup->nTunnelSetup.nTunnelFlags = pPort->nTunnelFlags; +- pPropTunnelSetup->nTunnelSetup.eSupplier = pPort->eBufferSupplier; +- break; +- default: +- err = OMX_ErrorUnsupportedIndex; +- break; ++ pPropTunnelSetup->nTunnelSetup.nTunnelFlags = pPort->nTunnelFlags; ++ pPropTunnelSetup->nTunnelSetup.eSupplier = pPort->eBufferSupplier; ++ break; ++ default: ++ err = OMX_ErrorUnsupportedIndex; ++ break; ++ } + } + DEBUG(DEB_LEV_FUNCTION_NAME, "Out of %s for component %p\n", __func__, hComponent); + return err; diff --git a/libomxil-bellagio-0.9.3-memcpy.patch b/libomxil-bellagio-0.9.3-memcpy.patch new file mode 100644 index 0000000..152f38c --- /dev/null +++ b/libomxil-bellagio-0.9.3-memcpy.patch @@ -0,0 +1,12 @@ +diff -up libomxil-bellagio-0.9.3/src/base/omx_base_component.c.orig libomxil-bellagio-0.9.3/src/base/omx_base_component.c +--- libomxil-bellagio-0.9.3/src/base/omx_base_component.c.orig 2018-07-20 12:32:03.918664474 +0200 ++++ libomxil-bellagio-0.9.3/src/base/omx_base_component.c 2018-07-20 15:11:37.940614285 +0200 +@@ -827,7 +827,7 @@ OSCL_EXPORT_REF OMX_ERRORTYPE omx_base_c + uuid[0] = (OMX_U32)omx_component; + uuid[1] = getpid(); + uuid[2] = getuid(); +- memcpy(*pComponentUUID, uuid, 3*sizeof(uuid)); ++ memcpy(*pComponentUUID, uuid, sizeof(uuid)); + + DEBUG(DEB_LEV_FUNCTION_NAME, "Out of %s for component %p\n", __func__, hComponent); + return OMX_ErrorNone; diff --git a/libomxil-bellagio-0.9.3-nodoc.patch b/libomxil-bellagio-0.9.3-nodoc.patch new file mode 100644 index 0000000..3da2e47 --- /dev/null +++ b/libomxil-bellagio-0.9.3-nodoc.patch @@ -0,0 +1,11 @@ +diff -up libomxil-bellagio-0.9.3/Makefile.am.nodoc libomxil-bellagio-0.9.3/Makefile.am +--- libomxil-bellagio-0.9.3/Makefile.am.nodoc 2011-01-12 08:53:26.000000000 +0100 ++++ libomxil-bellagio-0.9.3/Makefile.am 2012-04-23 13:46:15.410823381 +0200 +@@ -7,7 +7,6 @@ EXTRA_DIST = libomxil-bellagio.spec + pkgconfigdir = $(libdir)/pkgconfig + pkgconfig_DATA = libomxil-bellagio.pc + +-docdir = $(DESTDIR)$(prefix)/share/doc/@PACKAGE@ + doc_DATA = README \ + ChangeLog \ + TODO diff --git a/libomxil-bellagio-0.9.3-unused.patch b/libomxil-bellagio-0.9.3-unused.patch new file mode 100644 index 0000000..936084c --- /dev/null +++ b/libomxil-bellagio-0.9.3-unused.patch @@ -0,0 +1,20 @@ +diff -up libomxil-bellagio-0.9.3/src/omxregister.c.unused libomxil-bellagio-0.9.3/src/omxregister.c +--- libomxil-bellagio-0.9.3/src/omxregister.c.unused 2011-01-12 08:53:26.000000000 +0100 ++++ libomxil-bellagio-0.9.3/src/omxregister.c 2012-12-10 22:02:28.621695659 +0100 +@@ -248,7 +248,15 @@ static int buildComponentsList(FILE* omx + } + fptr(stComponents); + err = fwrite(lib_absolute_path, 1, strlen(lib_absolute_path), omxregistryfp); +- err = fwrite("\n", 1, 1, omxregistryfp); ++ if (err != strlen(lib_absolute_path)) { ++ DEBUG(DEB_LEV_ERR, "Failed to write %zu bytes to fd %d\n", strlen(lib_absolute_path), fileno(omxregistryfp)); ++ continue; ++ } ++ err = fwrite("\n", 1, strlen(buffer), omxregistryfp); ++ if (err != strlen(buffer)) { ++ DEBUG(DEB_LEV_ERR, "Failed to write %zu bytes to fd %d\n", strlen(buffer), fileno(omxregistryfp)); ++ continue; ++ } + + + for (i = 0; inqualitylevels = 0; +@@ -266,14 +266,14 @@ + } + } + if (allNames == NULL) { +- allNames = malloc(sizeof(nameList)); ++ allNames = calloc(1, sizeof(nameList)); + currentName = allNames; + } else { +- currentName->next = malloc(sizeof(nameList)); ++ currentName->next = calloc(1, sizeof(nameList)); + currentName = currentName->next; + } + currentName->next = NULL; +- currentName->name = malloc(strlen(stComponents[i]->name) + 1); ++ currentName->name = calloc(strlen(stComponents[i]->name) + 1, sizeof(char)); + strcpy(currentName->name, stComponents[i]->name); + *(currentName->name + strlen(currentName->name)) = '\0'; + + diff --git a/libomxil-bellagio-0.9.3.tar.gz b/libomxil-bellagio-0.9.3.tar.gz new file mode 100644 index 0000000..a7078b3 Binary files /dev/null and b/libomxil-bellagio-0.9.3.tar.gz differ diff --git a/libomxil-bellagio.spec b/libomxil-bellagio.spec new file mode 100644 index 0000000..3a705a3 --- /dev/null +++ b/libomxil-bellagio.spec @@ -0,0 +1,102 @@ +Name: libomxil-bellagio +Version: 0.9.3 +Release: 21 +Summary: OpenMAX Integration Layer +License: LGPLv2+ +URL: http://omxil.sourceforge.net +Source0: http://downloads.sourceforge.net/omxil/%{name}-%{version}.tar.gz +Patch0001: libomxil-bellagio-0.9.3-fix_Werror.patch +Patch0002: libomxil-bellagio-0.9.3-unused.patch +Patch0003: libomxil-bellagio-0.9.3-nodoc.patch +Patch0004: bellagio-0.9.3-dynamicloader-linking.patch +Patch0005: bellagio-0.9.3-parallel-build.patch +Patch0006: bellagio-0.9.3-segfault-on-removeFromWaitResource.patch +Patch0007: omxil_version.patch +Patch0008: libomxil-bellagio-0.9.3-memcpy.patch +Patch0009: libomxil-bellagio-0.9.3-valgrind_register.patch +BuildRequires: doxygen libtool gcc-c++ + +%description +OpenMAX Integration Layer (IL) is a standard API to access Multimedia Components +on mobile platforms. By means of the OpenMAX IL API, multimedia frameworks can +access hardware accelerators on platforms that provide it. + +%package devel +Summary: Development files for libomxil-bellagio +Requires: %{name} = %{version}-%{release} + +%description devel +This package contains libraries and header files for developing applications using libomxil-bellagio. + +%package test +Summary: Test cases for libomxil-bellagio +Requires: %{name} = %{version}-%{release} + +%description test +The libomxil-bellagio-test package contains binaries for testing libomxil-bellagio. + +%package help +Summary: man info for libomxil-bellagio + +%description help +The libomxil-bellagio-help package contains man information for libomxil-bellagio. + +%prep +%autosetup -p1 +autoreconf -vif + + +%build +%configure --disable-static + +sed -i.rpath 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool +sed -i.rpath 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool + +%make_build || %make_build + +ln -sf src bellagio +make check LDFLAGS="-L$PWD/src/.libs" CFLAGS="$RPM_OPT_FLAGS -I$PWD/include -I$PWD" + + +%install +%make_install +%delete_la + +install -d $RPM_BUILD_ROOT%{_bindir} +install -pm 0755 test/components/audio_effects/.libs/{omxaudiomixertest,omxvolcontroltest} $RPM_BUILD_ROOT%{_bindir} +install -pm 0755 test/components/resource_manager/.libs/{omxprioritytest,omxrmtest} $RPM_BUILD_ROOT%{_bindir} + +%post +/sbin/ldconfig + +%postun +/sbin/ldconfig + +%files +%exclude %{_docdir}/%{name}/README +%exclude %{_docdir}/%{name}/TODO +%exclude %{_libdir}/pkgconfig +%exclude %{_libdir}/libomxil-bellagio.so +%exclude %{_libdir}/pkgconfig/libomxil-bellagio.pc +%exclude %{_bindir}/omxregister-bellagio +%doc AUTHORS ChangeLog COPYING +%{_bindir}/omxregister-bellagio +%{_libdir}/* + + +%files devel +%{_includedir}/* +%{_libdir}/*.so +%{_libdir}/pkgconfig/libomxil-bellagio.pc + +%files test +%{_bindir}/* + +%files help +%{_mandir}/man1/omxregister-bellagio.1.* +%doc NEWS README TODO + + +%changelog +* Tue Dec 31 2019 zoushuangshuang - 0.9.3-21 +- Package init diff --git a/omxil_version.patch b/omxil_version.patch new file mode 100644 index 0000000..b7d7dac --- /dev/null +++ b/omxil_version.patch @@ -0,0 +1,21 @@ +--- a/include/OMX_Types.h.orig 2011-01-12 08:53:26.000000000 +0100 ++++ b/include/OMX_Types.h 2013-02-25 09:53:55.000000000 +0100 +@@ -314,6 +314,18 @@ + * platform & operating specific object used to reference the window */ + typedef void* OMX_NATIVE_WINDOWTYPE; + ++ ++/** Define the OMX IL version that corresponds to this set of header files. ++ * We also define a combined version that can be used to write or compare ++ * values of the 32bit nVersion field, assuming a little endian architecture */ ++#define OMX_VERSION_MAJOR 1 ++#define OMX_VERSION_MINOR 1 ++#define OMX_VERSION_REVISION 2 ++#define OMX_VERSION_STEP 0 ++ ++#define OMX_VERSION ((OMX_VERSION_STEP<<24) | (OMX_VERSION_REVISION<<16) | (OMX_VERSION_MINOR<<8) | OMX_VERSION_MAJOR) ++ ++ + /** The OMX_VERSIONTYPE union is used to specify the version for + a structure or component. For a component, the version is entirely + specified by the component vendor. Components doing the same function