www.gusucode.com > 一个可以在局域网进行视频聊天的源代码 > 一个可以在局域网进行视频聊天的源代码/VoIP/decoder/main.cpp

    


#include<stdio.h>
#include "tmndec.h"
#include "conio.h"


#define IMAGE_SIZE  76032
#define FILE_SIZE   76086
#define IMAGE_WIDTH  176
#define IMAGE_HEIGHT 144


unsigned char rgbdata[80000];

struct bmpfileheader
{
int fsize;
int reserved;
int offset;
}bfh;

struct bmpinfoheader
{
int bisize;
int biwidth;
int biheight;
short biplanes;
short bibitcount;
int bicompression;
int bisizeimage;
int bixpixelspermeter;
int biypixelspermeter;
int biclrused;
int biclrimp;
}bih;

void main()
{
unsigned char data[5000] ;
int i;
int n,size=2130;
FILE *f,*bmp;
char tstr[]="BM";

	
   InitH263Decoder();
  
   
   //Read from the file
		
   f=fopen("h263","rb");
  
   if(f==NULL)
   {
   printf("error in opening file");
   return;
   }

    n=fread(data,sizeof(char),size,f);
	if(n<size)
	{
	printf("total data read...%d \n terminating...",n);
	return;
	}
  

   
 
  
	for(i=0;i<5;i++)
	{

		printf("\ndecompressing frame...%d",i);
  
		int ret=DecompressFrame(data,size,rgbdata,80000);
		
		if(ret)
			printf("\n success");
		else
		{
			printf("\n failure");
			continue;
		}
  
    

			//Create bitmap file.....
			bmp=fopen("my.bmp","wb");

		  if(bmp==NULL)
		  {
			 printf("unable to create bmp file");
			return;
		  }

		  // Write 2 standard bytes .."BM"
		  fwrite(tstr,1,2,bmp);
		
		  // create and write file header
		  bfh.fsize=FILE_SIZE;
		  bfh.reserved=0;
		  bfh.offset=40+14;

	      fwrite(&bfh,1,sizeof(bfh),bmp);

		  //create and write bmp header
		  bih.bibitcount=24;
		  bih.biclrimp=0;
		  bih.biclrused=0;
		  bih.bicompression=0;
		  bih.biheight=IMAGE_HEIGHT;
		  bih.biplanes=1;  //if does not work change it to 0
		  bih.bisize=40;
		  bih.bisizeimage=0;
		  bih.biwidth=IMAGE_WIDTH;
		  bih.bixpixelspermeter=0;
		  bih.biypixelspermeter=0;

		  fwrite(&bih,1,sizeof(bih),bmp);


		  // now write image data.....
		  fwrite(rgbdata,1,IMAGE_SIZE,bmp);

		  // close the file safely...
		  fclose(bmp);

	}
  
 // Finaly close the decoder safely....
  ExitH263Decoder();
  

  fclose(f);

  
}