A method of decoding three-dimensional video data, the method comprising: determining a first macroblock of a first texture view is to be decoded using a block-based view synthesis mode; locating, in a depth view, a first depth block that corresponds to the first macroblock of the first texture view; determining depth values of two or more corner positions of the first depth block; based on the depth values, deriving a disparity vector for the first macroblock, characterised by; for a first sub-block of the first macroblock of the first texture view, decoding using the disparity vector; for a second sub-block of the first macroblock of the first texture view, decoding using the disparity vector; determining a second macroblock of the first texture view is to be decoded using a mode selected from the group consisting of a skip mode, a direct mode, a merge mode, and an inter-prediction mode; locating, in the depth view, a second depth block that corresponds to the second macroblock of the first texture view; determining depth values of two or more corner positions of the second depth block, wherein the two or more corner positions of the second depth block comprise the same two or more corner positions of the second depth block as the first depth block; based on the depth values of the second depth block, deriving a disparity vector for the second macroblock; for a first sub-block of the second macroblock of the first texture view, decoding using the disparity vector for the second macroblock; for a second sub-block of the second macroblock of the first texture view, decoding using the disparity vector for the second macroblock. determining a first macroblock of a first texture view is to be decoded using a block-based view synthesis mode; locating, in a depth view, a first depth block that corresponds to the first macroblock of the first texture view; determining depth values of two or more corner positions of the first depth block; based on the depth values, deriving a disparity vector for the first macroblock, characterised by; for a first sub-block of the first macroblock of the first texture view, decoding using the disparity vector; for a second sub-block of the first macroblock of the first texture view, decoding using the disparity vector; determining a second macroblock of the first texture view is to be decoded using a mode selected from the group consisting of a skip mode, a direct mode, a merge mode, and an inter-prediction mode; locating, in the depth view, a second depth block that corresponds to the second macroblock of the first texture view; determining depth values of two or more corner positions of the second depth block, wherein the two or more corner positions of the second depth block comprise the same two or more corner positions of the second depth block as the first depth block; based on the depth values of the second depth block, deriving a disparity vector for the second macroblock; for a first sub-block of the second macroblock of the first texture view, decoding using the disparity vector for the second macroblock; for a second sub-block of the second macroblock of the first texture view, decoding using the disparity vector for the second macroblock.