1. A method for encoding a video, comprising: (a) encoding two successive input frames of the video, a preceding input frame and a succeeding input frame, comprising: (a1) dividing the preceding input frame into slices, each slice characterizing a spatial region within the preceding input frame; (a2) dividing the succeeding input frame into slices, each slice characterizing a spatial region within the succeeding input frame; (a3) processing one or more slices in the preceding input frame by one or more cores in a multi-core processor or by one or more hardware processors; (a4) processing a slice in the succeeding input frame provided: (i) at least one of said one or more cores in the multi-core processor or said one or more hardware processors is available for processing; and (ii) the processing of a slice from said one or more slices at same physical location in the preceding input frame has been completed; wherein the steps (a3) and (a4) are performed at least partially in parallel.