diff --git a/SDK/Python/blender_script.py b/SDK/Python/blender_script.py
index 753cabe50b33be598e1c55868ae0f29de14a5913..efc381e21ca1f96f59913cbb9df221d17a4c415f 100644
--- a/SDK/Python/blender_script.py
+++ b/SDK/Python/blender_script.py
@@ -140,19 +140,36 @@ def render():
     rl = tree.nodes.new('CompositorNodeRLayers')
 
     v = tree.nodes.new('CompositorNodeViewer')
-    v.use_alpha = True
+    v.use_alpha = False
+
+    #setup the depthmap calculation using blender's mist function:
+    #bpy.context.scene.render.layers['RenderLayer'].use_pass_mist = True
+    #bpy.context.scene.view_layers["View Layer"].use_pass_mist = True
+    #the depthmap can be calculated as the distance between objects and camera ('LINEAR'), or square/inverse square of the distance ('QUADRATIC'/'INVERSEQUADRATIC'):
+    bpy.context.scene.world.mist_settings.falloff = 'LINEAR'
+    #minimum depth:
+    bpy.context.scene.world.mist_settings.intensity = 0.1
+    #maximum depth (can be changed depending on the scene geometry to normalize the depth map whatever the camera orientation and position is):
+    bpy.context.scene.world.mist_settings.depth = 8.0
+
+    links.new(rl.outputs['Depth'],v.inputs['Image'])
+    bpy.ops.render.render()
+    pixels = bpy.data.images['Viewer Node']
+    depthim = (np.array(pixels.pixels[:]).reshape((pixels.size[1], pixels.size[0], pixels.channels))[:,:,0]).astype(np.float32)
+    # set invalid depth values to 0.0
+    depthim[depthim >= _d_max] = 0.0
+
+    print(np.amax(depthim))
 
     links.new(rl.outputs['Image'], v.inputs['Image'])
     # depth cannot be accessed in python; hack uses alpha to store z-values
-    links.new(rl.outputs['Depth'], v.inputs['Alpha'])
+    #links.new(rl.outputs['Depth'], v.inputs['Alpha'])
 
     bpy.ops.render.render()
-    pixels = bpy.data.images['Viewer Node']
-    im = np.array(pixels.pixels[:]).reshape((pixels.size[1], pixels.size[0], pixels.channels))
+    pixels2 = bpy.data.images['Viewer Node']
+    im = np.array(pixels2.pixels[:]).reshape((pixels2.size[1], pixels2.size[0], pixels2.channels))
     
-    # set invalid depth values to 0.0
-    im[:,:,3][im[:,:,3] >= _d_max] = 0.0
-    return (im[:,:,0:3]*255.0).astype(np.uint8), (im[:,:,3]).astype(np.float32)
+    return (im[:,:,0:3]*255.0).astype(np.uint8), depthim
 
 def render_stereo(camera, baseline=0.15):
     bpy.context.scene.camera = camera
@@ -207,8 +224,8 @@ err = ftlImageWrite(stream, 0, 0, 3, 0, image.imL.ctypes.data_as(c_void_p))
 print(err)
 err = ftlImageWrite(stream, 0, 2, 3, 0, image.imR.ctypes.data_as(c_void_p))
 print(err)
-#err = ftlImageWrite(stream, 0, 1, 0, 0, image.depthL.ctypes.data_as(c_void_p))
-#print(err)
+err = ftlImageWrite(stream, 0, 22, 0, 0, image.depthL.ctypes.data_as(c_void_p))
+print(err)
 err = ftlDestroyStream(stream)
 print(err)
 
diff --git a/components/codecs/src/generate.cpp b/components/codecs/src/generate.cpp
index b6b3c3be98aeef8a1672ea1322c359c0632f3197..f39167dfd6e1ac1e953be8813ca9725c600e47de 100644
--- a/components/codecs/src/generate.cpp
+++ b/components/codecs/src/generate.cpp
@@ -30,6 +30,7 @@ void init_encoders() {
 
     encoders.push_back(new ftl::codecs::OpenCVEncoder(definition_t::HD1080, definition_t::HD720));
     encoders.push_back(new ftl::codecs::OpenCVEncoder(definition_t::HD1080, definition_t::HD720));
+	encoders.push_back(new ftl::codecs::OpenCVEncoder(definition_t::HD1080, definition_t::HD720));
     encoders.push_back(new ftl::codecs::OpenCVEncoder(definition_t::SD576, definition_t::LD360));
     encoders.push_back(new ftl::codecs::OpenCVEncoder(definition_t::SD576, definition_t::LD360));
 	encoders.push_back(new ftl::codecs::OpenCVEncoder(definition_t::SD576, definition_t::LD360));
diff --git a/components/codecs/src/opencv_encoder.cpp b/components/codecs/src/opencv_encoder.cpp
index 2d2e19b5698d10ee8fae1478d74d2eebaee43ebc..1bb96812802eb59b0ac97bd07f9700e53596a57e 100644
--- a/components/codecs/src/opencv_encoder.cpp
+++ b/components/codecs/src/opencv_encoder.cpp
@@ -56,9 +56,9 @@ bool OpenCVEncoder::encode(const cv::cuda::GpuMat &in, ftl::codecs::Packet &pkt)
 	in.download(tmp_);
 	//CHECK(cv::Size(ftl::codecs::getWidth(definition), ftl::codecs::getHeight(definition)) == in.size()); 
 
-	if (!is_colour) {
-		tmp_.convertTo(tmp_, CV_16U, 1000.0f);
-	}
+	//if (!is_colour) {
+		//tmp_.convertTo(tmp_, CV_16U, 1000.0f);
+	//}
 
 	int width = ftl::codecs::getWidth(current_definition_);
 	int height = ftl::codecs::getHeight(current_definition_);