+ string str;
+ str.resize(size);
+ size_t str_offset = 0;
+ while (str_offset < size) {
+ int ret = pread(fd, &str[str_offset], size - str_offset, offset + str_offset);
+ if (ret <= 0) {
+ perror("pread");
+ abort();
+ }
+
+ str_offset += ret;
+ }
+ return str;
+}
+
+} // namespace
+
+FrameReader::Frame FrameReader::read_frame(FrameOnDisk frame, bool read_video, bool read_audio)
+{
+ assert(read_video || read_audio);