/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /*************************************************************************** * mainwindow.cc * * Thu Sep 18 19:30:14 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 "mainwindow.h" #include #include #include MainWindow::MainWindow(QString v4ldev, QString adev, QHostAddress addr, quint16 port) : v4l(v4ldev), aih(adev), ostreamer(addr, port), istreamer(addr, port) { /* // Self view: connect(&v4l, SIGNAL(newImage(Frame)), this, SLOT(newImage(Frame))); */ connect(&istreamer, SIGNAL(newImage(Frame)), this, SLOT(newImage(Frame))); connect(&istreamer, SIGNAL(newAudio(Frame)), &aoh, SLOT(newAudio(Frame))); /* connect(&aih, SIGNAL(newAudio(framelist_t)), this, SLOT(newAudio(framelist_t))); */ connect(&v4l, SIGNAL(newImage(Frame)), &ostreamer, SLOT(newImage(Frame))); connect(&aih, SIGNAL(newAudio(framelist_t)), &ostreamer, SLOT(newAudio(framelist_t))); connect(&status_timer, SIGNAL(timeout()), this, SLOT(updateStatus())); status_timer.start(1000); setCentralWidget(new QLabel()); statusBar()->showMessage("Starting..."); } void MainWindow::updateStatus() { size_t ob = ostreamer.getTotal() / 60; size_t ib = istreamer.getTotal() / 60; QString iunit = "b/s"; if(ib > 1024) { ib /= 1024; iunit = "kb/s"; } QString ounit = "b/s"; if(ob > 1024) { ob /= 1024; ounit = "kb/s"; } QString status = "In: " + QString::number(ib) + iunit + " - " + "Out: " + QString::number(ob) + ounit ; statusBar()->showMessage(status); } void MainWindow::newImage(Frame frame) { QImage img; bool res = img.loadFromData((const uchar*)frame.data, frame.size, "JPG"); // printf("processImage() => %s\n", res?"true":"false"); if(img.isNull()) { printf("Invalid image\n"); return; } // printf("img->w: %d\n", img.width()); // printf("img->h: %d\n", img.height()) QLabel *l = (QLabel*)centralWidget(); QPixmap p; p.convertFromImage(img); l->setPixmap(p); // printf("v"); fflush(stdout); } void MainWindow::newAudio(framelist_t list) { /* framelist_t::iterator i = list.begin(); while(i != list.end()) { sp.playSamples(*i); } // printf("audio: %d frames\n", list.size()); */ // printf("a"); fflush(stdout); }