Commit 413c8d23 authored by Vivien Didelot's avatar Vivien Didelot Committed by Tristan Matthews

daemon: (VideoManager) isolate DBus-specific implementation

Refs #46643

Change-Id: I0990ab69e53705e002be8b9eec082b085981b736
parent 54cdf410
......@@ -13,6 +13,7 @@ noinst_HEADERS += presencemanager.h
endif
if SFL_VIDEO
VIDEO_SRC = videomanager.cpp
VIDEO_STUB = videomanager_stub.cpp
noinst_HEADERS += videomanager.h
endif
......@@ -32,6 +33,7 @@ endif
libclient_la_SOURCES = callmanager.cpp \
configurationmanager.cpp \
$(PRESENCE_SRC) \
$(VIDEO_SRC) \
$(STUB_SRC)
libclient_la_CXXFLAGS = -I./ \
......
......@@ -33,183 +33,13 @@
#include "videomanager.h"
#include "video/libav_utils.h"
#include "video/video_input_selector.h"
#include "account.h"
#include "logger.h"
#include "manager.h"
namespace {
const char * const SERVER_PATH = "/org/sflphone/SFLphone/VideoManager";
}
#include "video/video_preferences.h"
VideoManager::VideoManager(DBus::Connection& connection) :
DBus::ObjectAdaptor(connection, SERVER_PATH)
DBus::ObjectAdaptor(connection, "/org/sflphone/SFLphone/VideoManager")
, videoInputSelector_()
, videoPreference_()
{
// initialize libav libraries
libav_utils::sfl_avcodec_init();
}
VideoPreference &
VideoManager::getVideoPreferences()
{
return videoPreference_;
}
std::vector<std::map<std::string, std::string> >
VideoManager::getCodecs(const std::string &accountID)
{
Account *acc = Manager::instance().getAccount(accountID);
if (acc != NULL)
return acc->getAllVideoCodecs();
else
return std::vector<std::map<std::string, std::string> >();
}
void
VideoManager::setCodecs(const std::string& accountID,
const std::vector<std::map<std::string, std::string> > &details)
{
Account *acc = Manager::instance().getAccount(accountID);
if (acc != NULL) {
acc->setVideoCodecs(details);
Manager::instance().saveConfig();
}
}
std::vector<std::string>
VideoManager::getDeviceList()
{
return videoPreference_.getDeviceList();
}
std::vector<std::string>
VideoManager::getDeviceChannelList(const std::string &dev)
{
return videoPreference_.getChannelList(dev);
}
std::vector<std::string>
VideoManager::getDeviceSizeList(const std::string &dev, const std::string &channel)
{
return videoPreference_.getSizeList(dev, channel);
}
std::vector<std::string>
VideoManager::getDeviceRateList(const std::string &dev, const std::string &channel, const std::string &size)
{
return videoPreference_.getRateList(dev, channel, size);
}
std::string
VideoManager::getActiveDevice()
{
return videoPreference_.getDevice();
}
std::string
VideoManager::getActiveDeviceChannel()
{
return videoPreference_.getChannel();
}
std::string
VideoManager::getActiveDeviceSize()
{
return videoPreference_.getSize();
}
std::string
VideoManager::getActiveDeviceRate()
{
return videoPreference_.getRate();
}
void
VideoManager::setActiveDevice(const std::string &device)
{
DEBUG("Setting device to %s", device.c_str());
videoPreference_.setDevice(device);
}
void
VideoManager::setActiveDeviceChannel(const std::string &channel)
{
videoPreference_.setChannel(channel);
}
void
VideoManager::setActiveDeviceSize(const std::string &size)
{
videoPreference_.setSize(size);
}
void
VideoManager::setActiveDeviceRate(const std::string &rate)
{
videoPreference_.setRate(rate);
}
std::map<std::string, std::string>
VideoManager::getSettingsFor(const std::string& device) {
return videoPreference_.getSettingsFor(device);
}
std::map<std::string, std::string>
VideoManager::getSettings() {
return videoPreference_.getSettings();
}
void
VideoManager::startCamera()
{
if (hasCameraStarted()) {
WARN("Video preview was already started!");
return;
}
const std::string device = "v4l2://" + videoPreference_.getDevice();
videoInputSelector_.reset(new sfl_video::VideoInputSelector(device));
}
void
VideoManager::stopCamera()
{
if (not hasCameraStarted()) {
WARN("Video preview was already stopped");
return;
}
videoInputSelector_.reset();
}
bool
VideoManager::switchInput(const std::string &resource)
{
if (not hasCameraStarted()) {
ERROR("Input selector not initialized");
return false;
}
return videoInputSelector_->switchInput(resource);
}
std::weak_ptr<sfl_video::VideoFrameActiveWriter>
VideoManager::getVideoCamera()
{
return videoInputSelector_;
}
bool
VideoManager::hasCameraStarted()
{
// see http://stackoverflow.com/a/7580064/21185
return static_cast<bool>(videoInputSelector_);
}
std::string
VideoManager::getCurrentCodecName(const std::string & /*callID*/)
{
return "";
}
/*
* Copyright (C) 2004-2013 Savoir-Faire Linux Inc.
* Author: Pierre-Luc Beaudoin <pierre-luc.beaudoin@savoirfairelinux.com>
* Author: Emmanuel Milou <emmanuel.milou@savoirfairelinux.com>
* Author: Guillaume Carmel-Archambault <guillaume.carmel-archambault@savoirfairelinux.com>
*
* This program 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 3 of the License, or
* (at your option) any later version.
*
* This program 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 this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Additional permission under GNU GPL version 3 section 7:
*
* If you modify this program, or any covered work, by linking or
* combining it with the OpenSSL project's OpenSSL library (or a
* modified version of that library), containing parts covered by the
* terms of the OpenSSL or SSLeay licenses, Savoir-Faire Linux Inc.
* grants you additional permission to convey the resulting work.
* Corresponding Source for a non-source form of such a combination
* shall include the source code for the parts of OpenSSL used as well
* as that of the covered work.
*/
#include "videomanager.h"
#include "video/libav_utils.h"
#include "video/video_input_selector.h"
#include "video/video_preferences.h"
#include "account.h"
#include "logger.h"
#include "manager.h"
VideoPreference &
VideoManager::getVideoPreferences()
{
return videoPreference_;
}
std::vector<std::map<std::string, std::string> >
VideoManager::getCodecs(const std::string &accountID)
{
Account *acc = Manager::instance().getAccount(accountID);
if (acc != NULL)
return acc->getAllVideoCodecs();
else
return std::vector<std::map<std::string, std::string> >();
}
void
VideoManager::setCodecs(const std::string& accountID,
const std::vector<std::map<std::string, std::string> > &details)
{
Account *acc = Manager::instance().getAccount(accountID);
if (acc != NULL) {
acc->setVideoCodecs(details);
Manager::instance().saveConfig();
}
}
std::vector<std::string>
VideoManager::getDeviceList()
{
return videoPreference_.getDeviceList();
}
std::vector<std::string>
VideoManager::getDeviceChannelList(const std::string &dev)
{
return videoPreference_.getChannelList(dev);
}
std::vector<std::string>
VideoManager::getDeviceSizeList(const std::string &dev, const std::string &channel)
{
return videoPreference_.getSizeList(dev, channel);
}
std::vector<std::string>
VideoManager::getDeviceRateList(const std::string &dev, const std::string &channel, const std::string &size)
{
return videoPreference_.getRateList(dev, channel, size);
}
std::string
VideoManager::getActiveDevice()
{
return videoPreference_.getDevice();
}
std::string
VideoManager::getActiveDeviceChannel()
{
return videoPreference_.getChannel();
}
std::string
VideoManager::getActiveDeviceSize()
{
return videoPreference_.getSize();
}
std::string
VideoManager::getActiveDeviceRate()
{
return videoPreference_.getRate();
}
void
VideoManager::setActiveDevice(const std::string &device)
{
DEBUG("Setting device to %s", device.c_str());
videoPreference_.setDevice(device);
}
void
VideoManager::setActiveDeviceChannel(const std::string &channel)
{
videoPreference_.setChannel(channel);
}
void
VideoManager::setActiveDeviceSize(const std::string &size)
{
videoPreference_.setSize(size);
}
void
VideoManager::setActiveDeviceRate(const std::string &rate)
{
videoPreference_.setRate(rate);
}
std::map<std::string, std::string>
VideoManager::getSettingsFor(const std::string& device) {
return videoPreference_.getSettingsFor(device);
}
std::map<std::string, std::string>
VideoManager::getSettings() {
return videoPreference_.getSettings();
}
void
VideoManager::startCamera()
{
if (hasCameraStarted()) {
WARN("Video preview was already started!");
return;
}
const std::string device = "v4l2://" + videoPreference_.getDevice();
videoInputSelector_.reset(new sfl_video::VideoInputSelector(device));
}
void
VideoManager::stopCamera()
{
if (not hasCameraStarted()) {
WARN("Video preview was already stopped");
return;
}
videoInputSelector_.reset();
}
bool
VideoManager::switchInput(const std::string &resource)
{
if (not hasCameraStarted()) {
ERROR("Input selector not initialized");
return false;
}
return videoInputSelector_->switchInput(resource);
}
std::weak_ptr<sfl_video::VideoFrameActiveWriter>
VideoManager::getVideoCamera()
{
return videoInputSelector_;
}
bool
VideoManager::hasCameraStarted()
{
// see http://stackoverflow.com/a/7580064/21185
return static_cast<bool>(videoInputSelector_);
}
std::string
VideoManager::getCurrentCodecName(const std::string & /*callID*/)
{
return "";
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment