A system comprising: a plurality of execution units; and a memory; wherein the system is configured to: partition a Huffman encoded bitstream into a plurality of chunks prior to recording any end of symbol bitstream locations; assign a separate chunk of the encoded bitstream and an extra portion of an adjacent chunk to each execution unit of the plurality of execution units, such that data corresponding to at least two chunks is assigned to each execution unit; and characterised in that each execution unit of the plurality of execution units excluding a last execution unit, is configured to: retrieve, prior to decoding, the separate chunk of the encoded bitstream and the extra portion of the adjacent chunk; decode the separate chunk and the extra portion of the adjacent chunk assigned to the execution unit, wherein decoding of both the separate chunk and the extra portion is performed in parallel by the plurality of execution units; record a first plurality of end of symbol bitstream locations for N decoded symbols of the separate chunk and a second plurality of end of symbol bitstream locations for N decoded symbols of the extra portion, where N is a positive integer; determine a given location where the second plurality of end of symbol bitstream locations match end of symbol bitstream locations for N decoded symbols for data of the adjacent chunk decoded by an adjacent execution unit; and copy, in the memory, decoded data of the adjacent chunk between a beginning of the adjacent chunk and the given location. a plurality of execution units; and a memory; wherein the system is configured to: partition a Huffman encoded bitstream into a plurality of chunks prior to recording any end of symbol bitstream locations; assign a separate chunk of the encoded bitstream and an extra portion of an adjacent chunk to each execution unit of the plurality of execution units, such that data corresponding to at least two chunks is assigned to each execution unit; and characterised in that partition a Huffman encoded bitstream into a plurality of chunks prior to recording any end of symbol bitstream locations; assign a separate chunk of the encoded bitstream and an extra portion of an adjacent chunk to each execution unit of the plurality of execution units, such that data corresponding to at least two chunks is assigned to each execution unit; and characterised in that retrieve, prior to decoding, the separate chunk of the encoded bitstream and the extra portion of the adjacent chunk; decode the separate chunk and the extra portion of the adjacent chunk assigned to the execution unit, wherein decoding of both the separate chunk and the extra portion is performed in parallel by the plurality of execution units; record a first plurality of end of symbol bitstream locations for N decoded symbols of the separate chunk and a second plurality of end of symbol bitstream locations for N decoded symbols of the extra portion, where N is a positive integer; determine a given location where the second plurality of end of symbol bitstream locations match end of symbol bitstream locations for N decoded symbols for data of the adjacent chunk decoded by an adjacent execution unit; and copy, in the memory, decoded data of the adjacent chunk between a beginning of the adjacent chunk and the given location.