From 1464880eb04995cf06a1975337add152e81cd55d2bbf1bcb64efff895d80d2c6 Mon Sep 17 00:00:00 2001 From: Dave Plater Date: Fri, 15 Apr 2011 19:18:32 +0000 Subject: [PATCH] Accepting request 67567 from home:TheBlackCat Would have been nice if you had fixed the unescaped macros then I could have forwarded to factory. OBS-URL: https://build.opensuse.org/request/show/67567 OBS-URL: https://build.opensuse.org/package/show/multimedia:libs/dirac?expand=0&rev=19 --- ...d-memory-read-that-causes-the-encode.patch | 52 +++++++++++++++++++ baselibs.conf | 2 + dirac.changes | 17 ++++++ dirac.spec | 41 +++++++++++---- 4 files changed, 103 insertions(+), 9 deletions(-) create mode 100644 0001-Fix-uninitialised-memory-read-that-causes-the-encode.patch create mode 100644 baselibs.conf diff --git a/0001-Fix-uninitialised-memory-read-that-causes-the-encode.patch b/0001-Fix-uninitialised-memory-read-that-causes-the-encode.patch new file mode 100644 index 0000000..0392ec5 --- /dev/null +++ b/0001-Fix-uninitialised-memory-read-that-causes-the-encode.patch @@ -0,0 +1,52 @@ +From 88fae6224b54ecf92ac6e3ae5083c3f352adc798 Mon Sep 17 00:00:00 2001 +From: Anuradha Suraparaju +Date: Fri, 17 Apr 2009 17:47:27 +1000 +Subject: [PATCH] Fix uninitialised memory read that causes the encoder to crash when using + non-overlapping blocks. + +--- + libdirac_common/mot_comp.cpp | 21 +++++++++++++++------ + 1 files changed, 15 insertions(+), 6 deletions(-) + +diff --git a/libdirac_common/mot_comp.cpp b/libdirac_common/mot_comp.cpp +index aa8d37c..e0ec2ff 100644 +--- a/libdirac_common/mot_comp.cpp ++++ b/libdirac_common/mot_comp.cpp +@@ -306,6 +306,8 @@ void MotionCompensator::CompensateComponent( Picture* pic , + + int save_from_row = m_bparams.Ybsep()-m_bparams.Yoffset(); + ++ bool row_overlap = ((m_bparams.Yblen() - m_bparams.Ybsep()) > 0); ++ + // unpadded picture dimensions + const int x_end_data = pic_data_out.FirstX() + std::min(pic_data_out.LengthX(), pic_size.x ); + const int y_end_data = pic_data_out.FirstY() + std::min(pic_data_out.LengthY(), pic_size.y ); +@@ -489,12 +491,19 @@ void MotionCompensator::CompensateComponent( Picture* pic , + //Increment the block vertical position + pos.y += m_bparams.Ybsep(); + +- // Copy the rows required to motion compensate the next row of block. +- // This is usually Yblen-Ybsep rows. +- memmove (pic_data[0], pic_data[save_from_row], (m_bparams.Yblen() - save_from_row)*pic_data.LengthX()*sizeof(ValueType)); +- memset( pic_data[m_bparams.Yblen() - save_from_row], 0, save_from_row*pic_data.LengthX()*sizeof(ValueType) ); +- save_from_row = m_bparams.Ybsep(); +- ++ if (row_overlap) ++ { ++ // Copy the rows required to motion compensate the next row of ++ // blocks. This is usually Yblen-Ybsep rows. ++ memmove (pic_data[0], pic_data[save_from_row], (m_bparams.Yblen() - save_from_row)*pic_data.LengthX()*sizeof(ValueType)); ++ memset( pic_data[m_bparams.Yblen() - save_from_row], 0, save_from_row*pic_data.LengthX()*sizeof(ValueType) ); ++ save_from_row = m_bparams.Ybsep(); ++ } ++ else ++ { ++ // no row overlap. So reset pic_data to 0. ++ memset( pic_data[0], 0, m_bparams.Yblen()*pic_data.LengthX()*sizeof(ValueType) ); ++ } + }//yblock + + if ( m_add_or_sub == SUBTRACT) +-- +1.7.0.3 + diff --git a/baselibs.conf b/baselibs.conf new file mode 100644 index 0000000..8de12d3 --- /dev/null +++ b/baselibs.conf @@ -0,0 +1,2 @@ +libdirac_decoder0 +libdirac_encoder0 diff --git a/dirac.changes b/dirac.changes index 65278f8..f8c49f3 100644 --- a/dirac.changes +++ b/dirac.changes @@ -1,3 +1,20 @@ +------------------------------------------------------------------- +Fri Apr 14 13:38:21 UTC 2011 - toddrme2178@gmail.com + +- added 32bit compatibility libraries + +------------------------------------------------------------------- +Mon May 24 13:25:36 UTC 2010 - davejplater@gmail.com + +- Split off doc subpackage + +------------------------------------------------------------------- +Mon May 24 07:01:37 UTC 2010 - davejplater@gmail.com + +- Added Provides: and Obsoletes: for packman libdirac-devel +- Included patch from dirac git to fix uninitialised memory read + that causes the encoder to crash when using non-overlapping blocks. + ------------------------------------------------------------------- Sun May 9 08:49:10 UTC 2010 - davejplater@gmail.com diff --git a/dirac.spec b/dirac.spec index c96879b..8dbc5f5 100644 --- a/dirac.spec +++ b/dirac.spec @@ -20,13 +20,14 @@ Name: dirac Version: 1.0.2 -Release: 4 +Release: 5 Url: http://diracvideo.org/ Group: Productivity/Multimedia/Video/Editors and Convertors License: MPL .. -Summary: The dirac Video Codec +Summary: The Dirac_Video Codec Source: %{name}-%{version}.tar.bz2 -Patch0: %{name}-%{version}-gcc45.patch +Patch0: 0001-Fix-uninitialised-memory-read-that-causes-the-encode.patch +Patch1: %{name}-%{version}-gcc45.patch BuildRequires: gcc-c++ libstdc++-devel BuildRequires: libcppunit-devel %ifnarch ia64 s390 s390x %sparc @@ -166,8 +167,11 @@ Authors: License: MPL .. Group: Development/Libraries/C and C++ Summary: Development Files for Dirac Video Codec +AutoReqProv: on Requires: libdirac_decoder0 = %{version} Requires: libdirac_encoder0 = %{version} +Provides: libdirac-devel = %{version}-%{release} +Obsoletes: libdirac-devel < %{version}-%{release} %description devel Dirac is an open source video codec. It uses a traditional hybrid video @@ -208,9 +212,22 @@ Authors: Peter Bleackley , BBC Research and Development Myo Tun , Brunel University +%package doc +License: MPL .. +Group: Documentation/HTML +Summary: Dirac Video Codec api documentation +%if 0%{?suse_version} > 1110 +BuildArch: noarch +%endif + +%description doc +This package provides the api reference documentation for using dirac libraries +in your program. + %prep %setup -q %patch0 -p1 +%patch1 -p1 # Code is not mature enough for -Werror (unused results) sed -i 's/-Werror//' configure.ac @@ -224,8 +241,10 @@ export CXXFLAGS="$RPM_OPT_FLAGS -O0" %endif %endif %configure\ - --disable-static -%{__make} %{?jobs:-j%jobs} htmldir=%{_docdir}/%{name}/code/api_html + --disable-static \ + --docdir=%{_docdir}/packages/%{name} +%{__make} %{?jobs:-j%jobs} +#htmldir=%{_docdir}/%{name}/code/api_html %install %makeinstall htmldir=%{_docdir}/%{name}/code/api_html @@ -246,8 +265,8 @@ export CXXFLAGS="$RPM_OPT_FLAGS -O0" %files %defattr (-, root, root) -%doc %dir %{_docdir}/%{name} -%doc %{_docdir}/%{name}/[ACNRT]* +#%%doc AUTHORS COPYING ChangeLog NEWS README TODO +#%%doc %{_docdir}/%{name}/[ACNRT]* %{_bindir}/* %files -n libdirac_decoder0 @@ -260,10 +279,14 @@ export CXXFLAGS="$RPM_OPT_FLAGS -O0" %files devel %defattr (-, root, root) -%doc %{_docdir}/%{name}/code +#%%doc %{_docdir}/%{name}/[ACNRT]* %{_libdir}/*.so #%{_libdir}/*.*a %{_libdir}/pkgconfig/*.pc -%{_includedir}/dirac +%{_includedir}/%{name} + +%files doc +%defattr (-, root, root) +%doc %{_docdir}/%{name} %changelog