A method for delivering encoded content data over a network, the content data being encoded at one or more quality levels, the method comprising: determining one or more respective data rates required to deliver the encoded content data at the one or more quality levels; and selecting a quality level for delivery in dependence on at least the one or more determined respective data rates; the method being characterised in that the determining of a data rate for a particular quality level comprises: being provided with pre-calculated data defining one or more critical points of a first type on a decoding schedule of the encoded content data of the particular quality, the critical points of the first type being points at which, for one or more other points on the decoding schedule from which when delivery occurs from the one or more other points a minimum threshold amount of encoded content data (S max) is buffered, a constant bit rate delivery schedule calculated for the one or more other points taking into account the buffered encoded content data and being of such a rate that buffer underflow does not occur is equal to the decoding schedule; wherein when actual delivery of the encoded content data to a current decoding point is behind a piecewise monotonic decreasing constant bit rate delivery schedule required to deliver the encoded content data from the start so that buffer underflow does not occur, and at least the minimum threshold amount of content is buffered, calculating the data rate required for delivery of remaining encoded data at the particular quality level from the current decoding point is performed in dependence on at least the critical points of the first type. determining one or more respective data rates required to deliver the encoded content data at the one or more quality levels; and selecting a quality level for delivery in dependence on at least the one or more determined respective data rates; the method being characterised in that the determining of a data rate for a particular quality level comprises: being provided with pre-calculated data defining one or more critical points of a first type on a decoding schedule of the encoded content data of the particular quality, the critical points of the first type being points at which, for one or more other points on the decoding schedule from which when delivery occurs from the one or more other points a minimum threshold amount of encoded content data (S max) is buffered, a constant bit rate delivery schedule calculated for the one or more other points taking into account the buffered encoded content data and being of such a rate that buffer underflow does not occur is equal to the decoding schedule; wherein when actual delivery of the encoded content data to a current decoding point is behind a piecewise monotonic decreasing constant bit rate delivery schedule required to deliver the encoded content data from the start so that buffer underflow does not occur, and at least the minimum threshold amount of content is buffered, calculating the data rate required for delivery of remaining encoded data at the particular quality level from the current decoding point is performed in dependence on at least the critical points of the first type. being provided with pre-calculated data defining one or more critical points of a first type on a decoding schedule of the encoded content data of the particular quality, the critical points of the first type being points at which, for one or more other points on the decoding schedule from which when delivery occurs from the one or more other points a minimum threshold amount of encoded content data (S max) is buffered, a constant bit rate delivery schedule calculated for the one or more other points taking into account the buffered encoded content data and being of such a rate that buffer underflow does not occur is equal to the decoding schedule; wherein when actual delivery of the encoded content data to a current decoding point is behind a piecewise monotonic decreasing constant bit rate delivery schedule required to deliver the encoded content data from the start so that buffer underflow does not occur, and at least the minimum threshold amount of content is buffered, calculating the data rate required for delivery of remaining encoded data at the particular quality level from the current decoding point is performed in dependence on at least the critical points of the first type.