Skip to content

Commit

Permalink
Improve encoder debugging
Browse files Browse the repository at this point in the history
Output the bitrate and implement a proper fix for py3 unicode strings
  • Loading branch information
waveform80 committed Nov 18, 2016
1 parent eb186a1 commit 8db71e9
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 12 deletions.
4 changes: 2 additions & 2 deletions picamera/encoders.py
Original file line number Diff line number Diff line change
Expand Up @@ -387,13 +387,13 @@ def start(self, output):
encoders), or an iterable of filenames or file-like objects (for
multi-image encoders).
"""
if self.DEBUG > 0:
mo.print_pipeline(self.output_port)
self.event.clear()
self.exception = None
self._open_output(output)
with self.parent._encoders_lock:
self.output_port.enable(self._callback)
if self.DEBUG > 0:
mo.print_pipeline(self.output_port)
self.parent._start_capture(self.camera_port)

def wait(self, timeout=None):
Expand Down
26 changes: 16 additions & 10 deletions picamera/mmalobj.py
Original file line number Diff line number Diff line change
Expand Up @@ -402,11 +402,11 @@ def print_pipeline(port):
Prints a human readable representation of the pipeline feeding the
specified :class:`MMALVideoPort` *port*.
"""
rows = [[], [], [], []]
rows = [[], [], [], [], []]
under_comp = False
for obj in reversed(list(debug_pipeline(port))):
if isinstance(obj, MMALComponent):
rows[0].append(obj.name.decode('ascii'))
rows[0].append(obj.name)
under_comp = True
elif isinstance(obj, MMALVideoPort):
rows[0].append('[%d]' % obj._port[0].index)
Expand All @@ -420,21 +420,26 @@ def print_pipeline(port):
rows[2].append('buf')
rows[2].append('%dx%d' % (obj._port[0].buffer_num, obj._port[0].buffer_size))
if under_comp:
rows[3].append('frame')
rows[3].append('bitrate')
rows[3].append('%dbps' % (obj._port[0].format[0].bitrate))
if under_comp:
rows[4].append('frame')
under_comp = False
rows[3].append('%dx%d@%sfps' % (
rows[4].append('%dx%d@%sfps' % (
obj._port[0].format[0].es[0].video.width,
obj._port[0].format[0].es[0].video.height,
obj.framerate))
elif isinstance(obj, MMALConnection):
rows[0].append('')
rows[1].append('-->')
rows[2].append('')
rows[1].append('')
rows[2].append('-->')
rows[3].append('')
rows[4].append('')
if under_comp:
rows[1].append('encoding')
rows[2].append('buf')
rows[3].append('frame')
rows[3].append('bitrate')
rows[4].append('frame')
cols = list(zip(*rows))
max_lens = [max(len(s) for s in col) + 2 for col in cols]
rows = [
Expand Down Expand Up @@ -525,7 +530,7 @@ def close(self):

@property
def name(self):
return self._component[0].name
return self._component[0].name.decode('ascii')

@property
def control(self):
Expand Down Expand Up @@ -666,7 +671,7 @@ def flush(self):

@property
def name(self):
return self._port[0].name
return self._port[0].name.decode('ascii')

@property
def params(self):
Expand Down Expand Up @@ -910,6 +915,7 @@ def _get_framerate(self):
video.frame_rate.num,
video.frame_rate.den)
except ZeroDivisionError:
assert video.frame_rate.num == 0
return Fraction(0, 1)
def _set_framerate(self, value):
value = to_fraction(value)
Expand Down Expand Up @@ -1332,7 +1338,7 @@ def _set_enabled(self, value):

@property
def name(self):
return self._connection[0].name
return self._connection[0].name.decode('ascii')

def __enter__(self):
return self
Expand Down

0 comments on commit 8db71e9

Please sign in to comment.