Decoder: directly use surface object for decoding