Sync from SUSE:SLFO:Main dirac revision e96485b15e5a115091694e907d844f0f

This commit is contained in:
Adrian Schröter 2024-05-03 12:04:41 +02:00
commit adb553d113
7 changed files with 364 additions and 0 deletions

23
.gitattributes vendored Normal file
View File

@ -0,0 +1,23 @@
## Default LFS
*.7z filter=lfs diff=lfs merge=lfs -text
*.bsp filter=lfs diff=lfs merge=lfs -text
*.bz2 filter=lfs diff=lfs merge=lfs -text
*.gem filter=lfs diff=lfs merge=lfs -text
*.gz filter=lfs diff=lfs merge=lfs -text
*.jar filter=lfs diff=lfs merge=lfs -text
*.lz filter=lfs diff=lfs merge=lfs -text
*.lzma filter=lfs diff=lfs merge=lfs -text
*.obscpio filter=lfs diff=lfs merge=lfs -text
*.oxt filter=lfs diff=lfs merge=lfs -text
*.pdf filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.rpm filter=lfs diff=lfs merge=lfs -text
*.tbz filter=lfs diff=lfs merge=lfs -text
*.tbz2 filter=lfs diff=lfs merge=lfs -text
*.tgz filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.txz filter=lfs diff=lfs merge=lfs -text
*.whl filter=lfs diff=lfs merge=lfs -text
*.xz filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.zst filter=lfs diff=lfs merge=lfs -text

View File

@ -0,0 +1,52 @@
From 88fae6224b54ecf92ac6e3ae5083c3f352adc798 Mon Sep 17 00:00:00 2001
From: Anuradha Suraparaju <anuradha@hoyle.rd.bbc.co.uk>
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

6
baselibs.conf Normal file
View File

@ -0,0 +1,6 @@
libdirac_decoder0
libdirac_encoder0
dirac-devel
requires -dirac-<targettype>
requires "libdirac_decoder0-<targettype> = <version>"
requires "libdirac_encoder0-<targettype> = <version>"

22
dirac-1.0.2-gcc45.patch Normal file
View File

