A method performed by a 360-degree video client device, said method comprising: rendering a first segment, S(p, j-1), of a first representation of a viewport-adaptive 360-degree video, the first representation being associated with a first target viewport, p, and the first segment S(p, j-1) being associated with a first time period, j-1, the first representation including all viewports of the video and having only the viewport p in high quality; retrieving a second segment, S(p, j), of the first representation of the video over a network from a server, the second segment being associated with a second time period, j, subsequent to the first time period, and storing the second segment S(p, j) in a base buffer; detecting that a viewing direction of a user operating the client device has changed from a direction associated with the first target viewport, p, to a direction associated with a second target viewport, q; in response to the detected change in the viewing direction, retrieving a third segment, S(q,j), of a second representation of the video over the network from the server and storing the third segment S(q, j) in a viewport buffer, the second representation being associated with the second target viewport, q, and the third segment, S(q,j), being associated with the second time period, j, the second representation including all viewports of the video and having only the viewport q in high quality; and rendering the second segment or the third segment during the second time period, wherein a determination of whether to render the second segment or the third segment is based on a viewing direction of the user at a starting time, t p (j), of the second time period. rendering a first segment, S(p, j-1), of a first representation of a viewport-adaptive 360-degree video, the first representation being associated with a first target viewport, p, and the first segment S(p, j-1) being associated with a first time period, j-1, the first representation including all viewports of the video and having only the viewport p in high quality; retrieving a second segment, S(p, j), of the first representation of the video over a network from a server, the second segment being associated with a second time period, j, subsequent to the first time period, and storing the second segment S(p, j) in a base buffer; detecting that a viewing direction of a user operating the client device has changed from a direction associated with the first target viewport, p, to a direction associated with a second target viewport, q; in response to the detected change in the viewing direction, retrieving a third segment, S(q,j), of a second representation of the video over the network from the server and storing the third segment S(q, j) in a viewport buffer, the second representation being associated with the second target viewport, q, and the third segment, S(q,j), being associated with the second time period, j, the second representation including all viewports of the video and having only the viewport q in high quality; and rendering the second segment or the third segment during the second time period, wherein a determination of whether to render the second segment or the third segment is based on a viewing direction of the user at a starting time, t p (j), of the second time period.