rlib.cpp
上传用户:panstart
上传日期:2022-04-12
资源大小:199k
文件大小:3k
源码类别:

IP电话/视频会议

开发平台:

C++ Builder

  1. ////////////////////////////////////////////////////////////////////////////
  2. //
  3. //
  4. //    Project     : VideoNet version 1.1.
  5. //    Description : Peer to Peer Video Conferencing over the LAN.
  6. //   Author      : Nagareshwar Y Talekar ( nsry2002@yahoo.co.in)
  7. //    Date        : 15-6-2004.
  8. //
  9. //    I have converted origional fast h.263 encoder library from C to C++ 
  10. //   so that it can be integrated into any windows application easily.
  11. //   I have removed some of unnecessary codes/files from the
  12. //   fast h263 library.Also moved definitions and declarations
  13. //   in their proper .h and .cpp files.
  14. //
  15. //    File description : 
  16. //    Name    : rlib.cpp
  17. //    Details : Reading and writing to file...
  18. //
  19. /////////////////////////////////////////////////////////////////////////////
  20. #include "rlib.h"
  21. //#include "owntypes.h"
  22. int ReadQCIF(FILE *f, struct qcif *qc)
  23. {
  24.   struct qcif8bit source;
  25.   int i;
  26.   int file_err;
  27.   unsigned int *ud;
  28.   unsigned char *us;
  29.   file_err = fread(&source, sizeof(source), 1, f);
  30.   if(file_err != 1)
  31.     return FALSE;
  32.   us = &source.Y[0][0];
  33.   ud = &qc->Y[0][0];
  34.   
  35.   for(i = 0; i < QCIF_YWIDTH*QCIF_YHEIGHT; i++)
  36.     *ud++ = (unsigned int) *us++;
  37.   
  38.   us = &source.U[0][0];
  39.   ud = &qc->U[0][0];
  40.   
  41.   for(; i < QCIF_YWIDTH*QCIF_YHEIGHT + QCIF_UWIDTH*QCIF_UHEIGHT + 
  42. QCIF_VWIDTH*QCIF_VHEIGHT; i++)
  43.     *ud++ = (signed int) *us++;
  44.   return TRUE;
  45. }
  46. int ReadCIF(FILE *f, struct cif *qc)
  47. {
  48.   struct cif8bit source;
  49.   int i;
  50.   int file_err;
  51.   unsigned int *ud;
  52.   unsigned char *us;
  53.   file_err = fread(&source, sizeof(source), 1, f);
  54.   if(file_err != 1)
  55.     return FALSE;
  56.   us = &source.Y[0][0];
  57.   ud = &qc->Y[0][0];
  58.   
  59.   for(i = 0; i < CIF_YWIDTH*CIF_YHEIGHT; i++)
  60.     *ud++ = (unsigned int) *us++;
  61.   
  62.   us = &source.U[0][0];
  63.   ud = &qc->U[0][0];
  64.   
  65.   for(; i < CIF_YWIDTH*CIF_YHEIGHT + CIF_UWIDTH*CIF_UHEIGHT + 
  66. CIF_VWIDTH*CIF_VHEIGHT; i++)
  67.     *ud++ = (signed int) *us++;
  68.   return TRUE;
  69. }
  70. int WriteQCIF(FILE *f, struct qcif *qc)
  71. {
  72.   struct qcif8bit dest;
  73.   int i;
  74.   int file_err;
  75.   unsigned char *ud;
  76.   unsigned int *us;
  77.   us = &qc->Y[0][0];
  78.   ud = &dest.Y[0][0];
  79.   
  80.   for(i = 0; i < QCIF_YWIDTH*QCIF_YHEIGHT; i++)
  81.     *ud++ = (unsigned char) *us++;
  82.   
  83.   us = &qc->U[0][0];
  84.   ud = &dest.U[0][0];
  85.   for(; i < QCIF_YWIDTH*QCIF_YHEIGHT + QCIF_UWIDTH*QCIF_UHEIGHT + 
  86. QCIF_VWIDTH*QCIF_VHEIGHT; i++)
  87.     *ud++ = (unsigned char) *us++;
  88.  file_err = fwrite(&dest, sizeof(dest), 1, f);
  89.  return (file_err == 1);
  90. }
  91. int WriteCIF(FILE *f, struct cif *qc)
  92. {
  93.   struct cif8bit dest;
  94.   int i;
  95.   int file_err;
  96.   unsigned char *ud;
  97.   unsigned int *us;
  98.   us = &qc->Y[0][0];
  99.   ud = &dest.Y[0][0];
  100.   
  101.   for(i = 0; i < CIF_YWIDTH*CIF_YHEIGHT; i++)
  102.     *ud++ = (unsigned char) *us++;
  103.   
  104.   us = &qc->U[0][0];
  105.   ud = &dest.U[0][0];
  106.   for(; i < CIF_YWIDTH*CIF_YHEIGHT + CIF_UWIDTH*CIF_UHEIGHT + 
  107. CIF_VWIDTH*CIF_VHEIGHT; i++)
  108.     *ud++ = (unsigned char) *us++;
  109.  file_err = fwrite(&dest, sizeof(dest), 1, f);
  110.  return (file_err == 1);
  111. }