writepic.c
上传用户:ma_junhua
上传日期:2008-04-11
资源大小:2752k
文件大小:2k
开发平台:

C/C++

  1. /* writepic.c, write reconstructed pictures                                 */
  2. /* Copyright (C) 1996, MPEG Software Simulation Group. All Rights Reserved. */
  3. /*
  4.  * Disclaimer of Warranty
  5.  *
  6.  * These software programs are available to the user without any license fee or
  7.  * royalty on an "as is" basis.  The MPEG Software Simulation Group disclaims
  8.  * any and all warranties, whether express, implied, or statuary, including any
  9.  * implied warranties or merchantability or of fitness for a particular
  10.  * purpose.  In no event shall the copyright-holder be liable for any
  11.  * incidental, punitive, or consequential damages of any kind whatsoever
  12.  * arising from the use of these programs.
  13.  *
  14.  * This disclaimer of warranty extends to the user of these programs and user's
  15.  * customers, employees, agents, transferees, successors, and assigns.
  16.  *
  17.  * The MPEG Software Simulation Group does not represent or warrant that the
  18.  * programs furnished hereunder are free of infringement of any third-party
  19.  * patents.
  20.  *
  21.  * Commercial implementations of MPEG-1 and MPEG-2 video, including shareware,
  22.  * are subject to royalty fees to patent holders.  Many of these patents are
  23.  * general enough such that they are unavoidable regardless of implementation
  24.  * design.
  25.  *
  26.  */
  27. #include <stdio.h>
  28. #include <stdlib.h>
  29. #include "config.h"
  30. #include "global.h"
  31. void writeframe(fname,frame)
  32. char *fname;
  33. unsigned char *frame[];
  34. {
  35.   int chrom_hsize, chrom_vsize;
  36.   char name[128];
  37.   FILE *fd;
  38.   chrom_hsize = (chroma_format==CHROMA444) ? horizontal_size
  39.                                            : horizontal_size>>1;
  40.   chrom_vsize = (chroma_format!=CHROMA420) ? vertical_size
  41.                                            : vertical_size>>1;
  42.   if (fname[0]=='-')
  43.     return;
  44.   /* Y */
  45.   sprintf(name,"%s.Y",fname);
  46.   if (!(fd = fopen(name,"wb")))
  47.   {
  48.     sprintf(errortext,"Couldn't create %sn",name);
  49.     error(errortext);
  50.   }
  51.   fwrite(frame[0],1,horizontal_size*vertical_size,fd);
  52.   fclose(fd);
  53.   /* Cb */
  54.   sprintf(name,"%s.U",fname);
  55.   if (!(fd = fopen(name,"wb")))
  56.   {
  57.     sprintf(errortext,"Couldn't create %sn",name);
  58.     error(errortext);
  59.   }
  60.   fwrite(frame[1],1,chrom_hsize*chrom_vsize,fd);
  61.   fclose(fd);
  62.   /* Cr */
  63.   sprintf(name,"%s.V",fname);
  64.   if (!(fd = fopen(name,"wb")))
  65.   {
  66.     sprintf(errortext,"Couldn't create %sn",name);
  67.     error(errortext);
  68.   }
  69.   fwrite(frame[2],1,chrom_hsize*chrom_vsize,fd);
  70.   fclose(fd);
  71. }