diff -urN mpeg2enc_old/Makefile mpeg2enc/Makefile
--- mpeg2enc_old/Makefile	Fri Aug 28 19:07:01 1998
+++ mpeg2enc/Makefile	Sat Sep 19 22:22:37 1998
@@ -33,9 +33,9 @@
 # GNU gcc
 #
 CC = gcc
-CFLAGS = -O2 -Wall -g
+CFLAGS = -O6 -malign-double -mcpu=pentiumpro -malign-loops=5 -malign-functions=5 -malign-jumps=5 -Wall
 
-OBJ = mpeg2enc.o conform.o putseq.o putpic.o puthdr.o putmpg.o putvlc.o putbits.o motion.o predict.o readpic.o writepic.o transfrm.o fdctref.o idct.o quantize.o ratectl.o stats.o
+OBJ = /root/Vstream0.4.4/getframe.o mpeg2enc.o conform.o putseq.o putpic.o puthdr.o putmpg.o putvlc.o putbits.o motion.o predict.o readpic.o writepic.o transfrm.o fdctref.o idct.o quantize.o ratectl.o stats.o
 
 all: mpeg2encode
 
diff -urN mpeg2enc_old/readpic.c mpeg2enc/readpic.c
--- mpeg2enc_old/readpic.c	Sat Jul 20 00:49:30 1996
+++ mpeg2enc/readpic.c	Tue Sep  1 03:41:23 1998
@@ -36,6 +36,7 @@
 static void read_y_u_v _ANSI_ARGS_((char *fname, unsigned char *frame[]));
 static void read_yuv _ANSI_ARGS_((char *fname, unsigned char *frame[]));
 static void read_ppm _ANSI_ARGS_((char *fname, unsigned char *frame[]));
+static void read_stream _ANSI_ARGS_((char *fname, unsigned char *frame[]));
 static void border_extend _ANSI_ARGS_((unsigned char *frame, int w1, int h1,
   int w2, int h2));
 static void conv444to422 _ANSI_ARGS_((unsigned char *src, unsigned char *dst));
@@ -56,6 +57,9 @@
   case T_PPM:
     read_ppm(fname,frame);
     break;
+  case 3:
+    read_stream(fname,frame);
+    break;
   default:
     break;
   }
@@ -252,6 +256,105 @@
     conv422to420(v422,frame[2]);
   }
 }
+
+extern unsigned char *getframe(char *fname);
+
+static void read_stream(fname,frame)
+char *fname;
+unsigned char *frame[];
+{
+  int i, j, pix;
+  int r, g, b;
+  double y, u, v;
+  double cr, cg, cb, cu, cv;
+  unsigned char *yp, *up, *vp;
+  static unsigned char *u444, *v444, *u422, *v422;
+  static double coef[7][3] = {
+    {0.2125,0.7154,0.0721}, /* ITU-R Rec. 709 (1990) */
+    {0.299, 0.587, 0.114},  /* unspecified */
+    {0.299, 0.587, 0.114},  /* reserved */
+    {0.30,  0.59,  0.11},   /* FCC */
+    {0.299, 0.587, 0.114},  /* ITU-R Rec. 624-4 System B, G */
+    {0.299, 0.587, 0.114},  /* SMPTE 170M */
+    {0.212, 0.701, 0.087}}; /* SMPTE 240M (1987) */
+  unsigned char *sframe;
+
+  i = matrix_coefficients;
+  if (i>8)
+    i = 3;
+
+  cr = coef[i-1][0];
+  cg = coef[i-1][1];
+  cb = coef[i-1][2];
+  cu = 0.5/(1.0-cb);
+  cv = 0.5/(1.0-cr);
+
+  if (chroma_format==CHROMA444)
+  {
+    u444 = frame[1];
+    v444 = frame[2];
+  }
+  else
+  {
+    if (!u444)
+    {
+      if (!(u444 = (unsigned char *)malloc(width*height)))
+        error("malloc failed");
+      if (!(v444 = (unsigned char *)malloc(width*height)))
+        error("malloc failed");
+      if (chroma_format==CHROMA420)
+      {
+        if (!(u422 = (unsigned char *)malloc((width>>1)*height)))
+          error("malloc failed");
+        if (!(v422 = (unsigned char *)malloc((width>>1)*height)))
+          error("malloc failed");
+      }
+    }
+  }
+
+  sframe=getframe(fname);
+  pix=0;
+
+  for (i=0; i<vertical_size; i++)
+  {
+    yp = frame[0] + i*width;
+    up = u444 + i*width;
+    vp = v444 + i*width;
+
+    for (j=0; j<horizontal_size; j++)
+    {
+      r=sframe[pix++];
+      g=sframe[pix++];
+      b=sframe[pix++];
+      /* convert to YUV */
+      y = cr*r + cg*g + cb*b;
+      u = cu*(b-y);
+      v = cv*(r-y);
+      yp[j] = (219.0/256.0)*y + 16.5;  /* nominal range: 16..235 */
+      up[j] = (224.0/256.0)*u + 128.5; /* 16..240 */
+      vp[j] = (224.0/256.0)*v + 128.5; /* 16..240 */
+    }
+  }
+
+  border_extend(frame[0],horizontal_size,vertical_size,width,height);
+  border_extend(u444,horizontal_size,vertical_size,width,height);
+  border_extend(v444,horizontal_size,vertical_size,width,height);
+
+  if (chroma_format==CHROMA422)
+  {
+    conv444to422(u444,frame[1]);
+    conv444to422(v444,frame[2]);
+  }
+
+  if (chroma_format==CHROMA420)
+  {
+    conv444to422(u444,u422);
+    conv444to422(v444,v422);
+    conv422to420(u422,frame[1]);
+    conv422to420(v422,frame[2]);
+  }
+}
+
 
 static void border_extend(frame,w1,h1,w2,h2)
 unsigned char *frame;
