int main(int argc, char *argv[]) { if (argc == 1) { printf("%lu\n", f()); } else if (argc == 2) { struct timespec start = {0, 0}, end = {0, 0}; uint64_t i = 0; uint64_t iters = atol(argv[1]); clock_gettime(CLOCK_MONOTONIC, &start); for (; i < iters; i++) { f(); asm(""); } clock_gettime(CLOCK_MONOTONIC, &end); printf("%lu", to_ns(end) - to_ns(start)); } else { return EXIT_FAILURE; } return EXIT_SUCCESS; }
void mpeg_ts_track_c::send_to_packetizer() { auto timecode_to_use = !m_timecode.valid() ? timecode_c{} : reader.m_dont_use_audio_pts && (ES_AUDIO_TYPE == type) ? timecode_c{} : m_apply_dts_timecode_fix && (m_previous_timecode == m_timecode) ? timecode_c{} : (m_timecode < reader.m_global_timecode_offset) ? timecode_c::ns(0) : m_timecode - reader.m_global_timecode_offset; mxdebug_if(m_debug_delivery, boost::format("send_to_packetizer() PID %1% expected %2% actual %3% timecode_to_use %4% m_previous_timecode %5%\n") % pid % pes_payload_size % pes_payload->get_size() % timecode_to_use % m_previous_timecode); if (ptzr != -1) reader.m_reader_packetizers[ptzr]->process(new packet_t(memory_c::clone(pes_payload->get_buffer(), pes_payload->get_size()), timecode_to_use.to_ns(-1))); pes_payload->remove(pes_payload->get_size()); processed = false; data_ready = false; pes_payload_size = 0; reader.m_packet_sent_to_packetizer = true; m_previous_timecode = m_timecode; m_timecode.reset(); }