여러 비디오를 한 번에 표시하는 응용 프로그램에서 작업하고 있습니다. 비디오는 이미지 파일로 가득 찬 디렉토리 형태로 저장됩니다. 각 프레임 번호에는 디스크에서로드해야하는 이미지가 최대 9 개 있습니다. 캐싱 및 미리 읽기 이미지 구현하고 싶습니다. 이것은 매우 간단하지만, 파일 시스템 (때로는 네트워크 FS)이 모든 이미지를 표시 할만큼 충분히 빠르지는 않습니다. 따라서 readahead는로드 할 프레임을 선택하고 해당 이미지에 대한 read() 요청 만 실행해야합니다. 또한로드 할 프레임을 결정할 때 어떤 이미지가 이미 캐시되었는지 고려할 수 있다면 가장 좋습니다.비디오 프레임의 신뢰할 수없는 캐싱 및 미리 읽기 헤드
나는 괜찮을 것 같은 탐욕스러운 알고리즘을 생각해 냈지만, 이것이 문제가되는지, 궁금 해서요. 거기에는 더 나은/최적의 알고리즘이 있습니다.
의사 코드를 쉽게 만들기 위해 초가 아닌 프레임 속도를 기준으로 시간을 측정한다고 가정합니다.
load_time_per_image = how long it takes to load an image
images_per_frame = the number of images to display simultaneously
worst_time = images_per_frame * load_time_per_image
def decide_next_frame_to_load:
for each frame from now to now + worst_time:
loadable = (frame - now)/load_time_per_image
if number_of_images_cached(frame) > images_per_frame - loadable:
# this frame is the first one it's possible to load in time.
return frame
누구든지 제안 했습니까? 도움 주셔서 감사합니다. - 토마스
작은 세상입니다. –