Incremental update
[platform/upstream/libvorbis.git] / lib / infores.c
1 /********************************************************************
2  *                                                                  *
3  * THIS FILE IS PART OF THE Ogg Vorbis SOFTWARE CODEC SOURCE CODE.  *
4  * USE, DISTRIBUTION AND REPRODUCTION OF THIS SOURCE IS GOVERNED BY *
5  * THE GNU PUBLIC LICENSE 2, WHICH IS INCLUDED WITH THIS SOURCE.    *
6  * PLEASE READ THESE TERMS DISTRIBUTING.                            *
7  *                                                                  *
8  * THE OggSQUISH SOURCE CODE IS (C) COPYRIGHT 1994-2000             *
9  * by Monty <monty@xiph.org> and The XIPHOPHORUS Company            *
10  * http://www.xiph.org/                                             *
11  *                                                                  *
12  ********************************************************************
13
14  function: pack/unpack/dup/clear the various residue backend setups
15  last mod: $Id: infores.c,v 1.1 2000/01/19 08:57:56 xiphmont Exp $
16
17  ********************************************************************/
18
19 #include <stdlib.h>
20 #include <string.h>
21 #include "vorbis/codec.h"
22 #include "bitwise.h"
23 #include "bookinternal.h"
24
25 /* handlers for residue backend 0 ***********************************/
26
27 /* unfinished as of 20000118 */
28 static void *_vorbis_res0_dup(void *source){
29   vorbis_info_res0 *d=malloc(sizeof(vorbis_info_res0));
30   memcpy(d,source,sizeof(vorbis_info_res0));
31   d->books=malloc(sizeof(int)*d->stages);
32   memcpy(d->books,((vorbis_info_res0 *)source)->books,
33          sizeof(int)*d->stages);
34   return(d); 
35 }
36
37 static void _vorbis_res0_free(void *i){
38   vorbis_info_res0 *d=(vorbis_info_res0 *)i;
39   if(d){
40     if(d->books)free(d->books);
41     memset(d,0,sizeof(vorbis_info_res0));
42     free(d);
43   }
44 }
45
46 /* not yet */
47 static void _vorbis_res0_pack(oggpack_buffer *opb, void *vi){
48 }
49
50 static void *_vorbis_res0_unpack(oggpack_buffer *opb){
51   vorbis_info_floor0 d;
52   memset(&d,0,sizeof(d));
53   return(_vorbis_res0_dup(&d));
54 }
55
56 /* stuff em into arrays ************************************************/
57 #define VI_RESB 1
58
59 static void *(*vorbis_res_dup_P[])(void *)={ 
60   _vorbis_res0_dup,
61 };
62
63 static void (*vorbis_res_free_P[])(void *)={ 
64   _vorbis_res0_free,
65 };
66
67 static void (*vorbis_res_pack_P[])(oggpack_buffer *,void *)={ 
68   _vorbis_res0_pack,
69 };
70
71 static void *(*vorbis_res_unpack_P[])(oggpack_buffer *)={ 
72   _vorbis_res0_unpack,
73 };
74