def test_pyav_decode(self): target_keys = ['frame_inds', 'imgs', 'original_shape'] # test PyAV with 2 dim input video_result = copy.deepcopy(self.video_results) video_result['frame_inds'] = np.arange(0, self.total_frames, 2)[:, np.newaxis] pyav_init = PyAVInit() pyav_init_result = pyav_init(video_result) video_result['video_reader'] = pyav_init_result['video_reader'] pyav_decode = PyAVDecode() pyav_decode_result = pyav_decode(video_result) assert self.check_keys_contain(pyav_decode_result.keys(), target_keys) assert pyav_decode_result['original_shape'] == (256, 340) assert np.shape(pyav_decode_result['imgs']) == (len( video_result['frame_inds']), 256, 340, 3) # test PyAV with 1 dim input video_result = copy.deepcopy(self.video_results) video_result['frame_inds'] = np.arange(1, self.total_frames, 5) pyav_init = PyAVInit() pyav_init_result = pyav_init(video_result) video_result['video_reader'] = pyav_init_result['video_reader'] pyav_decode = PyAVDecode() pyav_decode_result = pyav_decode(video_result) assert self.check_keys_contain(pyav_decode_result.keys(), target_keys) assert pyav_decode_result['original_shape'] == (256, 340) assert np.shape(pyav_decode_result['imgs']) == (len( video_result['frame_inds']), 256, 340, 3) # PyAV with multi thread video_result = copy.deepcopy(self.video_results) video_result['frame_inds'] = np.arange(1, self.total_frames, 5) pyav_init = PyAVInit() pyav_init_result = pyav_init(video_result) video_result['video_reader'] = pyav_init_result['video_reader'] pyav_decode = PyAVDecode(multi_thread=True) pyav_decode_result = pyav_decode(video_result) assert self.check_keys_contain(pyav_decode_result.keys(), target_keys) assert pyav_decode_result['original_shape'] == (256, 340) assert np.shape(pyav_decode_result['imgs']) == (len( video_result['frame_inds']), 256, 340, 3) assert repr(pyav_decode) == pyav_decode.__class__.__name__ + \ f'(multi_thread={True})'
def test_pyav_decode(self): target_keys = ['frame_inds', 'imgs', 'original_shape'] # test PyAV with 2 dim input and start_index = 0 video_result = copy.deepcopy(self.video_results) video_result['frame_inds'] = np.arange(0, self.total_frames, 2)[:, np.newaxis] pyav_init = PyAVInit() pyav_init_result = pyav_init(video_result) video_result['video_reader'] = pyav_init_result['video_reader'] pyav_decode = PyAVDecode() pyav_decode_result = pyav_decode(video_result) assert assert_dict_has_keys(pyav_decode_result, target_keys) assert pyav_decode_result['original_shape'] == (256, 340) assert np.shape(pyav_decode_result['imgs']) == (len( video_result['frame_inds']), 256, 340, 3) assert repr(pyav_decode) == (f'{pyav_decode.__class__.__name__}(' f'multi_thread={False}, mode=accurate)') # test PyAV with 1 dim input and start_index = 0 video_result = copy.deepcopy(self.video_results) video_result['frame_inds'] = np.arange(0, self.total_frames, 5) pyav_init = PyAVInit() pyav_init_result = pyav_init(video_result) video_result['video_reader'] = pyav_init_result['video_reader'] pyav_decode = PyAVDecode() pyav_decode_result = pyav_decode(video_result) assert assert_dict_has_keys(pyav_decode_result, target_keys) assert pyav_decode_result['original_shape'] == (256, 340) assert np.shape(pyav_decode_result['imgs']) == (len( video_result['frame_inds']), 256, 340, 3) # PyAV with multi thread and start_index = 0 video_result = copy.deepcopy(self.video_results) video_result['frame_inds'] = np.arange(0, self.total_frames, 5) pyav_init = PyAVInit() pyav_init_result = pyav_init(video_result) video_result['video_reader'] = pyav_init_result['video_reader'] pyav_decode = PyAVDecode(multi_thread=True) pyav_decode_result = pyav_decode(video_result) assert assert_dict_has_keys(pyav_decode_result, target_keys) assert pyav_decode_result['original_shape'] == (256, 340) assert np.shape(pyav_decode_result['imgs']) == (len( video_result['frame_inds']), 256, 340, 3) assert repr(pyav_decode) == (f'{pyav_decode.__class__.__name__}(' f'multi_thread={True}, mode=accurate)') # test PyAV with 2 dim input video_result = copy.deepcopy(self.video_results) video_result['frame_inds'] = np.arange(1, self.total_frames, 2)[:, np.newaxis] pyav_init = PyAVInit() pyav_init_result = pyav_init(video_result) video_result['video_reader'] = pyav_init_result['video_reader'] pyav_decode = PyAVDecode() pyav_decode_result = pyav_decode(video_result) assert assert_dict_has_keys(pyav_decode_result, target_keys) assert pyav_decode_result['original_shape'] == (256, 340) assert np.shape(pyav_decode_result['imgs']) == (len( video_result['frame_inds']), 256, 340, 3) # test PyAV with 1 dim input video_result = copy.deepcopy(self.video_results) video_result['frame_inds'] = np.arange(1, self.total_frames, 5) pyav_init = PyAVInit() pyav_init_result = pyav_init(video_result) video_result['video_reader'] = pyav_init_result['video_reader'] pyav_decode = PyAVDecode() pyav_decode_result = pyav_decode(video_result) assert assert_dict_has_keys(pyav_decode_result, target_keys) assert pyav_decode_result['original_shape'] == (256, 340) assert np.shape(pyav_decode_result['imgs']) == (len( video_result['frame_inds']), 256, 340, 3) # PyAV with multi thread video_result = copy.deepcopy(self.video_results) video_result['frame_inds'] = np.arange(1, self.total_frames, 5) pyav_init = PyAVInit() pyav_init_result = pyav_init(video_result) video_result['video_reader'] = pyav_init_result['video_reader'] pyav_decode = PyAVDecode(multi_thread=True) pyav_decode_result = pyav_decode(video_result) assert assert_dict_has_keys(pyav_decode_result, target_keys) assert pyav_decode_result['original_shape'] == (256, 340) assert np.shape(pyav_decode_result['imgs']) == (len( video_result['frame_inds']), 256, 340, 3) # PyAV with efficient mode video_result = copy.deepcopy(self.video_results) video_result['frame_inds'] = np.arange(1, self.total_frames, 5) pyav_init = PyAVInit() pyav_init_result = pyav_init(video_result) video_result['video_reader'] = pyav_init_result['video_reader'] pyav_decode = PyAVDecode(multi_thread=True, mode='efficient') pyav_decode_result = pyav_decode(video_result) assert assert_dict_has_keys(pyav_decode_result, target_keys) assert pyav_decode_result['original_shape'] == (256, 340) assert np.shape(pyav_decode_result['imgs']) == (len( video_result['frame_inds']), 256, 340, 3) assert pyav_decode_result['video_reader'] is None assert (repr(pyav_decode) == pyav_decode.__class__.__name__ + f'(multi_thread={True}, mode=efficient)')