~medibuntu-maintainers/mplayer/medibuntu.precise

« back to all changes in this revision

Viewing changes to ffmpeg/libavutil/lls.c

  • Committer: Gauvain Pocentek
  • Date: 2012-03-06 11:59:12 UTC
  • mfrom: (66.1.15 precise)
  • Revision ID: gauvain@pocentek.net-20120306115912-h9d6kt9j0l532oo5
* Merge from Ubuntu:
  - put back faac support
  - recommends apport-hooks-medibuntu
  - change Maintainer, Uploaders & Vcs-* fields.
* New upstream snapshot
* upload to unstable
* Build against external libmpeg2
* drop 51_FTBFS_arm.patch again
* no longer build depend on libcdparanoia-dev on the Hurd
* Fix FTBFS on the hurd.
  Thanks to Samuel Thibault <sthibault@debian.org> (Closes: #654974)
* Fix FTBFS on arm
* New upstream snapshot, Closes: #650339, #643621, #481807
* Imported Upstream version 1.0~rc4+svn34492
* Bump standards version
* Bump dependency on libav >= 4:0.8~, Closes: #653887
* Fix build-indep
* Build mplayer-gui again, Closes: #568514
* Drop debian/all-lang-config-mak.sh, no longer needed
* include .dfsg1 in version number
* remove get-orig-source target
* no longer prune compiler flags from the environment
* No longer advertise nor build 3fdx, mga and dxr3 backends,
  Closes: #496106, #442181, #533546
* beautify mplayer version identification string
* Brown paperbag upload.
* Next try to fix build failure on sparce after recent binutils change.
* Brown paperbag upload.
* Really fix build failure on sparc after recent binutils change.
* Properly set Replaces/Conflicts on mplayer2{,-dbg} to avoid
  file overwrite errors.
* Adjust versioning of mplayer listed in the mplayer-dbg's Depends field.
* Fix build failure on sparc after recent binutils change.
* Urgency medium bumped because of RC-level bugfix
  and speeding up x264 transition.
* Update to my @debian.org email.
* Upload to unstable
* Enable joystick support on Linux only, Closes: #638408
* Rebuild fixes toolchain issue on arm, Closes: #637077
* New upstream snapshot
* following the discussion started by Diego Biurrun <diego@biurrun.de>
  in debian-devel, I have prepared a new packaging of 'mplayer'
  (with code that comes from CVS)
* the upstream tar.bz cannot be distributed by Debian, since it contains
   CSS code; so I am repackaging it 
* I have tried my best to address all known issues:
  - the package contains the detailed Copyright made by Diego Biurrun 
  - the package does not contain CSS code, or  AFAIK other code on which 
     there is active patent enforcement
  - there is a script  debian/cvs-changelog.sh  that shows all changes
     done to files included in this source.
    This should comply with GPLv2 sec 2.a  (in spirit if not in letter)
    For this reason, the source code contains CVS directories.
* needs   make (>= 3.80) for 'html-chunked-$(1)' in DOCS/xml/Makefile

* some corrections, as suggested Diego Biurrun
  - binary codecs should go into /usr/lib/codecs (upstream default)
  - better template 'mplayer/install_codecs'
  - an empty 'font=' in mplayer.conf breaks mplayer: postinst corrected
* correction in 'mplayer/cfgnote'
* better mplayer.postinst and mplayer.config

* New upstream release
* better debian/copyright file
* do not ship a skin
* New upstream release
* changed DEB_BUILD_OPTIONS to DEB_BUILD_CONFIGURE ,
  DEB_BUILD_OPTIONS is used as in debian policy
* use gcc-3.4
* changed xlibs-dev to a long list of dependencies, for Debian/etch
* try to adhere to  http://www.mplayerhq.hu/DOCS/tech/binary-packaging.txt
  (see README.Debian for details)
* removed dependency on xlibmesa-dev, disabled opengl
* New upstream release
* Simon McVittie <hacks@pseudorandom.co.uk> wonderful work:
- Work around Debian bug #267442 (glibc's sys/uio.h and gcc's altivec.h have
  conflicting uses for __vector) by re-ordering #includes
- Fix potential symlink attack in ./configure
- Disable support for binary codecs on platforms for which those codecs
  aren't available; also disable the corresponding Debconf note when it's
  inappropriate
- Changed Build-Depends: so it works in pbuilder
- Explicitly build-depend on libjpeg62-dev, libfontconfig1-dev,
  libungif4-dev 
- Tweak debian/rules to avoid certain errors being ignored
- Use --language=all
* provide a target  'debian/rules get-orig-source' 
  that recreates the orig.tar.gz ; then use the above orig.tar.gz
