Hello community, here is the log from the commit of package crystalhd-libs for openSUSE:Factory checked in at Mon Apr 4 16:36:20 CEST 2011. -------- --- crystalhd-libs/crystalhd-libs.changes 2010-12-14 17:40:37.000000000 +0100 +++ /mounts/work_src_done/STABLE/crystalhd-libs/crystalhd-libs.changes 2011-03-30 13:53:33.000000000 +0200 @@ -1,0 +2,13 @@ +Thu Mar 24 12:56:07 CET 2011 - tiwai@suse.de + +- Version 3.6.5: + Fix crash with two instances opened at the same time + +------------------------------------------------------------------- +Mon Jan 24 18:57:07 UTC 2011 - andrea@opensuse.org + +- added crystalhd-libs-define-first.patch: this patch fix building + failures. bc_dts_defs.h us types defined into bc_dts_types.h that + was included after instead of before + +------------------------------------------------------------------- calling whatdependson for head-i586 Old: ---- crystalhd-libs_3.6.4-1.tar.bz2 New: ---- crystalhd-libs-define-first.patch crystalhd-libs_3.6.5-1.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ crystalhd-libs.spec ++++++ --- /var/tmp/diff_new_pack.DF8anT/_old 2011-04-04 16:35:24.000000000 +0200 +++ /var/tmp/diff_new_pack.DF8anT/_new 2011-04-04 16:35:24.000000000 +0200 @@ -1,7 +1,7 @@ # -# spec file for package crystalhd-libs (Version 3.6.4) +# spec file for package crystalhd-libs # -# Copyright (c) 2010 SUSE LINUX Products GmbH, Nuernberg, Germany. +# Copyright (c) 2011 SUSE LINUX Products GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -21,13 +21,14 @@ Name: crystalhd-libs BuildRequires: gcc-c++ Summary: Broadcom Crystal HD device interface library -Version: 3.6.4 +Version: 3.6.5 Release: 1 License: LGPLv2.1+ Group: System/Libraries Source0: crystalhd-libs_%{version}-1.tar.bz2 Source1: README Source2: LICENSE +Patch0: %name-define-first.patch Url: http://www.broadcom.com/support/crystal_hd/ ExclusiveArch: %ix86 x86_64 BuildRoot: %{_tmppath}/%{name}-%{version}-build @@ -65,6 +66,7 @@ %prep %setup -q -n crystalhd-libs +%patch0 -p1 cp %{SOURCE1} . cp %{SOURCE2} . ++++++ README ++++++ --- /var/tmp/diff_new_pack.DF8anT/_old 2011-04-04 16:35:24.000000000 +0200 +++ /var/tmp/diff_new_pack.DF8anT/_new 2011-04-04 16:35:24.000000000 +0200 @@ -1,8 +1,8 @@ -Broadcom CrystalHD Linux Software Release v3.200 +Broadcom CrystalHD Linux Software Release v3.205 This is beta release of the Linux driver and application software with support for the BCM70012 and BCM70015 -This is a source release with Ubuntu 10.10 32-bit binary packages +This is a source release with Ubuntu 10.10 32-bit (SSE enabled) binary packages FEATURES SUPPORTED - @@ -12,7 +12,8 @@ FIXED ISSUES -Added support to resume the HW on resume from S3/S4 +Fixed issue with crash when two instances of the decoder were opened +Allow building on non-SSE CPUs - use "NOLIB_SSE=yes make" in the command to build the library KNOWN ISSUES ++++++ crystalhd-libs-define-first.patch ++++++ diff -uNr crystalhd-libs/libcrystalhd_if.h new-crystalhd-libs//libcrystalhd_if.h --- crystalhd-libs/libcrystalhd_if.h 2010-12-07 00:15:46.000000000 +0100 +++ new-crystalhd-libs//libcrystalhd_if.h 2011-01-24 19:52:02.845076999 +0100 @@ -29,8 +29,8 @@ #ifndef _BCM_LDIL_IF_H_ #define _BCM_LDIL_IF_H_ -#include "bc_dts_defs.h" #include "bc_dts_types.h" +#include "bc_dts_defs.h" #define FLEA_MAX_TRICK_MODE_SPEED 6 ++++++ crystalhd-libs_3.6.4-1.tar.bz2 -> crystalhd-libs_3.6.5-1.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/crystalhd-libs/debian/changelog new/crystalhd-libs/debian/changelog --- old/crystalhd-libs/debian/changelog 2010-12-07 00:15:46.000000000 +0100 +++ new/crystalhd-libs/debian/changelog 2011-03-18 04:32:08.000000000 +0100 @@ -1,4 +1,4 @@ -crystalhd-libs (3.6.4-1) unstable; urgency=low +crystalhd-libs (3.6.5-1) unstable; urgency=low * Initial debian package release - Made for Ubuntu 10.04 * Added support to detect HW type to support additional codecs @@ -11,5 +11,6 @@ * Fixed hard hang with multiple applications trying to open the HW simultanously * Use IOCTL to close handles when the decoder is being closed * Added support to restart the HW when returning from S3/4/5 + * Fixed issue with crash when multiple instances of decoder are opened - -- Narendra Sankar <nsankar@broadcom.com> Mon, 06 Dec 2010 15:05:23 -0800 + -- Narendra Sankar <nsankar@broadcom.com> Thu, 17 Mar 2011 20:31:13 -0700 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/crystalhd-libs/libcrystalhd_if.cpp new/crystalhd-libs/libcrystalhd_if.cpp --- old/crystalhd-libs/libcrystalhd_if.cpp 2010-12-07 00:15:46.000000000 +0100 +++ new/crystalhd-libs/libcrystalhd_if.cpp 2011-03-18 04:32:08.000000000 +0100 @@ -529,8 +529,10 @@ else drvMode = FixFlags; + DtsGetContext(*hDevice)->DrvMode = FixFlags; + if( (Sts = DtsNotifyOperatingMode(*hDevice,drvMode)) != BC_STS_SUCCESS){ - DebugLog_Trace(LDIL_DBG,"Notify Operating Mode Failed\n"); + DebugLog_Trace(LDIL_DBG,"Notify Operating Mode Failed:%x\n", Sts); DtsReleaseInterface(DtsGetContext(*hDevice)); DtsDelDilShMem(); return Sts; @@ -598,6 +600,12 @@ DtsGetContext(*hDevice)->ProcessID = processID; + // now that the driver is up and running, start the tx thread + DtsGetContext(*hDevice)->txThreadStart = true; + + // set global user handle for future checking for validity of handle close + DtsSetglobHandle(drvHandle); + //DtsDevRegisterWr( hDevice,UartSelectA, 3); exit: return Sts; @@ -619,6 +627,8 @@ if (!DtsChkPID(Ctx->ProcessID)) return BC_STS_ERROR; + DebugLog_Trace(LDIL_DBG,"DtsDeviceClose: Closing HW with mode %d\n", Ctx->OpMode); + if(Ctx->State != BC_DEC_STATE_CLOSE){ DtsCloseDecoder(hDevice); } @@ -879,6 +889,12 @@ else if (Ctx->DevId == BC_PCI_DEVID_FLEA) StreamType = BC_STREAM_TYPE_PES; +// // Moved notify mode to the driver to decoder open to allow multiple handles to be opened to the HW +// if( (sts = DtsNotifyOperatingMode(hDevice,Ctx->DrvMode)) != BC_STS_SUCCESS){ +// DebugLog_Trace(LDIL_DBG,"Notify Operating Mode Failed:%x\n", sts); +// return sts; +// } + sts = DtsRecoverableDecOpen(hDevice,StreamType); if(sts != BC_STS_SUCCESS ) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/crystalhd-libs/libcrystalhd_int_if.cpp new/crystalhd-libs/libcrystalhd_int_if.cpp --- old/crystalhd-libs/libcrystalhd_int_if.cpp 2010-12-07 00:15:46.000000000 +0100 +++ new/crystalhd-libs/libcrystalhd_int_if.cpp 2011-03-18 04:32:08.000000000 +0100 @@ -33,7 +33,9 @@ #include "libcrystalhd_int_if.h" #include "libcrystalhd_fwcmds.h" +#ifndef __NOLIB_SSE__ #include <emmintrin.h> +#endif #define SV_MAX_LINE_SZ 128 #define PCI_GLOBAL_CONTROL MISC2_GLOBAL_CTRL @@ -1433,6 +1435,7 @@ static void fast_memcpy(uint8_t *dst, const uint8_t *src, uint32_t count) { // tested +#ifndef __NOLIB_SSE__ if (gSSE2) { if (((((uintptr_t) dst) & 0xf) == 0) && ((((uintptr_t) src) & 0xf) == 0)) @@ -1462,6 +1465,7 @@ } } } +#endif // __NOLIB_SSE__ while (count --) *dst++ = *src++; @@ -1504,6 +1508,7 @@ for (__y = 0; __y < height; __y++) { +#ifndef __NOLIB_SSE__ if (gSSE2) { if (((((uintptr_t) dstY) & 0xf) == 0) && ((((uintptr_t) srcY) & 0xf) == 0)) @@ -1529,6 +1534,7 @@ } } } +#endif // __NOLIB_SSE__ while (x < srcWidth-1) { @@ -1554,14 +1560,16 @@ strideY += dstWidth; strideUV += dstWidth; +#ifndef __NOLIB_SSE__ static __m128i mask = _mm_set_epi16(0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff, 0x00ff); +#endif // __NOLIB_SSE__ for (__y = 0; __y < height; __y += 2) { x = 0; // first line: Y and UV extraction - +#ifndef __NOLIB_SSE__ if (gSSE2) { if (((((uintptr_t) dstY) & 0xf) == 0) && ((((uintptr_t) srcY) & 0xf) == 0) && ((((uintptr_t) dstUV) & 0xf) == 0)) @@ -1605,7 +1613,7 @@ } } } - +#endif // __NOLIB_SSE__ while (x < srcWidth-1) { @@ -1622,6 +1630,7 @@ // second line: just Y x = 0; +#ifndef __NOLIB_SSE__ if (gSSE2) { if (((((uintptr_t) dstY) & 0xf) == 0) && ((((uintptr_t) srcY) & 0xf) == 0)) @@ -1655,6 +1664,7 @@ } } } +#endif // __NOLIB_SSE__ while (x < srcWidth-1) { @@ -1691,7 +1701,7 @@ { // first line x = 0; - +#ifndef __NOLIB_SSE__ if (gSSE2) { if (((((uintptr_t) dstY) & 0xf) == 0) && ((((uintptr_t) srcY) & 0xf) == 0)) @@ -1719,6 +1729,7 @@ } } } +#endif // __NOLIB_SSE__ while (x < srcWidth-1) { @@ -1736,7 +1747,7 @@ // second line x = 0; - +#ifndef __NOLIB_SSE__ if (gSSE2) { if (((((uintptr_t) dstY) & 0xf) == 0) && ((((uintptr_t) srcY) & 0xf) == 0)) @@ -1768,6 +1779,7 @@ } } } +#endif // __NOLIB_SSE__ while (x < srcWidth-1) { @@ -1790,7 +1802,7 @@ while (__y < height) { x = 0; - +#ifndef __NOLIB_SSE__ if (gSSE2) { if (((((uintptr_t) dstY) & 0xf) == 0) && ((((uintptr_t) srcY) & 0xf) == 0)) @@ -1818,6 +1830,7 @@ } } } +#endif // __NOLIB_SSE__ while (x < srcWidth-1) { @@ -1850,7 +1863,7 @@ { // first line x = 0; - +#ifndef __NOLIB_SSE__ if (gSSE2) { if (((((uintptr_t) dstY) & 0xf) == 0) && ((((uintptr_t) srcY) & 0xf) == 0)) @@ -1878,6 +1891,7 @@ } } } +#endif // __NOLIB_SSE__ while (x < srcWidth-1) { @@ -1895,7 +1909,7 @@ // second line x = 0; - +#ifndef __NOLIB_SSE__ if (gSSE2) { if (((((uintptr_t) dstY) & 0xf) == 0) && ((((uintptr_t) srcY) & 0xf) == 0)) @@ -1927,6 +1941,7 @@ } } } +#endif // __NOLIB_SSE__ while (x < srcWidth-1) { @@ -1947,7 +1962,7 @@ while (__y < height) { x = 0; - +#ifndef __NOLIB_SSE__ if (gSSE2) { if (((((uintptr_t) dstY) & 0xf) == 0) && ((((uintptr_t) srcY) & 0xf) == 0)) @@ -1975,7 +1990,7 @@ } } } - +#endif // __NOLIB_SSE__ while (x < srcWidth-1) { dstY[x*2+1] = srcY [x+0]; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/crystalhd-libs/libcrystalhd_priv.cpp new/crystalhd-libs/libcrystalhd_priv.cpp --- old/crystalhd-libs/libcrystalhd_priv.cpp 2010-12-07 00:15:46.000000000 +0100 +++ new/crystalhd-libs/libcrystalhd_priv.cpp 2011-03-18 04:32:08.000000000 +0100 @@ -253,6 +253,17 @@ bc_dil_glob_ptr->g_bDecOpened = bDecOpen; } + +void DtsSetglobHandle(uint32_t umodeHandle) +{ + bc_dil_glob_ptr->umodeHandle = umodeHandle; +} + +uint32_t DtsGetglobHandle(void) +{ + return bc_dil_glob_ptr->umodeHandle; +} + /*============== Global shared area usage End.. ======================*/ #define TOP_FIELD_FLAG 0x01 @@ -1566,6 +1577,9 @@ if(BC_STS_SUCCESS != txBufInit(&Ctx->circBuf, CIRC_TX_BUF_SIZE)) sts = BC_STS_INSUFF_RES; + Ctx->txThreadStart = false; + Ctx->txThreadExit = false; + pthread_attr_init(&thread_attr); pthread_attr_setdetachstate(&thread_attr, PTHREAD_CREATE_JOINABLE); pthread_create(&Ctx->htxThread, &thread_attr, txThreadProc, Ctx); @@ -1589,7 +1603,6 @@ if(!Ctx) return BC_STS_INV_ARG; - // Exit TX thread Ctx->txThreadExit = true; // wait to make sure the thread exited @@ -1610,6 +1623,8 @@ DebugLog_Trace(LDIL_DBG,"DtsDeviceClose: Close Handle Failed with error %d\n",errno); } + DtsSetglobHandle(0); + DtsSetHwInitSts(BC_DIL_HWINIT_NOT_YET); DtsDelDilShMem(); @@ -2496,6 +2511,9 @@ if(ret) return FALSE; + while(!Ctx->txThreadStart) + usleep(10 * 1000); + while(!Ctx->txThreadExit) { // First check the status of the HW diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/crystalhd-libs/libcrystalhd_priv.h new/crystalhd-libs/libcrystalhd_priv.h --- old/crystalhd-libs/libcrystalhd_priv.h 2010-12-07 00:15:46.000000000 +0100 +++ new/crystalhd-libs/libcrystalhd_priv.h 2011-03-18 04:32:08.000000000 +0100 @@ -299,6 +299,7 @@ TXBUFFER circBuf; bool txThreadExit; // Handle to event to indicate to the tx thread to exit + bool txThreadStart; // trigger to the tx thread to start polling the driver pthread_t htxThread; // Handle to TX thread uint8_t *alignBuf; @@ -381,6 +382,7 @@ BC_DTS_STATS stats; pid_t g_nProcID; bool g_bDecOpened; + uint32_t umodeHandle; uint32_t DevID; } bc_dil_glob_s; @@ -398,6 +400,8 @@ BC_DTS_STATS * DtsGetgStats (void); uint32_t DtsGetgDevID(void); void DtsSetgDevID(uint32_t DevID); +void DtsSetglobHandle(uint32_t userHandle); +uint32_t DtsGetglobHandle(void); BC_STATUS DtsGetDevType(uint32_t *pDevID, uint32_t *pVendID, uint32_t *pRevID); uint32_t DtsGetDevID(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/crystalhd-libs/libcrystalhd_version.h new/crystalhd-libs/libcrystalhd_version.h --- old/crystalhd-libs/libcrystalhd_version.h 2010-12-07 00:15:46.000000000 +0100 +++ new/crystalhd-libs/libcrystalhd_version.h 2011-03-18 04:32:08.000000000 +0100 @@ -63,7 +63,7 @@ /*======================= Device Interface Library ========================*/ #define DIL_MAJOR_VERSION BRCM_MAJOR_VERSION -#define DIL_MINOR_VERSION 22 +#define DIL_MINOR_VERSION 23 #define DIL_REVISION 0 #define DIL_RC_FILE_VERSION STRINGIFY_VERSION(DIL_MAJOR_VERSION,DIL_MINOR_VERSION,DIL_REVISION) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Remember to have fun... -- To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org