Abstract: 
A method for encoding and decoding a video stream comprising dividing the video stream into a first Key frame, and subsequent chunks each comprising 2n frames, each chunk including a Key frame and 2n1 Delta (Dx) frames, where x is a positive integer and denotes the level of the Delta frame, and where 2x1 denotes the number of Delta frames at that level in the chunk; the method including the step of constructing Dx level frames from adjacent Earlier and Later Dy frames, (where y < x and where for y = 0, Dy is a Key frame), for all frames in a chunk where x > 0; wherein the constructing step includes: dividing the frame into Motion Regions representing groups of pixels; determining a pixel group in an Earlier (E: Dy) and later (L: Dy) frame that is a best match for a pixel group in a Motion Region of a Current (C: Dx) frame; determining motion vectors for the best matches for Motion Regions, or by intraframe compression of frame C. The method is characterised by eliminating unnecessary information when building a bitstream such that as x increases, motion vector and other data relating to a combination of Dx frames (more numerous than the Dx1 frames) is represented by a quantity of data in the bitstream that, for a typical video, increases at a much lower rate than the quantity of frames in Dx compared to the quantity of frames in Dx 1.
