A computer-implemented method for performing video compression comprising: encoding a plurality of video frames or portions thereof according to a first encoding format, wherein the video frames contain the graphical output of a game or application executed at one or more servers in response to control signals (406a-b) representing user input transmitted from a client device (205, 415); transmitting the plurality of encoded video frames or portions to the client device (205, 415); receiving feedback information from the client device (205, 415), the feedback information usable to determine whether data contained in the video frames or portions has been successfully received and decoded; determining latency associated with communicating with the client device; in response to not receiving an indication after a period of time that one or more video frames or portions thereof have been successfully received and decoded: if the latency is above a specified threshold, then encoding a new video frame or portion thereof according to a second encoding format, the second encoding format not being dependent on a previously-transmitted video frames or portions thereof; or if the latency is below a specified threshold, then encoding a new video frame or portion thereof according to the first encoding format, the new video frame encoded to be dependent on a last known successfully received video frame or portion thereof; and transmitting the new video frame or portion thereof to the client device (205, 415). encoding a plurality of video frames or portions thereof according to a first encoding format, wherein the video frames contain the graphical output of a game or application executed at one or more servers in response to control signals (406a-b) representing user input transmitted from a client device (205, 415); transmitting the plurality of encoded video frames or portions to the client device (205, 415); receiving feedback information from the client device (205, 415), the feedback information usable to determine whether data contained in the video frames or portions has been successfully received and decoded; determining latency associated with communicating with the client device; in response to not receiving an indication after a period of time that one or more video frames or portions thereof have been successfully received and decoded: if the latency is above a specified threshold, then encoding a new video frame or portion thereof according to a second encoding format, the second encoding format not being dependent on a previously-transmitted video frames or portions thereof; or if the latency is below a specified threshold, then encoding a new video frame or portion thereof according to the first encoding format, the new video frame encoded to be dependent on a last known successfully received video frame or portion thereof; and if the latency is above a specified threshold, then encoding a new video frame or portion thereof according to a second encoding format, the second encoding format not being dependent on a previously-transmitted video frames or portions thereof; or if the latency is below a specified threshold, then encoding a new video frame or portion thereof according to the first encoding format, the new video frame encoded to be dependent on a last known successfully received video frame or portion thereof; and transmitting the new video frame or portion thereof to the client device (205, 415).