~ubuntu-branches/ubuntu/dapper/gst-plugins-good0.10/dapper-security

« back to all changes in this revision

Viewing changes to gst/goom/goom_core.c

  • Committer: Bazaar Package Importer
  • Author(s): Sebastien Bacher
  • Date: 2006-05-05 19:10:19 UTC
  • mfrom: (1.1.3 upstream)
  • Revision ID: james.westby@ubuntu.com-20060505191019-mge3njl5173jfldb
Tags: 0.10.3-0ubuntu1
* New upstream version (Ubuntu: #43135):
  Changes since 0.10.2:
  - Annodex/CMML support
  - RTSP and RTP enhancements
  - HAL configured audio device support
  - FLAC, Matroska, AVI, WAV, ID3, APE, DV and JPEG plugin improvements
  - Recognise SSA/ASS and USF subtitles in Matroska files
  - Fixes for ESD and SunAudio output plugins
  - More uniform plugin descriptions
  - IceCast metadata reading plugin added
  - New plugins ported from 0.8: OSX audio, AVI muxer, X-Windows input,
    WAV encoder, Gdk-Pixbuf image decoder, Smoke decoder,
    Video colour balance
  - Lots of bug fixes
  Bugs fixed since 0.10.2:
  - RTSP src not working with WMServer servers
  - Replacing icy demuxing in gnomevfssrc
  - HAL sound device wrapper plugins
  - totem (gstreamer) crashes when playing an avi file (Ubuntu: #38800)
  - avidemux does not handle eos at end of seek-region
  - faulty GObject macros
  - [patch] Streaming support for wavparse
  - [pngdec] doesn't handle grayscale or paletted
  - Time slider does not work with avi videos from Cannon SD100
  - [auparse] .au files don't play in playbin
  - [wavparse] will not play DTS stream in malformed WAV
  - rtspsrc filter sometimes uses an odd port for rtp
  - annodex decoding and encoding support
  - [id3demux] read in replaygain information from RVA2 frame...
  - " Seek in ready " for dvdemux
  - problem with auparse or mulawdec, choppy esd playback
  - videobalance not ported to new GstVideoFilter
  - " Seek in ready " support for wavparse plugin
  - gst-plugins-good fail to compile with gcc 4.1
  - Profile support for gconfaudiosink
  - Crash playing any song from a particular album over rhyth...
  - Unable to play .fli files
  - Critical warnings when using cddacdiosrc
  - Gstreamer doesn't recognise tags
  - [alpha] state change function returns a constant
  - Another file that gstreamer can't read the tags on
  - [jpeg] smokedec not ported
  - [pngdec] does not support files with png streams
  - [PATCH] avimux ported to 0.10
  - [wavparse] does not support multichannel wavs
  - [id3demux] reads unicode tags incorrectly where .8 did it...
  - [apedemux] some WavPack files with APE tags fail to play ...
  - [sunaudio] unused variables break CVS build with -Werror
  - [PATCH] Fix gst_pad_new_from_template (gst_static_pad_tem...
  - invalid get_times implementation in gstdynudpsink
  - [patch] unref the result of gst_pad_get_parent
  - [jpegdec] wrong durations set on buffers after seeking in...
  - avi of mpeg4 video and adpcm audio from digital camera re...
  - [id3demux] mp3 fails to play because typefinding thinks i...
  - [goom] zoom filter leaked
  - [wavparse] incorrect way to calculate seek position with ...
  - rhythmbox import crasher - png?
  - Video playback out of sync (Ubuntu: #33073)
  - [speexenc] doesn't work (Ubuntu: #34904)
  - move taglib-based ID3 muxer to -good
  - plugins need better/univied descriptions
  - move ximagesrc to gst-plugins-good
  - index creation might fail with some non-indexe...
  - Problem playing some AVI file when splitting large chunks...
  - [speex] can't seek in speex-encoded audio (Ubuntu: #37552)
  - [matroska] " caps not real subset " when playing audio files
  - AVI files downloaded from vidoe.google.com won't play (Ubuntu: #30031)
  - [sunaudiosink] some fixes
  - [flacdec] can't play .flac files where header says total_...
  - [flacdec] segment seek not supported
  - [id3demux] TCO genre tags (id3v2.2) don't get read by gst...
  - [shout2send] fix crash on error and tags received before ...
  - [wavenc] " not negotiated " error with CVS core
  - [matroskademux] blocks on segmenting seek (and other seek...
  - [matroska] can't play file if details come before type in...
  - [matroska] enhancement for VfW compatibility cases
  - [matroskamux] wrong timestamps of B-frames
  - [matroskamux] blocks upon muxing video and vorbis-audio
  - rtpamrdec discards non-transmitted frames
  - use a duration based on the index if available (Ubuntu: #29962)
* debian/build-deps.in:
  - Build-Depends on libgtk2.0-dev libhal-dev libtag1-dev libxml2-dev
  - updated libgstreamer-plugins-base0.10-dev requirement
* debian/control.in:
  - gstreamer0.10-plugins-good Replaces gstreamer0.10-plugins-bad (<< 0.10.3)
* debian/gstreamer-plugins-good.install:
  - list new elements to install
* debian/rules:
  - updated libgstreamer0.10-dev requirement

Show diffs side-by-side

added added

removed removed

Lines of Context:
19
19
#define STOP_SPEED 128
20
20
 
21
21
void
22
 
goom_init (GoomData *goomdata, guint32 resx, guint32 resy)
 
22
goom_init (GoomData * goomdata, guint32 resx, guint32 resy)
23
23
{
24
24
#ifdef VERBOSE
25
25
  printf ("GOOM: init (%d, %d);\n", resx, resy);
38
38
  goomdata->cycle = 0;
39
39
 
40
40
 
41
 
  goomdata->goomlimit = 2;    /* sensibilit� du goom */
42
 
  goomdata->zfd = zoomFilterNew();
43
 
  goomdata->lockvar = 0;       /* pour empecher de nouveaux changements */
44
 
  goomdata->goomvar = 0;       /* boucle des gooms */
45
 
  goomdata->totalgoom = 0;     /* nombre de gooms par seconds */
46
 
  goomdata->agoom = 0;         /* un goom a eu lieu..       */
47
 
  goomdata->loopvar = 0;       /* mouvement des points */
48
 
  goomdata->speedvar = 0;      /* vitesse des particules */
49
 
  goomdata->lineMode = 0;      /* l'effet lineaire a dessiner */
 
41
  goomdata->goomlimit = 2;      /* sensibilit� du goom */
 
42
  goomdata->zfd = zoomFilterNew ();
 
43
  goomdata->lockvar = 0;        /* pour empecher de nouveaux changements */
 
44
  goomdata->goomvar = 0;        /* boucle des gooms */
 
45
  goomdata->totalgoom = 0;      /* nombre de gooms par seconds */
 
46
  goomdata->agoom = 0;          /* un goom a eu lieu..       */
 
47
  goomdata->loopvar = 0;        /* mouvement des points */
 
48
  goomdata->speedvar = 0;       /* vitesse des particules */
 
49
  goomdata->lineMode = 0;       /* l'effet lineaire a dessiner */
50
50
}
51
51
 
52
52
void
53
 
goom_set_resolution (GoomData *goomdata, guint32 resx, guint32 resy)
 
53
goom_set_resolution (GoomData * goomdata, guint32 resx, guint32 resy)
54
54
{
55
55
  guint32 buffsize = resx * resy;
56
56
 
57
57
  if ((goomdata->resolx == resx) && (goomdata->resoly == resy))
58
58
    return;
59
59
 
60
 
  if (goomdata->buffsize < buffsize)
61
 
  {
 
60
  if (goomdata->buffsize < buffsize) {
62
61
    if (goomdata->pixel)
63
62
      free (goomdata->pixel);
64
63
    if (goomdata->back)
67
66
    goomdata->back = (guint32 *) malloc (buffsize * sizeof (guint32) + 128);
68
67
    goomdata->buffsize = buffsize;
69
68
 
70
 
    goomdata->p1 = (void *) (((unsigned long) goomdata->pixel + 0x7f) & (~0x7f));
 
69
    goomdata->p1 =
 
70
        (void *) (((unsigned long) goomdata->pixel + 0x7f) & (~0x7f));
71
71
    goomdata->p2 = (void *) (((unsigned long) goomdata->back + 0x7f) & (~0x7f));
72
72
  }
73
73
 
79
79
}
80
80
 
81
81
guint32 *
82
 
goom_update (GoomData *goomdata, gint16 data[2][512])
 
82
goom_update (GoomData * goomdata, gint16 data[2][512])
83
83
{
84
84
  guint32 *return_val;
85
85
  guint32 pointWidth;
125
125
 
126
126
  /* ! calcul du deplacement des petits points ... */
127
127
 
128
 
  largfactor = ((float) goomdata->speedvar / 40.0f + (float) incvar / 50000.0f) / 1.5f;
 
128
  largfactor =
 
129
      ((float) goomdata->speedvar / 40.0f + (float) incvar / 50000.0f) / 1.5f;
129
130
  if (largfactor > 1.5f)
130
131
    largfactor = 1.5f;
131
132
 
169
170
  if ((accelvar > goomdata->goomlimit) || (accelvar < -goomdata->goomlimit)) {
170
171
    /* UN GOOM !!! YAHOO ! */
171
172
    goomdata->totalgoom++;
172
 
    goomdata->agoom = 20;                 /* mais pdt 20 cycles, il n'y en aura plus. */
173
 
    goomdata->lineMode = (goomdata->lineMode + 1) % 20;     /* Tous les 10 gooms on change de mode lineaire */
 
173
    goomdata->agoom = 20;       /* mais pdt 20 cycles, il n'y en aura plus. */
 
174
    goomdata->lineMode = (goomdata->lineMode + 1) % 20; /* Tous les 10 gooms on change de mode lineaire */
174
175
 
175
176
    /* changement eventuel de mode */
176
177
    switch (iRAND (goomdata, 10)) {
302
303
          pzfd->hPlaneEffect = iRAND (goomdata, 2) ? 0 : pzfd->hPlaneEffect;
303
304
        }
304
305
 
305
 
        if (newvit < pzfd->vitesse) {     /* on accelere */
 
306
        if (newvit < pzfd->vitesse) {   /* on accelere */
306
307
          zfd_update = 1;
307
308
          if (((newvit < STOP_SPEED - 7) &&
308
309
                  (pzfd->vitesse < STOP_SPEED - 6) &&
331
332
  }
332
333
 
333
334
  /* gros frein si la musique est calme */
334
 
  if ((goomdata->speedvar < 1) && (pzfd->vitesse < STOP_SPEED - 4) && (goomdata->cycle % 16 == 0)) {
 
335
  if ((goomdata->speedvar < 1) && (pzfd->vitesse < STOP_SPEED - 4)
 
336
      && (goomdata->cycle % 16 == 0)) {
335
337
    /*
336
338
       printf ("++slow part... %i\n", zfd.vitesse) ;
337
339
     */
367
369
  /* si on est dans un goom : afficher les lignes... */
368
370
  if (goomdata->agoom > 15)
369
371
    goom_lines
370
 
        (goomdata, data, ((pzfd->middleX == resolx / 2) && (pzfd->middleY == resoly / 2)
 
372
        (goomdata, data, ((pzfd->middleX == resolx / 2)
 
373
            && (pzfd->middleY == resoly / 2)
371
374
            && (pzfd->mode != WATER_MODE))
372
375
        ? (goomdata->lineMode / 10) : 0, goomdata->p2, goomdata->agoom - 15);
373
376
 
395
398
}
396
399
 
397
400
void
398
 
goom_close (GoomData *goomdata)
 
401
goom_close (GoomData * goomdata)
399
402
{
400
403
  if (goomdata->pixel != NULL)
401
404
    free (goomdata->pixel);
402
405
  if (goomdata->back != NULL)
403
406
    free (goomdata->back);
 
407
  if (goomdata->zfd != NULL) {
 
408
    zoomFilterDestroy (goomdata->zfd);
 
409
    goomdata->zfd = NULL;
 
410
  }
404
411
  goomdata->pixel = goomdata->back = NULL;
405
412
  RAND_CLOSE (goomdata);
406
413
}