(self)
| 299 | |
| 300 | # Read frame from source |
| 301 | def _readFrame(self): |
| 302 | frame = bytearray() |
| 303 | |
| 304 | if not self.active: |
| 305 | return frame |
| 306 | |
| 307 | if self.eos: |
| 308 | return frame |
| 309 | |
| 310 | if self.video: |
| 311 | if self.frame_ratio > 1: |
| 312 | _, tmp_frame = self.stream.read() |
| 313 | self.frame_drop += (self.frame_ratio - 1) |
| 314 | if self.frame_drop > 1: |
| 315 | logger.debug(f"Frames to drop: {self.frame_drop}") |
| 316 | drop = int(self.frame_drop // 1) |
| 317 | for i in range(drop): |
| 318 | _, _ = self.stream.read() |
| 319 | logger.debug(f"Frames dropped: {drop}") |
| 320 | self.frame_drop -= drop |
| 321 | logger.debug(f"Frames left to drop: {self.frame_drop}") |
| 322 | else: |
| 323 | _, tmp_frame = self.stream.read() |
| 324 | if tmp_frame is None: |
| 325 | self.eos = True |
| 326 | logger.debug("End of stream.") |
| 327 | else: |
| 328 | tmp_frame = cv2.imread(self.filename) |
| 329 | self.eos = True |
| 330 | logger.debug("End of stream.") |
| 331 | |
| 332 | if tmp_frame is not None: |
| 333 | tmp_frame = self.__resizeFrame(tmp_frame, self.resolution) |
| 334 | tmp_frame = self.__changeColorSpace(tmp_frame, self.color_format) |
| 335 | frame = bytearray(tmp_frame.tobytes()) |
| 336 | |
| 337 | return frame |
| 338 | |
| 339 | # Write frame to destination |
| 340 | def _writeFrame(self, frame): |
no test coverage detected