book.c++ 2.95 KB
//====================================================================
// book.c++
//
// Synopsis:
//
// Author(s)
//  Steve Shepard
//
// Copyright 1993, Silicon Graphics, Inc.
// All Rights Reserved.
//
// This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics, Inc.;
// the contents of this file may not be disclosed to third parties, copied or
// duplicated in any form, in whole or in part, without the prior written
// permission of Silicon Graphics, Inc.
//
// RESTRICTED RIGHTS LEGEND:
// Use, duplication or disclosure by the Government is subject to restrictions
// as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
// and Computer Software clause at DFARS 252.227-7013, and/or in similar or
// successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
// rights reserved under the Copyright Laws of the United States.
//====================================================================

#include <stdlib.h>
#include "libbank.h"

ICBook::ICBook()
{
    declclass   = ICBOOK;
    order       = 0;
    npredictors = 0;
    bookp       = 0;
    size        = sizeof (ALADPCMBook) - sizeof (short);
}

ICBook::ICBook(short *b, int order_in, int npredictors_in)
{
    declclass   = ICBOOK;
    order       = order_in;
    npredictors = npredictors_in;
    bookp       = 0;

    int bookSize = npredictors*order*ADPCMVSIZE;
    size = sizeof(ALADPCMBook) - sizeof (short) + bookSize*sizeof(short) ;
    
    book = (short *)calloc(1, bookSize*sizeof(short));
    FailIf(!book, IC_INTERNAL_ERR);

    int i;
    for (i = 0; i < bookSize; i++)
        book[i] = b[i];
}

void ICBook::SetBookData(short *bookPtr, int order_in, int npredictors_in)
{
    order = order_in;
    npredictors = npredictors_in;
    
    int bookSize = npredictors*order*ADPCMVSIZE;

    size = sizeof(ALADPCMBook) - sizeof (short) + bookSize*sizeof(short) ;

    book = (short *)calloc(1, bookSize*sizeof(short));

    FailIf(!book, IC_INTERNAL_ERR);

    int i;
    for (i = 0; i < bookSize; i++)
        book[i] = bookPtr[i];
}

void ICBook::Assemble()
{
    int i;
    
    size = Size();

    ALADPCMBook *b = (ALADPCMBook *)calloc(1, size);
    FailIf(!b, IC_INTERNAL_ERR);

    b->order            = order;
    b->npredictors      = npredictors;

    int bsize = b->npredictors*b->order*ADPCMVSIZE;
    for (i=0; i<bsize; i++)
        b->book[i] = book[i];
    
    bookp = b;
    thing = bookp;
}

void ICBook::Print()
{
    short       *bcodes;
    int         i;
    int         j;
    
    if (declid) {
         printf("Book: %s\n", declid->name);
    } else {
         printf("Book: \n");
    }
    
    ICObject::Print();
    
    printf("\torder:\t\t= %d\n", bookp->order);
    printf("\tnpredictors:\t= %d\n", bookp->npredictors);
    printf("\tbook:\n\t");
    bcodes = bookp->book;
    for (i = 0; i < bookp->npredictors*bookp->order; i++){
        for (j=0; j<ADPCMVSIZE; j++)
            printf("%6d ",*bcodes++);
        printf("\n\t");
    }
    
    printf("\n");
}