C++11 tidying.
[dcpomatic.git] / hacks / examine.py
index 34544c7f6399e418d3145115dceb9bacb88cc1cb..00c1ae5e8e52f28f2c6371e1f3c5bffe0d910282 100644 (file)
@@ -5,7 +5,8 @@ import shlex
 import sys
 
 AUDIO_STREAM = "1"
-types = ['audio']
+types = ['video']
+VIDEO_RATE = 29.97
 
 last_video = None
 last_video_pts = None
@@ -13,6 +14,8 @@ last_video_pts = None
 last_audio_pts = {}
 last_channels = {}
 
+video_frame_count = 0
+
 def check_pts_dts(frame):
     diff = frame['pkt_pts_time'] - frame['pkt_dts_time']
     if abs(diff) > 1e-8:
@@ -22,16 +25,18 @@ def handle(frame):
     global last_video
     global last_video_pts
     global last_audio_pts
+    global video_frame_count
     if frame['media_type'] == 'video' and 'video' in types:
         if last_video_pts is not None and frame['pkt_pts_time'] <= last_video_pts:
             print 'Out of order video frame %f (%d) is same as or behind %f (%d)' % (frame['pkt_pts_time'], frame['pkt_pts'], last_video_pts, last_video)
-        elif last_video_pts is not None:
-            print 'OK V    frame %f %f %f %f %d' % (frame['pkt_pts_time'], frame['pkt_dts_time'], frame['pkt_pts_time'] - last_video_pts, 1 / (frame['pkt_pts_time'] - last_video_pts), frame['pkt_size'])
+        elif last_video_pts is not None and frame['pkt_dts_time'] != "N/A":
+            print 'OK V    frame %f %f %f %f %d indices %d/%d' % (frame['pkt_pts_time'], frame['pkt_dts_time'], frame['pkt_pts_time'] - last_video_pts, 1 / (frame['pkt_pts_time'] - last_video_pts), frame['pkt_size'], video_frame_count, frame['pkt_pts_time'] * VIDEO_RATE)
             check_pts_dts(frame)
        else:
-            print 'OK V    frame %f' % (frame['pkt_pts_time'])
+            print 'OK V    frame %f counted %d' % (frame['pkt_pts_time'], video_frame_count)
         last_video = frame['pkt_pts']
         last_video_pts = frame['pkt_pts_time']
+        video_frame_count += 1
     elif frame['media_type'] == 'audio' and 'audio' in types:
        stream_index = frame['stream_index']
        if stream_index in last_audio_pts and (stream_index == AUDIO_STREAM or AUDIO_STREAM is None):
@@ -57,9 +62,12 @@ while True:
         frame = dict()
     elif l != '[FRAME]' and l != '[SIDE_DATA]' and l != '[/SIDE_DATA]':
         s = l.split('=')
-       if s[0] in ['pkt_pts_time', 'pkt_dts_time', 'pkt_pts', 'pkt_dts']:
+        if s[0] in ['pkt_pts_time', 'pkt_dts_time', 'pkt_pts', 'pkt_dts'] and s[1] != "N/A":
             frame[s[0]] = float(s[1])
-       elif s[0] in ['channels', 'pkt_size', 'nb_samples']:
-           frame[s[0]] = int(s[1])
+        elif s[0] in ['channels', 'pkt_size', 'nb_samples']:
+            frame[s[0]] = int(s[1])
         elif len(s) > 1:
             frame[s[0]] = s[1]
+
+print("Video frames=%d" % video_frame_count)
+print("Average frame rate=%f" % (video_frame_count / last_video_pts))