Can be used to test / validate a camera implementation. R.n prints info about the received frame(s) to stdout. (See DummyDebugLink)
| 41 | // (See DummyDebugLink) |
| 42 | // |
| 43 | int main(int argc, char* argv[]) { |
| 44 | // We need root to read / write camera settings. |
| 45 | OHDUtil::terminate_if_not_root(); |
| 46 | const auto platform = OHDPlatform::instance(); |
| 47 | |
| 48 | auto cameras = OHDVideoAir::discover_cameras(); |
| 49 | openhd::BitrateDebugger bitrate_debugger{"Bitrate", true}; |
| 50 | |
| 51 | auto forwarder = openhd::UDPForwarder("127.0.0.1", 5600); |
| 52 | auto cb = [&forwarder, &bitrate_debugger]( |
| 53 | int stream_index, |
| 54 | const openhd::FragmentedVideoFrame& fragmented_video_frame) { |
| 55 | int total_size = 0; |
| 56 | for (auto& fragemnt : fragmented_video_frame.rtp_fragments) { |
| 57 | forwarder.forwardPacketViaUDP(fragemnt->data(), fragemnt->size()); |
| 58 | total_size += fragemnt->size(); |
| 59 | } |
| 60 | if (fragmented_video_frame.dirty_frame) { |
| 61 | auto fragments = |
| 62 | make_fragments(fragmented_video_frame.dirty_frame->data(), |
| 63 | fragmented_video_frame.dirty_frame->size()); |
| 64 | for (auto& fragment : fragments) { |
| 65 | forwarder.forwardPacketViaUDP(fragment->data(), fragment->size()); |
| 66 | total_size += fragment->size(); |
| 67 | } |
| 68 | } |
| 69 | // openhd::log::get_default()->debug("total size:{}", total_size); |
| 70 | bitrate_debugger.on_packet(total_size); |
| 71 | }; |
| 72 | auto debug_link = std::make_shared<DummyDebugLink>(); |
| 73 | debug_link->m_opt_frame_cb = cb; |
| 74 | OHDVideoAir ohdVideo(cameras, debug_link); |
| 75 | std::cout << "OHDVideo started\n"; |
| 76 | OHDUtil::keep_alive_until_sigterm(); |
| 77 | std::cerr << "OHDVideo stopped\n"; |
| 78 | return 0; |
| 79 | } |
nothing calls this directly
no test coverage detected