Changes of Revision 2
[-] | Changed | dirac.spec |
x 1
2 -# Copyright (c) 2006-2009 oc2pus 3 -# This file and all modifications and additions to the pristine 4 -# package are under the same license as the package itself. 5 # 6 -# Please submit bugfixes or comments to toni@links2linux.de 7 +# spec file for package dirac (Version 1.0.2) 8 +# 9 +# Copyright (c) 2010 SUSE LINUX Products GmbH, Nuernberg, Germany. 10 +# 11 +# All modifications and additions to the file contributed by third parties 12 +# remain the property of their copyright owners, unless otherwise agreed 13 +# upon. The license for this file, and modifications and additions to the 14 +# file, is the same license as for the pristine package itself (unless the 15 +# license for the pristine package is not an Open Source License, in which 16 +# case the license is the MIT License). An "Open Source License" is a 17 +# license that conforms to the Open Source Definition (Version 1.9) 18 +# published by the Open Source Initiative. 19 + 20 +# Please submit bugfixes or comments via http://bugs.opensuse.org/ 21 +# 22 23 # norootforbuild 24 25 -Summary: Video Codec based on wavelets 26 -Name: dirac 27 -Version: 1.0.2 28 -Release: 2.pm.3.1 29 -Source: http://prdownloads.sourceforge.net/dirac/%{name}-%{version}.tar.gz 30 -Source90: %{name}-rpmlintrc 31 -Patch0: %{name}-gcc45.patch 32 -License: MPL 33 -Group: Productivity/Multimedia/Other 34 -Url: http://sf.net/projects/dirac 35 -Packager: Toni Graffy <toni@links2linux.de> 36 -BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot 37 -BuildRequires: doxygen 38 -%if %suse_version >= 1030 39 -BuildRequires: fdupes 40 -%endif 41 -BuildRequires: freefont 42 -%if %suse_version <= 1100 43 -#BuildRequires: ghostscript-std 44 -%else 45 -#BuildRequires: ghostscript-mini 46 -%endif 47 -BuildRequires: gcc-c++ 48 -BuildRequires: graphviz 49 -%if %suse_version >= 1030 50 -#BuildRequires: hpijs-standalone 51 -BuildRequires: texlive 52 -BuildRequires: texlive-latex 53 -%else 54 -BuildRequires: te_latex 55 -BuildRequires: tetex 56 + 57 +Name: dirac 58 +Version: 1.0.2 59 +Release: 7 60 +Url: http://diracvideo.org/ 61 +Group: Productivity/Multimedia/Video/Editors and Convertors 62 +License: MPL .. 63 +Summary: The Dirac_Video Codec 64 +Source: %{name}-%{version}.tar.bz2 65 +Patch0: 0001-Fix-uninitialised-memory-read-that-causes-the-encode.patch 66 +Patch1: %{name}-%{version}-gcc45.patch 67 +BuildRequires: gcc-c++ libstdc++-devel 68 +BuildRequires: libcppunit-devel 69 +%ifnarch ia64 s390 s390x %sparc 70 +BuildRequires: pkg-config valgrind-devel 71 %endif 72 -BuildRequires: valgrind 73 +BuildRequires: doxygen fdupes graphviz-gd texlive-latex 74 +BuildRoot: %{_tmppath}/%{name}-%{version}-build 75 76 %description 77 -Dirac is an open source video codec. 78 +Dirac is an open source video codec. It uses a traditional hybrid video 79 +codec architecture, but with the wavelet transform instead of the usual 80 +block transforms. Motion compensation uses overlapped blocks to reduce 81 +block artefacts that would upset the transform coding stage. 82 + 83 +Dirac can code just about any size of video, from streaming up to HD 84 +and beyond, although certain presets are defined for different 85 +applications and standards. These cover the parameters that need to be 86 +set for the encoder to work, such as block sizes and temporal 87 +prediction structures, which must otherwise be set by hand. 88 89 -It uses a traditional hybrid video codec architecture, but with the 90 -wavelet transform instead of the usual block transforms. Motion 91 -compensation uses overlapped blocks to reduce block artefacts that 92 -would upset the transform coding stage. 93 +Dirac is intended to develop into real coding and decoding software, 94 +capable of plugging into video processing applications and media 95 +players that need compression. It is intended to develop into a simple 96 +set of reliable but effective coding tools that work over a wide 97 +variety of content and formats, using well-understood compression 98 +techniques, in a clear and accessible software structure. It is not 99 +intended as a demonstration or reference coder. 100 + 101 + 102 + 103 +Authors: 104 +-------- 105 + Thomas Davies <diracinfo@rd.bbc.co.uk>, BBC Research and Development 106 + Richard Felton <diracinfo@rd.bbc.co.uk>, BBC Research and Development 107 + Scott Robert Ladd <coyote@coyotegulch.com>, Coyote Gulch Productions 108 + Stuart Cunningham <diracinfo@rd.bbc.co.uk>, BBC Research and Development 109 + Anuradha Suraparaju <diracinfo@rd.bbc.co.uk>, BBC Research and Development 110 + Chris Bowley <diracinfo@rd.bbc.co.uk>, BBC Research and Development 111 + Tim Borer <diracinfo@rd.bbc.co.uk>, BBC Research and Development 112 + Peter Meerwald <pmeerw@users.sourceforge.net> 113 + Steve Bearcroft <bearcrsw@users.sourceforge.net> 114 + Zen <ogg@illiminable.com> 115 + Mike Ferenduros <mike_ferenduros@users.sourceforge.net> 116 + Andrew Kennedy <diracinfo@rd.bbc.co.uk>, BBC Research and Development 117 + Peter Bleackley <diracinfo@rd.bbc.co.uk>, BBC Research and Development 118 + Myo Tun <myo.tun@brunel.ac.uk>, Brunel University 119 + 120 +%package -n libdirac_decoder0 121 +License: MPL .. 122 +Group: System/Libraries 123 +Summary: Dirac Video Codec Decoder Library 124 + 125 +%description -n libdirac_decoder0 126 +Dirac is an open source video codec. It uses a traditional hybrid video 127 +codec architecture, but with the wavelet transform instead of the usual 128 +block transforms. Motion compensation uses overlapped blocks to reduce 129 +block artefacts that would upset the transform coding stage. 130 131 Dirac can code just about any size of video, from streaming up to HD 132 and beyond, although certain presets are defined for different 133 -applications and standards. These cover the parameters that need to 134 -be set for the encoder to work, such as block sizes and temporal 135 +applications and standards. These cover the parameters that need to be 136 +set for the encoder to work, such as block sizes and temporal 137 prediction structures, which must otherwise be set by hand. 138 139 +Dirac is intended to develop into real coding and decoding software, 140 +capable of plugging into video processing applications and media 141 +players that need compression. It is intended to develop into a simple 142 +set of reliable but effective coding tools that work over a wide 143 +variety of content and formats, using well-understood compression 144 +techniques, in a clear and accessible software structure. It is not 145 +intended as a demonstration or reference coder. 146 + 147 + 148 + 149 +Authors: 150 +-------- 151 + Thomas Davies <diracinfo@rd.bbc.co.uk>, BBC Research and Development 152 + Richard Felton <diracinfo@rd.bbc.co.uk>, BBC Research and Development 153 + Scott Robert Ladd <coyote@coyotegulch.com>, Coyote Gulch Productions 154 + Stuart Cunningham <diracinfo@rd.bbc.co.uk>, BBC Research and Development 155 + Anuradha Suraparaju <diracinfo@rd.bbc.co.uk>, BBC Research and Development 156 + Chris Bowley <diracinfo@rd.bbc.co.uk>, BBC Research and Development 157 + Tim Borer <diracinfo@rd.bbc.co.uk>, BBC Research and Development 158 + Peter Meerwald <pmeerw@users.sourceforge.net> 159 + Steve Bearcroft <bearcrsw@users.sourceforge.net> 160 + Zen <ogg@illiminable.com> 161 + Mike Ferenduros <mike_ferenduros@users.sourceforge.net> 162 + Andrew Kennedy <diracinfo@rd.bbc.co.uk>, BBC Research and Development 163 + Peter Bleackley <diracinfo@rd.bbc.co.uk>, BBC Research and Development 164 + Myo Tun <myo.tun@brunel.ac.uk>, Brunel University 165 + 166 %package -n libdirac_encoder0 167 -Group: System/Libraries 168 -Summary: Dirac Video Codec Encoder Library 169 -Provides: libdirac = 0.7.0 170 -Obsoletes: libdirac <= 0.7.0 171 -Provides: libdirac0 = 1.0.0 172 -Obsoletes: libdirac0 <= 1.0.0 173 +License: MPL .. 174 +Group: System/Libraries 175 +Summary: Dirac Video Codec Encoder Library 176 177 %description -n libdirac_encoder0 178 -Dirac is an open source video codec. 179 - 180 -It uses a traditional hybrid video codec architecture, but with the 181 -wavelet transform instead of the usual block transforms. Motion 182 -compensation uses overlapped blocks to reduce block artefacts that 183 -would upset the transform coding stage. 184 +Dirac is an open source video codec. It uses a traditional hybrid video 185 +codec architecture, but with the wavelet transform instead of the usual 186 +block transforms. Motion compensation uses overlapped blocks to reduce 187 +block artefacts that would upset the transform coding stage. 188 189 Dirac can code just about any size of video, from streaming up to HD 190 and beyond, although certain presets are defined for different 191 -applications and standards. These cover the parameters that need to 192 -be set for the encoder to work, such as block sizes and temporal 193 +applications and standards. These cover the parameters that need to be 194 +set for the encoder to work, such as block sizes and temporal 195 prediction structures, which must otherwise be set by hand. 196 197 -%package -n libdirac_decoder0 198 -Group: System/Libraries 199 -Summary: Dirac Video Codec Decoder Library 200 -Provides: libdirac0:%{_libdir}/libdirac_decoder.so.0.0.0 201 |
||
[+] | Added | 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 <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 + | ||
[+] | Added | dirac-1.0.2-gcc45.patch ^ |
@@ -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 + | ||
[+] | Deleted | dirac-gcc45.patch ^ |
@@ -1,48 +0,0 @@ -diff -Nur dirac-1.0.2-orig/libdirac_encoder/quant_chooser.cpp dirac-1.0.2/libdirac_encoder/quant_chooser.cpp ---- dirac-1.0.2-orig/libdirac_encoder/quant_chooser.cpp 2010-06-27 12:00:16.870371867 +0200 -+++ dirac-1.0.2/libdirac_encoder/quant_chooser.cpp 2010-06-27 12:05:29.274389459 +0200 -@@ -1,6 +1,6 @@ - /* ***** BEGIN LICENSE BLOCK ***** - * --* $Id: quant_chooser.cpp,v 1.20 2009/01/21 05:22:05 asuraparaju Exp $ $Name: Dirac_1_0_2 $ -+* $Id: quant_chooser.cpp,v 1.21 2010/05/09 04:38:31 asuraparaju Exp $ $Name: $ - * - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 - * -@@ -333,14 +333,14 @@ - void QuantChooser::SetSkip( CodeBlock& cblock , const int qidx) - { - const int u_threshold = dirac_quantiser_lists.QuantFactor4( qidx ); -- -+ - // Sets the skip flag for a codeblock - bool can_skip = true; - for (int j=cblock.Ystart(); j<cblock.Yend(); ++j ) - { - 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 @@ - { - 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 - -diff -Nur dirac-1.0.2-orig/libdirac_encoder/quant_chooser.h dirac-1.0.2/libdirac_encoder/quant_chooser.h ---- dirac-1.0.2-orig/libdirac_encoder/quant_chooser.h 2010-06-27 12:00:16.868371962 +0200 -+++ dirac-1.0.2/libdirac_encoder/quant_chooser.h 2010-06-27 12:05:29.274389459 +0200 -@@ -1,6 +1,6 @@ - /* ***** BEGIN LICENSE BLOCK ***** - * --* $Id: quant_chooser.h,v 1.7 2008/05/27 01:29:54 asuraparaju Exp $ $Name: Dirac_1_0_2 $ -+* $Id: quant_chooser.h,v 1.7 2008/05/27 01:29:54 asuraparaju Exp $ $Name: $ - * - * Version: MPL 1.1/GPL 2.0/LGPL 2.1 - * | ||
Renamed | dirac-1.0.2.tar.bz2 ^ | |
[+] | Deleted | dirac-rpmlintrc ^ |
@@ -1,5 +0,0 @@ -# This line is mandatory to access the configuration functions -from Config import * - -addFilter("source-or-patch-not-bzipped") -addFilter("shlib-policy-missing-lib") |