Skip to content

fix: JpegEncoder.encode maps buffer unnecessarily - #660

Open
andrewwhitecdw wants to merge 1 commit into
NVIDIA-AI-IOT:masterfrom
andrewwhitecdw:codequality/jpeg-encoder-jpegencoder-encode-maps-buffer
Open

fix: JpegEncoder.encode maps buffer unnecessarily#660
andrewwhitecdw wants to merge 1 commit into
NVIDIA-AI-IOT:masterfrom
andrewwhitecdw:codequality/jpeg-encoder-jpegencoder-encode-maps-buffer

Conversation

@andrewwhitecdw

Copy link
Copy Markdown

This PR addresses the following issue in jetbot/jpeg_encoder.py: JpegEncoder.encode maps buffer unnecessarily.

Changes

  • jetbot/jpeg_encoder.py: JpegEncoder.encode maps buffer unnecessarily.

Details

--- a/jetbot/jpeg_encoder.py
+++ b/jetbot/jpeg_encoder.py
@@ -1,4 +1,3 @@
-        sample = self.appsink.emit('pull-sample')  # blocks until sample avaialable
-        buf = sample.get_buffer()
-        (result, mapinfo) = buf.map(Gst.MapFlags.READ)
-        return buf.extract_dup(0, buf.get_size())
+        sample = self.appsink.emit('pull-sample')  # blocks until sample avaialable
+        buf = sample.get_buffer()
+        return buf.extract_dup(0, buf.get_size())

Tests

  • tests/test_jpeg_encoder.py
--- /dev/null
+++ b/tests/test_jpeg_encoder.py
@@ -0,0 +1,33 @@
+import unittest
+from unittest.mock import MagicMock
+
+from jetbot.jpeg_encoder import JpegEncoder
+
+
+class JpegEncoderEncodeTest(unittest.TestCase):
+    def test_encode_does_not_map_buffer(self):
+        encoder = object.__new__(JpegEncoder)
+        encoder.appsrc = MagicMock()
+
+        buf = MagicMock()
+        buf.get_size.return_value = 12
+        buf.extract_dup.return_value = b"jpeg-bytes"
+
+        sample = MagicMock()
+        sample.get_buffer.return_value = buf
+
+        encoder.appsink = MagicMock()
+        encoder.appsink.emit.return_value = sample
+
+        image = MagicMock()
+        image.tobytes.return_value = b"raw-image"
+
+        result = encoder.encode(image)
+
+        self.assertEqual(result, b"jpeg-bytes")
+        buf.map.assert_not_called()
+        buf.extract_dup.assert_called_once_with(0, 12)
+
+
+if __name__ == "__main__":
+    unittest.main()

Signed-off-by: andrewwhitecdw <andrewwhitecdw@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant