Newer
Older
Import / research / video-compression / strips / decompress / decompress.cpp
/*
 * =====================================================================================
 *
 *       Filename:  build-table.cpp
 *
 *    Description:  
 *
 *        Version:  1.0
 *        Created:  03/04/2011 22:11:22
 *       Revision:  none
 *       Compiler:  gcc
 *
 *         Author:  John Ryland (jryland), jryland@xiaofrog.com
 *        Company:  InvertedLogic
 *
 * =====================================================================================
 */
#include <QApplication>
#include <QPixmap>
#include <QImage>
#include <stdio.h>


void readImage(FILE *f, unsigned char *image)
{
    unsigned int grid[1024];
    unsigned int cols[512];
    unsigned int rows[512];
    unsigned int diag[1024];
    unsigned int diag2[1024];
    fread(grid, 4, 1024, f);
    fread(cols, 4, 512, f);
    fread(rows, 4, 512, f);
    fread(diag, 4, 1024, f);
    fread(diag2, 4, 1024, f);

    for (int j = 0; j < 512; j++)
        for (int i = 0; i < 512; i++)
            image[512*j+i] = (grid[(i/16) + (j/16)*32] + diag[i+j] + diag[512-i+j] + rows[j] + cols[i]) / 5;
}


void dumpImage(int s, unsigned char *image, int depth)
{
    QImage outputImage(s, s, QImage::Format_RGB888);
    for (int y = 0; y < s; y++) {
        for (int x = 0; x < s; x++) {
            unsigned char p = image[y*s+x];
            unsigned int p2 = p;
            p2 = (p2 << 16) | (p2 << 8) | p2;
            outputImage.setPixel(x, y, p2);
        }
    }
    outputImage.save(QString("output%1.png").arg(depth));
}


int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

printf("starting\n");

    const int size = 512*512;
    unsigned char *image = (unsigned char *)malloc(size);
printf("alloced mem\n");
    memset(image, 0, size);
printf("zeroed mem\n");

    FILE *f = fopen("blah.out", "r");
    //readTree(f, &headNode, 0, 512, 512, true);
    readImage(f, image);
    fclose(f);
printf("read tree\n");

    dumpImage(512, image, 0);

    return 0;//app.exec();
}