/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /*************************************************************************** * simplertp.cc * * Thu Sep 18 19:07:25 CEST 2014 * Copyright 2014 Bent Bisballe Nyeng * deva@aasimon.org ****************************************************************************/ /* * This file is part of SimpleRTP. * * SimpleRTP is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * SimpleRTP is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with SimpleRTP; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ #include #include #include #include "mainwindow.h" #include "audiobackend.h" #include "audiobackend-alsa.h" #ifdef WITH_PULSE #include "audiobackend-pulse.h" #endif/*WITH_PULSE*/ int main(int argc, char *argv[]) { /* int pulse = system("pidof pulseaudio &> /dev/null"); if(WEXITSTATUS(pulse) == 0) { printf("Pulse audio is running - simplertp wont work...\n"); return 1; } */ QApplication app(argc, argv); if(argc < 2) { printf("Usage: %s configfile\n", argv[0]); return 1; } QSettings settings(argv[1], QSettings::IniFormat); settings.beginGroup("hardware"); QString audiobackend = settings.value("audiobackend", "alsa").toString(); QString audiodevice = settings.value("audiodevice", "hw:0,0").toString(); QString v4ldevice = settings.value("v4ldevice", "/dev/video0").toString(); settings.endGroup(); if(audiobackend == "alsa") { g_audiobackend = new AudioBackendAlsa(audiodevice.toStdString().c_str()); } else #ifdef WITH_PULSE if(audiobackend == "pulse") { g_audiobackend = new AudioBackendPulse(audiodevice.toStdString().c_str()); } else #endif/*WITH_PULSE*/ { printf("Unknown audiobackend: %s\n", audiobackend.toStdString().c_str()); } settings.beginGroup("crypto"); QString key = settings.value("key").toString(); unsigned int ssrc = settings.value("ssrc").toUInt(); settings.endGroup(); if(key == "" || ssrc == 0) { printf("Missing key/ssrc in config.\n"); return 1; } if(key.size() != 60) { printf("Key length shoule be 60 it is %d\n", key.size()); return 1; } OutputStreamer os(key, ssrc); QList islist; settings.beginGroup("peers"); int num_peers = settings.value("num_peers", "0").toInt(); for(int peer = 1; peer < num_peers + 1; peer++) { QString saddr = settings.value("addr" + QString::number(peer)).toString(); QString name = settings.value("name" + QString::number(peer)).toString(); quint16 port = settings.value("port" + QString::number(peer)).toInt(); QHostAddress addr(saddr); os.addPeer(addr, port); InputStreamer *is = new InputStreamer(peer-1, name, addr, port, key, ssrc); islist.push_back(is); } settings.endGroup(); int ret; { MainWindow wnd(v4ldevice, os, islist); wnd.show(); ret = app.exec(); } QList::iterator i = islist.begin(); while(i != islist.end()) { delete *i; i++; } if(g_audiobackend) { delete g_audiobackend; g_audiobackend = NULL; } return ret; }