A computer-implemented method for performing video compression comprising: encoding a plurality of video frames (501-503) 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 ; transmitting the plurality of encoded video frames (611-613) or portions to the client device ; receiving feedback information from the client device , the feedback information usable to determine whether data contained in the video frames (611-613) 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 (611-613) or portions thereof have been successfully received and decoded: if the latency is above a specified threshold, then encoding a new video frame (501-503) or portion thereof according to a second encoding format, the second encoding format not being dependent on a previously-transmitted video frames (501-503) or portions thereof; or if the latency is below a specified threshold, then encoding a new video frame (501-503) or portion thereof according to the first encoding format, the new video frame (501-503) encoded to be dependent on a last known successfully received video frame (611-613) or portion thereof; and transmitting the new video frame or portion thereof to the client device . encoding a plurality of video frames (501-503) 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 ; transmitting the plurality of encoded video frames (611-613) or portions to the client device ; receiving feedback information from the client device , the feedback information usable to determine whether data contained in the video frames (611-613) 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 (611-613) or portions thereof have been successfully received and decoded: if the latency is above a specified threshold, then encoding a new video frame (501-503) or portion thereof according to a second encoding format, the second encoding format not being dependent on a previously-transmitted video frames (501-503) or portions thereof; or if the latency is below a specified threshold, then encoding a new video frame (501-503) or portion thereof according to the first encoding format, the new video frame (501-503) encoded to be dependent on a last known successfully received video frame (611-613) or portion thereof; and if the latency is above a specified threshold, then encoding a new video frame (501-503) or portion thereof according to a second encoding format, the second encoding format not being dependent on a previously-transmitted video frames (501-503) or portions thereof; or if the latency is below a specified threshold, then encoding a new video frame (501-503) or portion thereof according to the first encoding format, the new video frame (501-503) encoded to be dependent on a last known successfully received video frame (611-613) or portion thereof; and transmitting the new video frame or portion thereof to the client device . <EOS>