* rewrote some parts of debian/rules
* don't clean and recompile docs if upstream ships them
* mplayer-doc was shipping too much stuff
* translated man pages where not installed properly
* compile with libdv4-dev
* correct README.Debian
* Forgot build-dep on libtheora
* Must not depend on libxvidcore
* New upstream release
* new release.
* rc1 to become 0.90
* new pre-release
* new pre-release
* gtk bug fixed.
* new release.
* version bumped
* 0.60 pre2 release
* 0.60 pre-release.

Show diffs side-by-side

added added

removed removed

Lines of Context:
30
30
 
31
31
#include "lls.h"
32
32
 
33
 
void av_init_lls(LLSModel *m, int indep_count){
 
33
void av_init_lls(LLSModel *m, int indep_count)
 
34
{
34
35
    memset(m, 0, sizeof(LLSModel));
35
 
 
36
 
    m->indep_count= indep_count;
 
36
    m->indep_count = indep_count;
37
37
}
38
38
 
39
 
void av_update_lls(LLSModel *m, double *var, double decay){
40
 
    int i,j;
 
39
void av_update_lls(LLSModel *m, double *var, double decay)
 
40
{
 
41
    int i, j;
41
42
 
42
 
    for(i=0; i<=m->indep_count; i++){
43
 
        for(j=i; j<=m->indep_count; j++){
 
43
    for (i = 0; i <= m->indep_count; i++) {
 
44
        for (j = i; j <= m->indep_count; j++) {
44
45
            m->covariance[i][j] *= decay;
45
 
            m->covariance[i][j] += var[i]*var[j];
46
 
        }
47
 
    }
48
 
}
49
 
 
50
 
void av_solve_lls(LLSModel *m, double threshold, int min_order){
51
 
    int i,j,k;
52
 
    double (*factor)[MAX_VARS+1]= (void*)&m->covariance[1][0];
53
 
    double (*covar )[MAX_VARS+1]= (void*)&m->covariance[1][1];
54
 
    double  *covar_y            =  m->covariance[0];
55
 
    int count= m->indep_count;
56
 
 
57
 
    for(i=0; i<count; i++){
58
 
        for(j=i; j<count; j++){
59
 
            double sum= covar[i][j];
60
 
 
61
 
            for(k=i-1; k>=0; k--)
62
 
                sum -= factor[i][k]*factor[j][k];
63
 
 
64
 
            if(i==j){
65
 
                if(sum < threshold)
66
 
                    sum= 1.0;
67
 
                factor[i][i]= sqrt(sum);
68
 
            }else
69
 
                factor[j][i]= sum / factor[i][i];
70
 
        }
71
 
    }
72
 
    for(i=0; i<count; i++){
73
 
        double sum= covar_y[i+1];
74
 
        for(k=i-1; k>=0; k--)
75
 
            sum -= factor[i][k]*m->coeff[0][k];
76
 
        m->coeff[0][i]= sum / factor[i][i];
77
 
    }
78
 
 
79
 
    for(j=count-1; j>=min_order; j--){
80
 
        for(i=j; i>=0; i--){
81
 
            double sum= m->coeff[0][i];
82
 
            for(k=i+1; k<=j; k++)
83
 
                sum -= factor[k][i]*m->coeff[j][k];
84
 
            m->coeff[j][i]= sum / factor[i][i];
85
 
        }
86
 
 
87
 
        m->variance[j]= covar_y[0];
88
 
        for(i=0; i<=j; i++){
89
 
            double sum= m->coeff[j][i]*covar[i][i] - 2*covar_y[i+1];
90
 
            for(k=0; k<i; k++)
91
 
                sum += 2*m->coeff[j][k]*covar[k][i];
92
 
            m->variance[j] += m->coeff[j][i]*sum;
93
 
        }
94
 
    }
95
 
}
96
 
 
97
 
double av_evaluate_lls(LLSModel *m, double *param, int order){
 
46
            m->covariance[i][j] += var[i] * var[j];
 
47
        }
 
48
    }
 
49
}
 
50
 
 
51
void av_solve_lls(LLSModel *m, double threshold, int min_order)
 
52
{
 
53
    int i, j, k;
 
54
    double (*factor)[MAX_VARS + 1] = (void *) &m->covariance[1][0];
 
55
    double (*covar) [MAX_VARS + 1] = (void *) &m->covariance[1][1];
 
56
    double *covar_y                = m->covariance[0];
 
57
    int count                      = m->indep_count;
 
58
 
 
59
    for (i = 0; i < count; i++) {
 
60
        for (j = i; j < count; j++) {
 
61
            double sum = covar[i][j];
 
62
 
 
63
            for (k = i - 1; k >= 0; k--)
 
64
                sum -= factor[i][k] * factor[j][k];
 
65
 
 
66
            if (i == j) {
 
67
                if (sum < threshold)
 
68
                    sum = 1.0;
 
69
                factor[i][i] = sqrt(sum);
 
70
            } else {
 
71
                factor[j][i] = sum / factor[i][i];
 
72
            }
 
73
        }
 
74
    }
 
75
 
 
76
    for (i = 0; i < count; i++) {
 
77
        double sum = covar_y[i + 1];
 
78
 
 
79
        for (k = i - 1; k >= 0; k--)
 
80
            sum -= factor[i][k] * m->coeff[0][k];
 
81
 
 
82
        m->coeff[0][i] = sum / factor[i][i];
 
83
    }
 
84
 
 
85
    for (j = count - 1; j >= min_order; j--) {
 
86
        for (i = j; i >= 0; i--) {
 
87
            double sum = m->coeff[0][i];
 
88
 
 
89
            for (k = i + 1; k <= j; k++)
 
90
                sum -= factor[k][i] * m->coeff[j][k];
 
91
 
 
92
            m->coeff[j][i] = sum / factor[i][i];
 
93
        }
 
94
 
 
95
        m->variance[j] = covar_y[0];
 
96
 
 
97
        for (i = 0; i <= j; i++) {
 
98
            double sum = m->coeff[j][i] * covar[i][i] - 2 * covar_y[i + 1];
 
99
 
 
100
            for (k = 0; k < i; k++)
 
101
                sum += 2 * m->coeff[j][k] * covar[k][i];
 
102
 
 
103
            m->variance[j] += m->coeff[j][i] * sum;
 
104
        }
 
105
    }
 
106
}
 
107
 
 
108
double av_evaluate_lls(LLSModel *m, double *param, int order)
 
109
{
98
110
    int i;
99
 
    double out= 0;
 
111
    double out = 0;
100
112
 
101
 
    for(i=0; i<=order; i++)
102
 
        out+= param[i]*m->coeff[order][i];
 
113
    for (i = 0; i <= order; i++)
 
114
        out += param[i] * m->coeff[order][i];
103
115
 
104
116
    return out;
105
117
}
106
118
 
107
119
#ifdef TEST
108
120
 
109
 
#include <stdlib.h>
110
121
#include <stdio.h>
 
122
#include <limits.h>
 
123
#include "lfg.h"
111
124
 
112
 
int main(void){
 
125
int main(void)
 
126
{
113
127
    LLSModel m;
114
128
    int i, order;
 
129
    AVLFG lfg;
115
130
 
 
131
    av_lfg_init(&lfg, 1);
116
132
    av_init_lls(&m, 3);
117
133
 
118
 
    for(i=0; i<100; i++){
 
134
    for (i = 0; i < 100; i++) {
119
135
        double var[4];
120
136
        double eval;
121
 
        var[0] = (rand() / (double)RAND_MAX - 0.5)*2;
122
 
        var[1] = var[0] + rand() / (double)RAND_MAX - 0.5;
123
 
        var[2] = var[1] + rand() / (double)RAND_MAX - 0.5;
124
 
        var[3] = var[2] + rand() / (double)RAND_MAX - 0.5;
 
137
 
 
138
        var[0] = (av_lfg_get(&lfg) / (double) UINT_MAX - 0.5) * 2;
 
139
        var[1] = var[0] + av_lfg_get(&lfg) / (double) UINT_MAX - 0.5;
 
140
        var[2] = var[1] + av_lfg_get(&lfg) / (double) UINT_MAX - 0.5;
 
141
        var[3] = var[2] + av_lfg_get(&lfg) / (double) UINT_MAX - 0.5;
125
142
        av_update_lls(&m, var, 0.99);
126
143
        av_solve_lls(&m, 0.001, 0);
127
 
        for(order=0; order<3; order++){
128
 
            eval= av_evaluate_lls(&m, var+1, order);
 
144
        for (order = 0; order < 3; order++) {
 
145
            eval = av_evaluate_lls(&m, var + 1, order);
129
146
            printf("real:%9f order:%d pred:%9f var:%f coeffs:%f %9f %9f\n",
130
 
                var[0], order, eval, sqrt(m.variance[order] / (i+1)),
131
 
                m.coeff[order][0], m.coeff[order][1], m.coeff[order][2]);
 
147
                   var[0], order, eval, sqrt(m.variance[order] / (i + 1)),
 
148
                   m.coeff[order][0], m.coeff[order][1],
 
149
                   m.coeff[order][2]);
132
150
        }
133
151
    }
134
152
    return 0;