16to24.c
上传用户:aoeyumen
上传日期:2007-01-06
资源大小:3329k
文件大小:1k
源码类别:

DVD

开发平台:

Unix_Linux

  1. #include <sys/time.h>
  2. #include <sys/types.h>
  3. #include <sys/stat.h>
  4. #include <fcntl.h>
  5. #include <sys/ioctl.h>
  6. #include <unistd.h>
  7. #include <stdlib.h>
  8. #include <stdio.h>
  9. #include <sys/mman.h>
  10. #include <errno.h>
  11. void main(int argc,char *argv[]) {
  12.   unsigned char *buf=NULL,*tbuf,*rawbuf=NULL,*trawbuf;
  13.   unsigned char b1,b2;
  14.   unsigned long bytes;
  15.   int p,r,g,b;
  16.   buf = (unsigned char *)malloc(1280);
  17.   if (!buf)
  18.     perror("allocating main buffer"),exit(1);
  19.   rawbuf = (unsigned char *)malloc(3840);
  20.   if (!rawbuf)
  21.     perror("allocating secondary buffer"),exit(1);
  22.   while (bytes = read(STDIN_FILENO,buf,1280)) {
  23. /*    fprintf(stderr,"got %d bytes from readn",bytes);*/
  24.     tbuf = buf;
  25.     trawbuf = rawbuf;
  26.     for (p=0;p<(bytes/2);p++) {
  27.       b2 = *(tbuf++);
  28.       b1 = *(tbuf++);
  29.       *(trawbuf++) = b1 & 0xf8;
  30.       *(trawbuf++) = ((b1 & 0x07) << 5) | ((b2 & 0xe0) >> 3);
  31.       *(trawbuf++) = (b2 & 0x1f) << 3;
  32.     }
  33.     write(STDOUT_FILENO,rawbuf,((bytes/2)*3));
  34.   }
  35. }