Stefan Schuermans
comment typo
Stefan Schuermans commited c864528 at 2018-08-15 12:41:32
mplayer_sync.py
#! /usr/bin/env python
# MPlayer synchronizer
# Copyright 2014 Stefan Schuermans <stefan@schuermans.info>
# Copyleft: GNU public license - http://www.gnu.org/copyleft/gpl.html
import datetime
import fcntl
import os
import re
import select
import socket
import struct
import subprocess
import sys
import time
scriptdir = os.path.dirname(os.path.abspath(__file__))
verbose = False
class Synchronizer:
def __init__(self):
"""construct an MPlayer Synchronizer object"""
# set constants
self.info_timeout = 1.0 # timeout (s) for info from MPlayer or PoSy
self.max_equal_offset = 0.1 # maximum offset tolerated as equal
self.min_cmd_delay = 0.1 # minimum time (s) between MPlayer commands
self.min_seek_offset = 0.5 # minimum offset (s) required for a seek
self.select_timeout = 0.1 # timeout (s) for select syscall
self.speed_change = 0.05 # change of MPlayer speed for catching up
# create static objects
self.re_mplayer_audio_pos = re.compile(r"A: *([0-9]+.[0-9]+) *\([0-9:.]*\) of .*")
self.re_mplayer_video_pos = re.compile(r"A: *([0-9]+.[0-9]+) *V: *[0-9]+.[0-9]+ A-V: .*")
self.re_ignore_prefix = re.compile(r"[0-9a-zA-Z_]+__(.*)")
# create member variables
self.mplayer = None
self.mplayer_buf_stdout = ""
self.mplayer_buf_stderr = ""
self.mplayer_last_cmd_timestamp = None
self.mplayer_name = None
self.mplayer_pause = None
self.mplayer_pos = None
self.mplayer_speed = None
self.mplayer_timestamp = None
self.offset_samples = []
self.playlist = []
self.playlist_idx = None
self.posy_name = None
self.posy_pause = None
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX