inline void DoPushSelf(VM32Cpu * cpu) { uint32 i; cpu->pc++; // Retrieve the self (the code-proto pointer) i = getFrameAt(cpu, 2); push(cpu, i); }
bool ReplayBuffers::saveReplayHumanReadable( FILE *fd ) const { if( !isHealthy() ) return false; if( fprintf( fd, "frames: %u\n", getNumberFrames() ) < 1 ) return false; #ifdef REPLAY_SAVE_STATISTIC float time_step_min = 9999999.0f, time_step_max = 0.0f, time_last; #endif unsigned int frame_idx, kart_idx; ReplayFrame const *frame; ReplayKartState const *kart; for( frame_idx = 0; frame_idx < getNumberFrames(); ++frame_idx ) { frame = getFrameAt( frame_idx ); if( fprintf( fd, "frame %u time %f\n", frame_idx, frame->time ) < 1 ) return false; for( kart_idx = 0; kart_idx < m_number_karts; ++kart_idx ) { kart = frame->p_kart_states + kart_idx; if( fprintf( fd, "\tkart %u: %f,%f,%f,%f,%f,%f\n", kart_idx, kart->position.xyz[0], kart->position.xyz[1], kart->position.xyz[2], kart->position.hpr[0], kart->position.hpr[1], kart->position.hpr[2] ) < 1 ) return false; } #ifdef REPLAY_SAVE_STATISTIC if( frame_idx ) { float diff = frame->time - time_last; if( diff < time_step_min ) time_step_min = diff; if( diff > time_step_max ) time_step_max = diff; } time_last = frame->time; #endif } #ifdef REPLAY_SAVE_STATISTIC float time_step_avg; if( getNumberFrames() > 1 ) { time_step_avg = time_last / ( getNumberFrames() - 1 ); } else { time_step_avg = -1.0f; } fprintf( fd, "\n# statistic time-steps:\n# \tmin: %f\n# \tmax: %f\n# \tavg: %f\n", time_step_min, time_step_max, time_step_avg ); #endif return true; }
int _tmain(int argc, _TCHAR* argv[]) { int ret = -1; initFFmpegContext(); int file_count = sizeof(strInputFileName) / sizeof(strInputFileName[0]); for (int i = 0; i < file_count; i++) { const char* pFileName = strInputFileName[i]; ret = setDataSource(pFileName); getFrameAt(-1, THUMB_WIDTH, THUMB_HEIGHT); } //pause printf("finished, pause ....\n"); getchar(); return 0; }