int main(int argc, char** argv) { if(argc != 2) { fprintf(stderr, "usage: simulator <n-threads>\n"); return EXIT_FAILURE; } NTHREADS = atoi(argv[1]); map = map_read(stdin); if(!map) { fprintf(stderr, "Failed to read map\n"); exit(EXIT_FAILURE); } //map_print(map, stdout); simulate(); //map_print(map, stdout); map_output(map, stdout); map_free(map); return EXIT_SUCCESS; }
int Mmap2_Test::run_test (int iterations, FILE *input_fp, FILE *output_fp) { ACE_Mem_Map map_input (ACE_OS::fileno (input_fp)); int size = map_input.size (); ACE_Mem_Map map_output (ACE_OS::fileno (output_fp), size, PROT_WRITE, MAP_SHARED); void *src = map_input.addr (); void *dst = map_output.addr (); if (src == MAP_FAILED || dst == MAP_FAILED) return -1; else { this->tm_.start (); while (--iterations >= 0) ACE_OS::memcpy (dst, src, size); this->tm_.stop (); } if (map_input.unmap () == -1 || map_output.unmap () == -1) return -1; else return 0; }
int main(int argc, char *argv[]) { pthread_t parser_thread; if (argc < 3) { fprintf(stderr, "Usage: %s <input file> <m2m device>\n", argv[0]); return 1; } if (input_open(argv[1]) < 0) return -1; if (m2m_open(argv[2]) < 0) return -1; if (subscribe_source_change() < 0) return -1; /* Setup flow based on ELCE2014 slides and Nicolas Dufresne's knowledge: * S_FMT(OUT) * S_FMT(CAP) to suggest a fourcc for the raw format; may be changed later * G_CTRL(MIN_BUF_FOR_OUTPUT) * REQBUFS(OUT) * QBUF (the header) * STREAMON(OUT) * QBUF/DQBUF frames on OUT * source change event, DQEVENT * G_FMT(CAP) * ENUM_FMT(CAP) * S_FMT(CAP) to set fourcc chosen from ENUM_FMT; also get resolution from returned values? * G_SELECTION to get visible size * G_CTRL(MIN_BUF_FOR_CAPTURE) * REQBUFS(CAP) * STREAMON(CAP) */ if (output_set_format() < 0) return -1; // FIXME capture S_FMT // FIXME G_CTRL(MIN_BUF_FOR_OUTPUT) if (output_request_buffers() < 0) return -1; map_output(); //if (parse_and_queue_header() < 0) // return -1; parse_one_nal(); stream(V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE, VIDIOC_STREAMON); parser_init(); if (pthread_create(&parser_thread, NULL, parser_thread_func, NULL)) { fprintf(stderr, "Failed to launch parser thread\n"); return -1; } if (wait_for_source_change() < 0) return -1; if (setup_capture() < 0) return -1; map_capture(); queue_capture(); stream(V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE, VIDIOC_STREAMON); capture(); pthread_join(parser_thread, 0); return 0; }