-
Notifications
You must be signed in to change notification settings - Fork 15
DEV NOTES
###DONE:
add chat feature (issue #30)
- removed 32bit build and all packaging from travis
- packaging migrated to openSUSE Build Service
- added openSUSE Build Service support files
- deleted fpm and packagecloud helper scripts
- added correct md5sum to PKGBUILD
- added IrcClient wrapper class and Chat , ChatList , ChatListItem GUI classes
- added AvCaster::Irc static instance of libircclient wrapper
- added AvCaster::AddChatLine() , AvCaster::SendChat() , AvCaster::GetVersionString() , AvCaster::UpdateChatNicks() , AvCaster::GetChatNicks()
- moved AvCaster::SetConfig() to AvCasterStore->setConfig()
- renamed AvCaster::GuiChanged() to AvCaster::SetConfig()
- removed AvCasterStore->devicesNames()
- added AvCasterStore->chatters store and MainContent->initialize() for chatters_store
- removed Gstreamer::WindowHandle in favor of AvCaster::GetGuiXwinHandle()
- added Gstreamer::GetVersionMajor(), Gstreamer::GetVersionMinor() , Gstreamer::IsSufficientVersion()
- split AvCaster::HandleCliParams() into AvCaster::HandleCliParamsPreInit(), AvCaster::HandleCliParamsPostInit()
- added PresetSeed->isAudioOn (and friends - no GUI support)
chat orphan stashes ab16e12 2015-12-05 | stash8 (HEAD -> chat) [bill auger] 44d564c 2015-12-05 | revertme [bill auger] 6aa0d6d 2015-12-02 | remove 32bit build and all packaging from travis (origin/travis, travis) [bill auger] c4d9818 2015-11-23 | stash5 [bill auger] 484644e 2015-11-22 | stash4 (origin/chat) [bill auger] 8d98fbd 2015-11-20 | stash3 [bill auger] a81f24e 2015-11-20 | stash2 [bill auger] ed2420b 2015-11-19 | stash [bill auger] 31d2629 2015-11-18 | testing [bill auger] 50612f8 2015-11-18 | testing (development) [bill auger] 86435d4 2015-11-16 | update project files [bill auger] ebb875a 2015-11-16 | update README.md (origin/master, origin/HEAD, master) [bill auger]
create storage for chat servers and nicks
- added storage for IrcServerInfo persistence
- refactored IrcClient to allow multiple networks
- added AvCaster::RenameServer
- renamed AvCasterStore->validateProperty() to AvCasterStore->verifyProperty()
- renamed AvCasterStore->validateRootProperty() to AvCasterStore->verifyRootProperty()
- renamed AvCasterStore->validatePresetProperty() to AvCasterStore->verifyPresetProperty()
- added AvCasterStore->getOrCreatePresets() , AvCasterStore->getOrCreateServers()
- renamed AvCasterStore->validatePreset() to AvCasterStore->verifyPreset()
- renamed AvCasterStore->sanitizeConfig() to AvCasterStore->sanitizeRoot()
- added AvCasterStore->verifyRoot() , AvCasterStore->verifyPresets() , AvCasterStore->sanitizePresets() , AvCasterStore->sanitizePreset()
- moved AvCasterStore->chatters to child of each of AvCasterStore->servers
- added IrcClient->serversStore
handle nick on IRC alias hosts properly
- added AvCaster::UpdateIrcHost() , AvCasterStore::UpdateIrcHost()
- added IrcClient->AddServerChat() , IrcClient->AddClientChat() , IrcClient->AddUserChat() helpers
refactor for new GUI layout
- split Controls panel class into Controls and Presets
- added Presets class
- moved Controls::handlePresetCombo() to AvCaster::SetPreset()
- moved Controls::rejectPresetChange() to AvCaster::RejectPresetChange()
- moved Controls::setCreatePresetMode() to MainContent::setCreatePresetMode()
- moved Controls::isCreatePresetMode() to MainContent::isCreatePresetMode()
- moved Controls::configureCombobox() to MainContent::configureCombobox()
- added MainContent::loadPresetsCombo()
add cli switch to disable chat (issue #34)
- added cli switches for disabling chat , compositor (nyi) , preview (nyi)
- filtered ANSI color codes from messages
- tokenized LCTV message timestamps
- added AvCaster::IsCompositorEnabled , AvCaster::IsPreviewEnabled , AvCaster::IsChatEnabled ;
- added AvCasterStore->verifyServers() , AvCasterStore->verifyServer()
- added ChatList->isChattersNode()
- added IrcClient::OnNickChange() , IrcClient::ProcessTextMeta() , IrcClient::ProcessTimestamp()
add cli switches to disable media and preview (issue #34)
- added AvCaster::IsMediaEnabled , AvCaster::GetIsMediaEnabled()
- added AvCaster::GetIsCompositorEnabled() ,AvCaster::GetIsPreviewEnabled()
add cli switches to disable remaining media elements (issue #34)
- added AvCaster::IsScreenEnabled , AvCaster::IsCameraEnabled , AvCaster::IsTextEnabled
- added AvCaster::GetIsAudioEnabled() , AvCaster::GetIsScreenEnabled() , AvCaster::GetIsCameraEnabled() , AvCaster::GetIsTextEnabled() ,AvCaster::GetIsImageEnabled()
sort and separate chat nicks by network
- added AvCasterStore::getChatNicks()
- made Chat a ValueTree::Listener for add/remove servers/ChatLists
- added Chat->refresh() , Chat->createChatList() , Chat->destroyChatList() , Chat->isServersNode()
- instantiate multiple ChatLists as needed - passing chattersStore into ChatList constructor
- ChatLists now listen only on their own chattersStore
- renamed ChatList->serversStore to ChatList->chattersStore
- removed ChatList->nicks , ChatList->reloadNicks () , ChatList->isChattersNode()
CURRENT: disable runtime features via cli args (issue #34) allow toggle devices, preview, and output via GUI (issue #21)
- recovers gracefully from audio device init failures
- fixed testaudio caps
- added Controls->audioToggle
- added AvCaster::HandleCliParamsTerminating()
- merged AvCaster::HandleCliParamsPreInit() and AvCaster::HandleCliParamsPostInit() into AvCaster::ProcessCliParams()
- added Gstreamer::RemoveElement() , Gstreamer::IsInBin()
- added AvCaster::GetIsChatEnabled() , AvCaster::IsInitialized , AvCaster::GetIsInitialized()
- removed AvCaster::GetGuiXwinHandle()
- renamed AvCasterStore->toogleControl() to AvCasterStore->revertControl()
- renamed Gstreamer::PreviewSink to Gstreamer::PreviewRealSink
- added Gstreamer::PreviewQueue , Gstreamer::PreviewFauxSink
- added Gstreamer::AudioAlsaSource , Gstreamer::AudioPulseSource , Gstreamer::AudioJackSource , Gstreamer::AudioTestSource , Gstreamer::AudioCaps
- added Gstreamer::PreviewXwin
- added Gstreamer::ReloadConfig()
- renamed all Gstreamer::ConfigureBin() to Gstreamer::BuildBin()
- renamed Gstreamer::ConfigureFauxVideo() to Gstreamer::ConfigureTestVideo()
- renamed Gstreamer::ConfigureFauxAudio() to Gstreamer::ConfigureFauxSource()
- removed Gstreamer::ConfigurePipeline() , Gstreamer::ReconfigureBin() , Gstreamer::RecreateBin()
- added Gstreamer::SetMessageHandler() , Gstreamer::HandleMessage() , Gstreamer::HandleErrorMessage()
- added Gstreamer::ConfigurePreview() , Gstreamer::ConfigureAudio()
- removed Gstreamer::DeleteElement() , Gstreamer::DestroyBin() , Gstreamer::RecreateBin()
- added Gstreamer::RemoveElement() , Gstreamer::DestroyElement()
- added Gstreamer::GetElementId() , Gstreamer::GetPadId() , Gstreamer::IsInBin()
- removed Gstreamer::GetVersionMajor() , Gstreamer::GetVersionMinor()
can you hear me speaking ? öäå ø æ
###TODO: IrcClient: eliminate IrcSServerInfo ??? eliminate host , port , nick globals eliminate RUN_NETWORK_AS_PROC ??? eliminate IRCCLIENT_HAS_MULTIPLE_SESSIONS ??? (perhaps as feature mutually exclusive with RUN_NETWORK_AS_PROC) freenode:#opensuse-buildservice:darix osc linkpac openSUSE:Factory/libircclient AvCaster: GetIsEnabled() functions and possibly IsEnabled vars are probably not needed - perhaps their semantic could be to set _ACTIVE_ID storeage false and disable the control buttons Gstreamer: ensure heed the semantics of is_enabled/AvCaster::IsEnabled() and is_active/AvCaster::Is*Active() eliminate DETACH_PREVIEW_BIN_INSTEAD_OF_RECREATE eliminate DETACH_OUTPUT_BIN_INSTEAD_OF_RECREATE eliminate RESIZE_PREVIEW_BIN_INSTEAD_OF_RECREATE eliminate DETACH_PREVIEW_BIN_INSTEAD_OF_RECREATE eliminate DETACH_OUTPUT_BIN_INSTEAD_OF_RECREATE eliminate NATIVE_CAMERA_RESOLUTION_ONLY eliminate SHOW_DISABLED_PREVIEW_TINY AvCasterStore: eliminate INJECT_DEFAULT_CAMERA_DEVICE_INFO ?? eliminate FIX_OUTPUT_RESOLUTION_TO_LARGEST_INPUT
more: bitlbee login fails if another client already logged in if IrcClient is not to be run in own thread remove Thread superclass RUN_NETWORK_AS_THREAD if multiple IrcClient instances then remove this->servers how to detect other mods in lctv chat re-configure media pipeline at runtime per control toggle buttons -> try make every bin robustly "pluggable" via cliargs=>storage to aid in debugging on various systems implement interstitial replace testvideos with alpha img or fakesrc
- verify the runtime dependencies
- connect remaining config GUI controls
- sanity checks/validations
- test for device/screen existence
- detect camera resolutions and implement device storage (moving CAMERA_RES_ID out of main store)
- GUI styling
- GUI tooltips
- translations
- scale inputs to fill compositor output
TODO: after JUCE upgrade
- change listeners of old form SliderListener to new form Slider::Listener
- add back codeblocks projects
// useful snippets GstElement* GetElement(GstBin* a_bin , String element_id) { return gst_bin_get_by_name(a_bin , CHARSTAR(element_id)) ; }
git add Source/ && git add Builds/ && git add AvCaster.jucer && git add .travis.yml git s | grep -v JuceLibraryCode git co HEAD JuceLibraryCode && rm JuceLibraryCode/modules/juce_core/native/juce_curl_Network.cpp JuceLibraryCode/modules/juce_core/text/juce_Base64.cpp JuceLibraryCode/modules/juce_core/text/juce_Base64.h JuceLibraryCode/modules/juce_data_structures/values/juce_ValueTreeSynchroniser.cpp JuceLibraryCode/modules/juce_data_structures/values/juce_ValueTreeSynchroniser.h git add Builds/GnuMakefile/Makefile AvCaster.jucer Builds/GnuMakefile/Makefile Builds/MacOSX/AvCaster.xcodeproj/project.pbxproj Builds/MacOSX/Info.plist Builds/VisualStudio2008/AvCaster.vcproj Builds/VisualStudio2008/resources.rc Builds/VisualStudio2015/AvCaster.vcxproj Builds/VisualStudio2015/AvCaster.vcxproj.filters Builds/VisualStudio2015/resources.rc Source/AvCaster.cpp Source/AvCasterConfig.h Source/Config.cpp Source/Config.h Source/Trace/TraceAvCaster.h
// debootstrap sudo apt-get install debootstrap schroot sudo echo " [stable-i386] description=Debian stable (i386) directory=/srv/chroot/stable_i386 personality=linux32 root-users=travis type=directory users=travis " >> /etc/schroot/schroot.conf sudo debootstrap --variant=buildd --arch i386 stable /srv/chroot/stable_i386 http://ftp.de.debian.org/debian/ schroot -c stable-i386 -u root apt-get install -y --force-yes apt-get install libfreetype6-dev libgstreamer-plugins-base1.0-dev libx11-dev libxcursor-dev libxinerama-dev schroot -c stable-i386
// orphaned refs
- 55707f2 2015-10-22 | release build (HEAD -> rebase, origin/gstreamer, gstreamer) [bill auger]
- 887ae62 2015-10-22 | start all cameras without specifying caps (origin/travis, origin/master, origin/HEAD, travis, master) [bill auger]
- bdabf7d 2015-10-21 | add .travis.yml [bill auger]
- 3b2e26d 2015-10-16 | implement video tees (closes #12) (closes #18) [bill auger]
- fdb42db 2015-10-15 | Update README.md [bill auger]
###some usefulk links https://packages.qa.debian.org/g/gstreamermm-1.0.html http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-base-libs/html/gst-plugins-base-libs-gstvideooverlay.html
###WARNINGS: v4l2bufferpool libv4l2 converter detected, disabling CREATE_BUFS
###NOTES: currently locked at 3.1.1 because of scaled resolutions bug
screen+camera+audio->comp+tees->fake fake->enc->mux->output gstreamer HEAD behaviour
screen+camera+audio->comp->enc->mux->output master HEAD behaviour
screen+camera+comp+tees
screen+audio->enc->mux->output
camera+audio->enc->mux->output
fakescreen+fakecamera->comp
fakescreen+fakecamera+fakeaudio->comp->tees->fake fake->enc->mux->output
https://gist.github.com/0c69dd2072891af0e06f.git names
freeglut3-dev = freeglut
g++
libasound2-dev = alsa-lib 1.0.29-1
libcurl4-openssl-dev = curl 7.45.0-1
libfreetype6-dev = freetype2 2.6.1-1
libjack-jackd2-dev
libx11-dev = libx11 1.6.3-1
libxcomposite-dev = libxcomposite 0.4.4-2
libxcursor-dev = libxcursor 1.1.14-2
libxinerama-dev libxinerama 1.1.3-2
libxrandr-dev = libxrandr / libxrandr-git 1.5.0-1
mesa-common-dev = mesa 11.0.3-1
arch additional reqs
libgstopencv.so
libgstopenal.so
####detect camera resolutions
$ v4l2-ctl -d /dev/video0 --list-formats-ext
ioctl: VIDIOC_ENUM_FMT
Index : 0
Type : Video Capture
Pixel Format: 'YUYV'
Name : YUYV 4:2:2
Size: Discrete 640x480
Interval: Discrete 0.033s (30.000 fps)
Size: Discrete 160x120
Interval: Discrete 0.033s (30.000 fps)
Size: Discrete 176x144
Interval: Discrete 0.033s (30.000 fps)
Size: Discrete 320x240
Interval: Discrete 0.033s (30.000 fps)
Size: Discrete 352x288
Interval: Discrete 0.033s (30.000 fps)
Size: Discrete 1280x720
Interval: Discrete 0.100s (10.000 fps)
Index : 1
Type : Video Capture
Pixel Format: 'MJPG' (compressed)
Name : Motion-JPEG
Size: Discrete 640x480
Interval: Discrete 0.033s (30.000 fps)
Size: Discrete 160x120
Interval: Discrete 0.033s (30.000 fps)
Size: Discrete 176x144
Interval: Discrete 0.033s (30.000 fps)
Size: Discrete 320x240
Interval: Discrete 0.033s (30.000 fps)
Size: Discrete 352x288
Interval: Discrete 0.033s (30.000 fps)
Size: Discrete 1280x720
Interval: Discrete 0.033s (30.000 fps)
or:
#include <sys/ioctl.h>
enum v4l2_buf_type type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
struct v4l2_fmtdesc fmt;
struct v4l2_frmsizeenum frmsize;
struct v4l2_frmivalenum frmival;
fmt.index = 0;
fmt.type = type;
while (ioctl(fd, VIDIOC_ENUM_FMT, &fmt) >= 0)
{
frmsize.pixel_format = fmt.pixelformat;
frmsize.index = 0;
while (ioctl(fd , VIDIOC_ENUM_FRAMESIZES, &frmsize) >= 0)
{
if (frmsize.type == V4L2_FRMSIZE_TYPE_DISCRETE)
printf("%dx%d\n" , frmsize.discrete.width , frmsize.discrete.height) ;
else if (frmsize.type == V4L2_FRMSIZE_TYPE_STEPWISE)
printf("%dx%d\n" , frmsize.stepwise.max_width , frmsize.stepwise.max_height) ;
frmsize.index++;
}
++fmt.index ;
}
gst uninstalled -->
sudo apt-get install pkg-config bison flex libglib2.0-dev liborc-0.4-dev autotools gtk-doc-tools
wget http://cgit.freedesktop.org/gstreamer/gstreamer/plain/scripts/create-uninstalled-setup.sh
./create-uninstalled-setup.sh
export PATH=$PATH:/pwd
./gst-master
each of master/gstreamer
master/gst-plugins-base
master/gst-plugins-bad
master/gst-plugins-good
master/gst-plugins-ugly
cd ea
./autogen.sh
make
some plugins not bulit - maybe ok configure: No package 'xv' found configure: *** These plugins will not be built: xvimagesink
unknown type name 'GLuint' http://lists.freedesktop.org/archives/gstreamer-bugs/2014-October/134824.html
sudo apt-get install build-essential libfreetype6-dev libx11-dev libxcursor-dev libxinerama-dev sed s/trusty/wily/g /etc/apt/sources.list > sources.list sudo mv sources.list /etc/apt/sources.list sudo apt-get install libgstreamer-plugins-base1.0-dev