#!/usr/bin/python

import sys
import struct

infile = "stream.yuv"



fp=[]


FH = open(infile, 'rb')

## read header (let's analyse it some day...)
pt=39
line = FH.read(pt)

lenY=640*480
lenUV = 320*240
frame_len=lenY+2*lenUV

## read "FRAME\n"

line = FH.read(6)

while line == 'FRAME\n':
   newf = open(infile, 'rb')
   newf.seek(pt+6)
   fp.append(newf)


   FH.seek(frame_len,1)
   pt+=6+frame_len

   line = FH.read(6)


print "P5\n640 720\n255"

output=[0]*frame_len

N=len(fp)/2

#for each pixel of each channel, read the vaues in every frame and perform the filtering
f=fp[-1]
for k in range(frame_len):
   output[k]=f.read(1)


for k in range(lenY):
   sys.stdout.write(output[k])


Sx=640
Sy=480
for k in range(Sy/2):
   for j in range(Sx/2):
       sys.stdout.write(output[lenY+      k*Sx/2 +j])
   for j in range(Sx/2):
       sys.stdout.write(output[lenY+lenUV+k*Sx/2 +j])