Out of band / batch deduplication is deduplication done outside of the write path. We've sometimes called it offline deduplication, but that can confuse people: btrfs dedup involves the kernel and always happens on mounted filesystems.
bedup implements incremental whole-file batch deduplication for Btrfs.
bedup supports mainline kernels (Linux 3.3 is required by the file locking implementation, 3.6 is required for cross-subvolume operation), using the clone ioctl (which exposes Btrfs' copy-on-write functionality).
An ioctl dedicated to batch deduplication was merged in Linux 3.12. It brings in-kernel locking (btrfs guarantees that the deduplicated data is identical without the need for outside locks), better support for read-only snapshots, and retains the features and much of the implementation of the clone ioctl. There is an experimental bedup branch using the new ioctl.
Inband / synchronous / inline deduplication is deduplication done in the write path. Patches are currently being worked on.