Có hai dòng dữ liệu chính trong bộ mã hóa, từ trái qua phải (mã hóa) và phải qua trái (tạo lại). Dòng mã hóa như sau:
1. Một khung video đầu vào Fn được mã hóa và được xử lý theo đơn vị khối Macro (tương đương với một miền 16x16 và tương hợp với các mẫu đơn sắc).
2. Fn được so sánh với một khung tham chiếu, chẳng hạn khung đã được mã hóa trước đó (F’n-1). Chức năng ước lượng chuyển động cần tìm kiếm một vùng 16x16 trong F’n-1 (hay một mẫu trong khung F’n-1) phù hợp với khối Macro hiện thời trong khung Fn (tức là tương đương nhau theo một số tiêu chuẩn nào đó). Độ dịch giữa vị trí khối Macro hiện thời với khối tham chiếu là một vectơ chuyển động MV.
3. Dựa trên vectơ chuyển động đã chọn MV, một dự đoán bù chuyển động P được sinh ra (vùng 16x16 được chọn bởi bộ phận ước lượng chuyển động). 4. Giảm P đi một lượng bằng khối Macro hiện hành để sinh ra một khối Macro
dư D.
5. D được biến đổi bằng DCT. Thông thường, D được chia thành các khối con 8x8 hay 4x4 và mỗi khối con được biến đổi một cách độc lập.
6. Mỗi khối con được lượng tử hóa (X)
7. Các hệ số DCT của mỗi khối con được sắp xếp lại và được mã hóa ở mức thực thi.
8. Cuối cùng các hệ số, vectơ chuyển động và thông tin mào đầu tương ứng của mỗi khối Macro được mã hóa entropy để sinh ra dòng bít nén.
Quá trình tạo lại dữ liệu như sau:
Mỗi khối Macro X (đã được lượng tử hóa) được đặt lại tỉ lệ và được biến đổi ngược để sinh ra một khối giải mã dư D’. Chú ý rằng quá trình lượng tử hóa không tái tạo được có nghĩa là D’ không giống D (tức là dã có méo). Dự đoán bù chuyển động P được thêm vào phần dư D’ để tạo lại khối
Macro và các khối Macro được tạo lại được lưu lại rồi tạo lại khung F’n. Sau khi mã hóa xong một khung, khung tạo lại F’n có thể được dùng như một khung tham chiếu cho khung mã hóa tiếp theo Fn+1.