Beispiel #1
0
    def __init__(
            self,
            controller,
            parser,
            media_engine,
            log_sub_dir='',
            log_period=0.1,
            max_buffer_time=60,
            inactive_cycle=1,
            initial_level=0,
            #FIXME reset to TRUE again!!
            use_persistent_connection=True,
            #changed by susanna
            check_warning_buffering=False,
            stress_test=False):

        # player components
        self.controller = controller
        self.parser = parser
        self.media_engine = media_engine

        # log
        self.logger = None
        self.log_file = None
        self.log_dir = 'logs'
        self.log_sub_dir = log_sub_dir
        self.log_period = log_period
        self.log_prefix = ''
        self.log_comment = ''
        #
        self.max_buffer_time = max_buffer_time
        self.inactive_cycle = inactive_cycle  #active control action after inactive_cycle+1 segments
        #
        self.use_persistent_connection = use_persistent_connection
        self.connection = None
        #
        self.cur_level = initial_level
        self.cur_index = 0
        self.enable_stress_test = stress_test  #flag to enable stress test, switch level every segment cyclically
        #
        self.check_warning_buffering = check_warning_buffering  #flag to enable check for warning buffering
        self.rate_calc = RateCalc(period=3.0, alpha=0.0)
        self.remaining_data = 0
        #
        self.bwe = 0
        self.downloaded_bytes = 0
        self.downloaded_segments = 0
        self.last_fragment_size = 0
        self.start_segment_request = -1.0
        self.stop_segment_request = -1.0
        self.last_downloaded_time = -1.0
        self.t_paused = time.time()
        self.paused_time = 0.0
        self.queuedBytes = 0
        self.queuedTime = 0.0
        #
        self.proc_stats = ProcessStats()

        self.prio = 0

        #Initialize the parameters passed at the controller after the download of every segment
        self.feedback = dict(queued_bytes=0,
                             queued_time=0.0,
                             max_buffer_time=self.max_buffer_time,
                             bwe=0.0,
                             level=self.cur_level,
                             max_level=-1,
                             cur_rate=0.0,
                             max_rate=0.0,
                             min_rate=0.0,
                             player_status=0,
                             paused_time=0.0,
                             last_fragment_size=0,
                             last_download_time=0.0,
                             downloaded_bytes=0,
                             fragment_duration=0.0,
                             rates=[])
        self.controller.setPlayerFeedback(self.feedback)
Beispiel #2
0
    def __init__(self,
                 controller,
                 view_controller,
                 parser,
                 media_engine,
                 HMDEmulator,
                 vr,
                 log_sub_dir='',
                 log_period=0.1,
                 max_buffer_time=60,
                 inactive_cycle=1,
                 initial_level=0,
                 initial_view=0,
                 use_persistent_connection=True,
                 check_warning_buffering=True,
                 save_chunks=False,
                 stress_test=False):

        # player components
        self.initial_view = initial_view
        self.n_views = 1
        self.controller = controller
        self.viewController = view_controller
        self.parser = parser
        self.media_engine = media_engine
        # log
        self.logger = None
        self.log_file = None
        self.log_dir = 'logs'
        self.log_sub_dir = log_sub_dir
        self.log_period = log_period
        self.log_prefix = ''
        self.log_comment = ''
        self.save_chunks = save_chunks
        self.chunkFolder = os.getpid()
        #
        self.max_buffer_time = max_buffer_time
        self.inactive_cycle = inactive_cycle  #active control action after inactive_cycle+1 segments
        #
        self.use_persistent_connection = use_persistent_connection
        self.connection = None
        self.last_redirect_host = None
        # self.conn_pool = ConnectionsPool()
        #
        self.cur_level = initial_level
        self.cur_view = initial_view
        self.cur_index = 0
        self.enable_stress_test = stress_test  #flag to enable stress test, switch level every segment cyclically
        #
        self.check_warning_buffering = check_warning_buffering  #flag to enable check for warning buffering
        self.rate_calc = RateCalc(period=3.0, alpha=0.0)
        self.remaining_data = 0
        #
        self.bwe = 0
        self.downloaded_bytes = 0
        self.downloaded_segments = 0
        self.last_fragment_size = 0
        self.start_segment_request = -1.0
        self.stop_segment_request = -1.0
        self.last_downloaded_time = -1.0
        self.t_paused = time.time()
        self.t_experiment_started = time.time(
        )  #Timestamp marking the beginning of the experiment
        self.paused_time = 0.0
        self.queuedBytes = 0
        self.queuedTime = 0.0
        #
        self.proc_stats = ProcessStats()

        #vr
        self.HMDEmulator = HMDEmulator
        self.cur_angles = [0, 0, 0]
        self.vr = vr

        #Initialize the parameters passed at the controller after the download of every segment
        self.feedback = dict(
            queued_bytes=0,
            queued_time=0.0,
            max_buffer_time=self.max_buffer_time,
            bwe=0.0,
            level=self.cur_level,
            max_level=-1,
            cur_rate=0.0,
            max_rate=0.0,
            min_rate=0.0,
            player_status=0,
            paused_time=0.0,
            last_fragment_size=0,
            last_download_time=0.0,
            start_segment_request=0.0,
            stop_segment_request=time.time(),
            downloaded_bytes=0,
            fragment_duration=0.0,
            rates=[],
            #parameters of the views
            view_angles=[0.0, 0.0, 0.0],
            n_views=self.n_views,
            cur_view=self.cur_view,
            roi_angle=120,
            #Set of yaw angles associated to the different views (angular position of the ROI center of the i-th view)
            delta=20,
            yaw_angles=self.getYawAngles(1),
            threshold_angle=180)
        self.controller.setPlayerFeedback(self.feedback)