@ -0,0 +1,22 @@
Index: dirac-1.0.2/libdirac_encoder/quant_chooser.cpp
===================================================================
--- dirac-1.0.2.orig/libdirac_encoder/quant_chooser.cpp
+++ dirac-1.0.2/libdirac_encoder/quant_chooser.cpp
@@ -340,7 +340,7 @@ void QuantChooser::SetSkip( CodeBlock& c
{
for (int i=cblock.Xstart(); i<cblock.Xend(); ++i )
{
- if ( (std::abs(m_coeff_data[j][i])<<2) >= u_threshold )
+ if ( (static_cast<int>(std::abs(m_coeff_data[j][i]))<<2) >= u_threshold )
can_skip = false;
}
}
@@ -355,7 +355,7 @@ CoeffType QuantChooser::BlockAbsMax( con
{
for (int i=node.Xp() ; i<node.Xp()+node.Xl(); ++i)
{
- val = std::max( val , std::abs(m_coeff_data[j][i]) );
+ val = std::max( val , static_cast<int>(std::abs(m_coeff_data[j][i])) );
}// i
}// j

BIN
dirac-1.0.2.tar.gz (Stored with Git LFS) Normal file

Binary file not shown.

115
dirac.changes Normal file
View File

@ -0,0 +1,115 @@
-------------------------------------------------------------------
Tue Jul 4 10:27:05 UTC 2017 - tchvatal@suse.com
- Cleanu pwith spec-cleaner
- Switch to upstream tarball instead of repacking
- Update dependencies to match reality
- Explicitely enable configuration switches
- Disable docu building as they are kinda empty unless we would
add latex and dot
-------------------------------------------------------------------
Tue May 26 09:17:16 UTC 2015 - jkeil@suse.com
- Add baselibs.conf as Source
-------------------------------------------------------------------
Sun Apr 12 02:00:27 UTC 2015 - plinnell@opensuse.org
- added existing baselibs.conf to fix build
-------------------------------------------------------------------
Sat Apr 4 18:11:09 UTC 2015 - dmueller@suse.com
- remove unneeded texlive-latex dependency
-------------------------------------------------------------------
Sat Dec 7 23:30:21 UTC 2013 - matz@suse.de
- Don't buildrequire valgrind-devel anywhere, it's unused.
-------------------------------------------------------------------
Thu Dec 20 01:00:27 CET 2012 - ro@suse.de
- buildrequire pkg-config regardless of build-architecture
-------------------------------------------------------------------
Fri Dec 9 11:49:18 UTC 2011 - coolo@suse.com
- fix license to be in spdx.org format
-------------------------------------------------------------------
Fri Sep 30 20:07:55 UTC 2011 - coolo@suse.com
- add libtool as buildrequire to make the spec file more reliable
-------------------------------------------------------------------
Sun Sep 18 17:17:12 UTC 2011 - jengelh@medozas.de
- Remove redundant tags/sections from specfile
(cf. packaging guidelines)
- Use %_smp_mflags for parallel build
- Add dirac-devel to baselibs
-------------------------------------------------------------------
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
- Fixed factory build with patch from git dirac-1.0.2-gcc45.patch
-------------------------------------------------------------------
Fri Dec 18 22:46:01 CET 2009 - jengelh@medozas.de
- exclude valgrind-devel on SPARC
-------------------------------------------------------------------
Sun Jul 12 14:31:22 CEST 2009 - coolo@novell.com
- fix build in disabling as-needed
-------------------------------------------------------------------
Wed Jul 1 17:44:48 CEST 2009 - sbrabec@suse.cz
- Updated to version 1.0.2:
* minor release complying with the latest Dirac Bytestream
Specification 2.2.3.
* Improved compression performance for small picture sizes.
* Improved compression performance at low bit-rates.
* Included macros to check the API version.
* Improved motion estimation.
* New 422 <-> 420 conversion utilities for interlaced video.
* New functionality added to encoder API.
* Fixed bugs in handling DC subband.
-------------------------------------------------------------------
Wed Apr 29 19:26:44 CEST 2009 - sbrabec@suse.cz
- Worked around internal compiler error on 11.0-x86_64.
-------------------------------------------------------------------
Tue Nov 25 10:26:27 CET 2008 - ro@suse.de
- do not buildrequire valgrind on ia64 s390 s390x
(does not exist on these platforms)
-------------------------------------------------------------------
Thu Nov 6 10:40:56 CET 2008 - sbrabec@suse.cz
- New SuSE package (bnc#441855).

143
dirac.spec Normal file
View File

@ -0,0 +1,143 @@
#
# spec file for package dirac
#
# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
Name: dirac
Version: 1.0.2
Release: 0
Summary: The Dirac_Video Codec
License: MPL-1.1
Group: Productivity/Multimedia/Video/Editors and Convertors
Url: https://sourceforge.net/projects/dirac/
Source0: http://downloads.sourceforge.net/%{name}/%{name}-%{version}.tar.gz
Source1: baselibs.conf
Patch0: 0001-Fix-uninitialised-memory-read-that-causes-the-encode.patch
Patch1: %{name}-%{version}-gcc45.patch
BuildRequires: fdupes
BuildRequires: gcc-c++
BuildRequires: libtool
BuildRequires: pkgconfig
BuildRequires: pkgconfig(cppunit)
%description
Dirac is an open source video codec. It uses a traditional hybrid video
codec architecture, but with the wavelet transform instead of the usual
block transforms. Motion compensation uses overlapped blocks to reduce
block artefacts that would upset the transform coding stage.
Dirac can code just about any size of video, from streaming up to HD
and beyond, although certain presets are defined for different
applications and standards. These cover the parameters that need to be
set for the encoder to work, such as block sizes and temporal
prediction structures, which must otherwise be set by hand.
%package -n libdirac_decoder0
Summary: Dirac Video Codec Decoder Library
Group: System/Libraries
%description -n libdirac_decoder0
Dirac is an open source video codec. It uses a traditional hybrid video
codec architecture, but with the wavelet transform instead of the usual
block transforms. Motion compensation uses overlapped blocks to reduce
block artefacts that would upset the transform coding stage.
Dirac can code just about any size of video, from streaming up to HD
and beyond, although certain presets are defined for different
applications and standards. These cover the parameters that need to be
set for the encoder to work, such as block sizes and temporal
prediction structures, which must otherwise be set by hand.
%package -n libdirac_encoder0
Summary: Dirac Video Codec Encoder Library
Group: System/Libraries
%description -n libdirac_encoder0
Dirac is an open source video codec. It uses a traditional hybrid video
codec architecture, but with the wavelet transform instead of the usual
block transforms. Motion compensation uses overlapped blocks to reduce
block artefacts that would upset the transform coding stage.
Dirac can code just about any size of video, from streaming up to HD
and beyond, although certain presets are defined for different
applications and standards. These cover the parameters that need to be
set for the encoder to work, such as block sizes and temporal
prediction structures, which must otherwise be set by hand.
%package devel
Summary: Development Files for Dirac Video Codec
Group: Development/Libraries/C and C++
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
codec architecture, but with the wavelet transform instead of the usual
block transforms. Motion compensation uses overlapped blocks to reduce
block artefacts that would upset the transform coding stage.
Dirac can code just about any size of video, from streaming up to HD
and beyond, although certain presets are defined for different
applications and standards. These cover the parameters that need to be
set for the encoder to work, such as block sizes and temporal
prediction structures, which must otherwise be set by hand.
%prep
%setup -q
%patch0 -p1
%patch1 -p1
# Code is not mature enough for -Werror (unused results)
sed -i 's/-Werror//' configure.ac
%build
ACLOCAL="aclocal -I m4" autoreconf -fvi
%configure \
--disable-silent-rules \
--disable-static \
--docdir=%{_docdir}/packages/%{name} \
--enable-mmx \
--enable-overlay
make %{?_smp_mflags}
%install
%make_install htmldir=%{_docdir}/%{name}/code/api_html
# remove the docs we want with main pkg
find %{buildroot} -type f -name "*.la" -delete -print
%fdupes %{buildroot}%{_docdir}/%{name}
%post -n libdirac_decoder0 -p /sbin/ldconfig
%postun -n libdirac_decoder0 -p /sbin/ldconfig
%post -n libdirac_encoder0 -p /sbin/ldconfig
%postun -n libdirac_encoder0 -p /sbin/ldconfig
%files
%doc AUTHORS COPYING ChangeLog NEWS README TODO
%{_bindir}/*
%files -n libdirac_decoder0
%{_libdir}/libdirac_decoder.so.0*
%files -n libdirac_encoder0
%{_libdir}/libdirac_encoder.so.0*
%files devel
%{_libdir}/*.so
%{_libdir}/pkgconfig/*.pc
%{_includedir}/%{name}
%changelog