~ubuntu-branches/ubuntu/trusty/libdv/trusty

« back to all changes in this revision

Viewing changes to libdv/dct.c

  • Committer: Bazaar Package Importer
  • Author(s): Daniel Kobras
  • Date: 2004-07-19 12:19:44 UTC
  • mfrom: (1.2.1 upstream) (2.1.1 warty)
  • Revision ID: james.westby@ubuntu.com-20040719121944-17vuryc01yeyx8hf
Tags: 0.103-2
* debian/rules: Provide separate doc directory for libdv4-dev.
* debian/libdv4-dev.links: No longer symlink doc dir to the one
  from libdv4.
* debian/NEWS: Only install into libdv4-dev. Closes: #259694

Show diffs side-by-side

added added

removed removed

Lines of Context:
8
8
 *  codec.
9
9
 *
10
10
 *  libdv is free software; you can redistribute it and/or modify it
11
 
 *  under the terms of the GNU General Public License as published by
12
 
 *  the Free Software Foundation; either version 2, or (at your
 
11
 *  under the terms of the GNU Lesser Public License as published by
 
12
 *  the Free Software Foundation; either version 2.1, or (at your
13
13
 *  option) any later version.
14
14
 *   
15
15
 *  libdv is distributed in the hope that it will be useful, but
16
16
 *  WITHOUT ANY WARRANTY; without even the implied warranty of
17
17
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
18
 
 *  General Public License for more details.
 
18
 *  Lesser Public License for more details.
19
19
 *   
20
 
 *  You should have received a copy of the GNU General Public License
21
 
 *  along with GNU Make; see the file COPYING.  If not, write to
 
20
 *  You should have received a copy of the GNU Lesser Public License
 
21
 *  along with libdv; see the file COPYING.  If not, write to
22
22
 *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. 
23
23
 *
24
24
 *  The libdv homepage is http://libdv.sourceforge.net/.  
25
25
 */
26
26
 
 
27
#ifdef HAVE_CONFIG_H
 
28
#include <config.h>
 
29
#endif
 
30
 
27
31
#include <math.h>
28
32
#include <string.h>
29
33
 
66
70
#endif /* (!ARCH_X86) || BRUTE_FORCE_DCT_248 || BRUTE_FORCE_DCT_88 */
67
71
 
68
72
#if ARCH_X86
69
 
void idct_block_mmx(int16_t *block);
70
 
void dct_88_block_mmx(int16_t* block);
71
 
void dct_block_mmx_postscale_88(int16_t* block, int16_t* postscale_matrix);
72
 
void dct_block_mmx_postscale_248(int16_t* block, int16_t* postscale_matrix);
73
 
void dct_248_block_mmx(int16_t* block);
74
 
void dct_248_block_mmx_post_sum(int16_t* out_block);
75
 
void transpose_mmx(short * dst);
 
73
void _dv_idct_block_mmx(int16_t *block);
 
74
void _dv_dct_88_block_mmx(int16_t* block);
 
75
void _dv_dct_block_mmx_postscale_88(int16_t* block, int16_t* postscale_matrix);
 
76
void _dv_dct_block_mmx_postscale_248(int16_t* block, int16_t* postscale_matrix);
 
77
void _dv_dct_248_block_mmx(int16_t* block);
 
78
void _dv_dct_248_block_mmx_post_sum(int16_t* out_block);
 
79
void _dv_transpose_mmx(short * dst);
76
80
#endif /* ARCH_X86 */
77
81
 
78
82
extern dv_coeff_t postSC88[64] ALIGN32;
79
83
extern dv_coeff_t postSC248[64] ALIGN32;
80
84
 
81
 
void dct_init(void) {
 
85
void _dv_dct_init(void) {
82
86
#if BRUTE_FORCE_DCT_248 || BRUTE_FORCE_DCT_88
83
87
  int u, z;
84
88
#endif /* BRUTE_FORCE_DCT_248 || BRUTE_FORCE_DCT_88 */
255
259
        out[6] = v43;
256
260
}
257
261
 
258
 
void postscale88(var v[64])
 
262
static void postscale88(var v[64])
259
263
{
260
264
        int i;
261
265
        int factor = pow(2, 16 + DCT_YUV_PRECISION);
318
322
        }
319
323
}
320
324
 
321
 
void postscale248(var v[64])
 
325
static void postscale248(var v[64])
322
326
{
323
327
        int i;
324
328
        int factor = pow(2, 16 + DCT_YUV_PRECISION);
329
333
 
330
334
/* Input has to be transposed !!! */
331
335
 
332
 
void dct_88(dv_coeff_t *block) {
 
336
void _dv_dct_88(dv_coeff_t *block) {
333
337
#if !ARCH_X86
334
338
#if BRUTE_FORCE_DCT_88
335
339
  int v,h,y,x,i;
357
361
  postscale88(block);
358
362
#endif /* BRUTE_FORCE_DCT_88 */
359
363
#else /* ARCH_X86 */
360
 
  dct_88_block_mmx(block);
361
 
  transpose_mmx(block);
362
 
  dct_88_block_mmx(block);
363
 
  dct_block_mmx_postscale_88(block, postSC88);
 
364
  _dv_dct_88_block_mmx(block);
 
365
  _dv_transpose_mmx(block);
 
366
  _dv_dct_88_block_mmx(block);
 
367
  _dv_dct_block_mmx_postscale_88(block, postSC88);
364
368
  emms(); 
365
369
#endif /* ARCH_X86 */
366
370
}
367
371
 
368
372
/* Input has to be transposed !!! */
369
373
 
370
 
void dct_248(dv_coeff_t *block) 
 
374
void _dv_dct_248(dv_coeff_t *block) 
371
375
{
372
376
#if !ARCH_X86
373
377
#if BRUTE_FORCE_DCT_248
398
402
  postscale248(block);
399
403
#endif /* BRUTE_FORCE_DCT_248 */
400
404
#else /* ARCH_X86 */
401
 
  dct_88_block_mmx(block);
402
 
  transpose_mmx(block);
403
 
  dct_248_block_mmx(block);
404
 
  dct_248_block_mmx_post_sum(block);
405
 
  dct_block_mmx_postscale_248(block, postSC248);
 
405
  _dv_dct_88_block_mmx(block);
 
406
  _dv_transpose_mmx(block);
 
407
  _dv_dct_248_block_mmx(block);
 
408
  _dv_dct_248_block_mmx_post_sum(block);
 
409
  _dv_dct_block_mmx_postscale_248(block, postSC248);
406
410
  emms();
407
411
#endif /* ARCH_X86 */
408
412
}
409
413
 
410
 
void idct_88(dv_coeff_t *block) 
 
414
void _dv_idct_88(dv_coeff_t *block) 
411
415
{
412
416
#if !ARCH_X86
413
417
  int v,h,y,x,i;
427
431
  for (i=0;i<64;i++)
428
432
    block[i] = temp[i];
429
433
#else
430
 
  idct_block_mmx(block);
 
434
  _dv_idct_block_mmx(block);
431
435
  emms();
432
436
#endif
433
437
}
434
438
 
435
439
#if BRUTE_FORCE_248
436
440
 
437
 
void idct_248(double *block) 
 
441
void _dv_idct_248(double *block) 
438
442
{
439
443
  int u,h,z,x,i;
440
444
  double temp[64];