Skip to content

DEV NOTES

bill auger edited this page Mar 4, 2016 · 25 revisions

###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()

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()

disable runtime features via cli args (issue #34)

  • 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 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()
  • connect Gstreamer bins staticly upon init
  • removed Gstreamer::IsPlaying()
  • renamed AVCaster::SetWindowTitle() to AVCaster::RefreshStatus() and AVCaster::SetStatusL()
  • renamed AvCasterStore->revertControl() to AvCasterStore->deactivateControl() and added AvCaster::DeactivateControl()

connect ConfigChat GUI to store

  • re-implemented multiple chat sessions
  • renamed AvCaster::SetConfig() to AvCaster::SetValue()
  • renamed AvCaster::GetConfigStore() to AvCaster::GetVolatileStore()
  • added AvCaster::GetSelectedNetworkStore(), AvCaster::GetNetworkStore()
  • added AvCaster::DeleteServer()
  • added AvCaster::GetNetworkNames()
  • reimplementedd AvCaster::SetPreset() functionality in Presets->createOrUpdatePreset()
  • removed AvCaster::RejectPresetChange()
  • renamed AvCaster::HandleCliParamsTerminating() to AvCaster::HandleCliParams()
  • added AvCaster::InitFail()
  • added AvCaster::PumpIrcClient()
  • renamed AvCasterStore->verifyConfig() to AvCasterStore->verifyStoredConfig()
  • renamed AvCasterStore->getOrCreateServers() to AvCasterStore->getOrCreateNetworks() AvCasterStore->verifyServers() to AvCasterStore->verifyNetworks() AvCasterStore->verifyServer() to AvCasterStore->verifyNetwork() AvCasterStore->storeServer() to AvCasterStore->storeNetwork()
  • removed AvCasterStore->getKeyNode()
  • split AvCasterStore->isControlKey() into AvCasterStore->isMediaKey(), AvCasterStore->isReconfigureKey()
  • renamed AvCasterStore->setConfig() to AvCasterStore->setValue()
  • added AvCasterStore->setRootValue(), AvCasterStore->setVolatileValue()
  • renamed Chat->serversStore to Chat->networksStore
  • implemented ChatList->valueTreePropertyChanged()
  • renamed ChatList->sortedChildIdx() to ChatList->sortedChatterIdx()
  • renamed ChatList->networkStore to ChatList->chattersStore
  • added ChatList->chatListItems ;
  • renamed ChatListItem->banButton to ChatListItem->kickButton and disabled
  • renamed Config->validateConfigGui() to Config->validateParams()
  • renamed Config->configSpacer to Config->dummyConfigPane
  • renamed Config ->serverButton to Config ->newNetworkButton ConfigChat->serverButton to ConfigChat->newNetworkButton Config ->hostCombo to Config ->networkCombo ConfigChat->hostCombo to ConfigChat->networkCombo
  • added Config ->deleteNetworkButton, Config->timestampToggle ConfigChat->deleteNetworkButton, ConfigChat>timestampToggle
  • renamed ConfigChat->serverLabel to ConfigChat->networkLabel
  • added Controls->handlePresetsCombo()
  • removed Presets->saveButton, Presets->handleSaveButton() (presets save implicitly on Config or Preset unload)
  • renamed Presets->handlePresetCombo() to Presets->handlePresetsCombo()
  • added Presets->handleConfigButton()
  • renamed Presets->newButton to Presets->newPresetButton
  • renamed Presets->deleteButton to Presets->deletePresetButton
  • renamed IrcNetworkInfo::host to IrcNetworkInfo::network
  • added IrcNetworkInfo::network_id, IrcNetworkInfo::pass, IrcNetworkInfo::channel, IrcNetworkInfo::greeting, IrcNetworkInfo::nicks
  • added IrcClient->configure
  • removed IrcClient->IsValidServerInfo
  • added IrcClient->GetNetworkInfo(), IrcClient->SetRetries(), IrcClient->GetRetries(), IrcClient->UpdateNicks()
  • renamed IrcClient->createSession() to IrcClient->createSessions()
  • added IrcClient->destroySessions()
  • removed IrcClient->callbacks
  • renamed IrcClient->servers to IrcClient->networks IrcClient->serversStore to IrcClient->networksStore
  • added PresetSeed->chatNetworkIdx
  • added Trace::TraceGuiVb), Trace::TraceMediaVb), Trace::TraceConfigVb), Trace::TraceChatVb(), Trace::TraceTreeChanged()

refactored data store to accomodate single chat network per preset

  • detached NETWORKS_ID storage nodes from root tree split into each of PRESETS_ID storage nodes as NETWORK_ID
  • volatile NETWORKS_ID node is now permanently attached under VOLATILE_CONFIG_ID node as NETWORK_ID
  • detached volatile CHATTERS_ID node from NETWORK_ID node
  • moved CONFIG::DefaultStore() to PresetSeed::DefaultStore()
  • removed AvCaster::GetVolatileStore(), AvCaster::GetSelectedNetworkStore(), AvCaster::GetNetworkStore(), AvCaster::GetNetworkNames()
  • removed AvCaster::UpdateIrcHost()
  • renamed AvCaster::UpdateChatNicks() to AvCaster::UpdateChatters()
  • removed AvCaster::CliParams
  • renamed AvCasterStore->verifyStoredConfig() to AvCasterStore->verifyStorage()
  • removed AvCasterStore->getOrCreatePresets(), AvCasterStore->getOrCreateNetworks()
  • removed AvCasterStore->getNetworkStore()
  • removed AvCasterStore::updateIrcHost()
  • renamed AvCasterStore::updateChatNicks() to AvCasterStore::updateChatters()
  • removed AvCasterStore->setRootValue(), AvCasterStore->setPresetValue()
  • removed AvCasterStore->storeNetwork() (handled in AvCasterStore->storePreset())
  • added AvCasterStore->verifyChildNode(), AvCasterStore->verifyPresetChildNode(), AvCasterStore->verifyNetworkProperty()
  • added AvCasterStore->hasDuplicatedNodes(), AvCasterStore->nDuplicatedNodes(), AvCasterStore->removeDuplicatedNodes()
  • added AvCasterStore->filterRogueKeys(), AvCasterStore->filterRogueNodes()
  • added AvCasterStore->restoreStaticPresets(), AvCasterStore->restoreTransients(), AvCasterStore->restorePresetTransients
  • added AvCasterStore->setValueViaGui()
  • renamed AvCasterStore->networks to AvCasterStore->network
  • added AvCasterStore->chatters
  • removed ValueTree::Listener interface from Chat class
  • removed Chat->initialize(), Chat->createChatList(), Chat->destroyChatList(), Chat->isNetworkNode()
  • removed Chat->networksStore, Chat->chatLists
  • renamed Chat->dummyChatList to Chat->chatList
  • added Chat->setFontSize(), Chat->getFontSize()
  • added ChatList->initialize()
  • added Config->initialize()
  • added Config->configStore, Config->networkStore
  • removed Config->newNetworkButton, Config->deleteNetworkButton
  • renamed Config->networkCombo to Config->networkText
  • removed ConfigChat->comboBoxChanged()
  • removed ConfigChat->newNetworkButton, ConfigChat->deleteNetworkButton
  • renamed ConfigChat->networkCombo to ConfigChat->networkText
  • added Controls->initialize()
  • added Controls->configStore
  • removed IrcClient::IrcNetworkInfo struct
  • removed IrcClient::GetNetworkInfo(), IrcClient::GetRetries()
  • renamed IrcClient->createSessions() to IrcClient->createSession(), IrcClient->destroySessions() to IrcClient->destroySession()
  • added IrcClient::NetworkStore, IrcClient::Nicks
  • added IrcClient->session
  • removed IrcClient::IrcClient::ShouldShowTimestamps, IrcClient::ShouldShowJoinParts
  • removed IrcClient->networksStore, IrcClient->networks
  • added PresetSeed::DefaultStore(), PresetSeed::PresetSeeds()
  • added PresetSeed->setValue()
  • removed PresetSeed->isOutputActive
  • renamed PresetSeed->preset to PresetSeed->presetStore
  • added PresetSeed->networkStore
  • added PresetSeed->network, PresetSeed->port, PresetSeed->nick, PresetSeed->pass, PresetSeed->channel, PresetSeed->showTimestamps, PresetSeed->showJoinParts, PresetSeed->greeting
  • removed PresetSeed->chatNetworkIdx

can you hear me speaking ? öäå ø æ

###CURRENT: ###TODO:

Packaging: 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 storage false and disable the control buttons AvCasterStore: eliminate FIX_OUTPUT_RESOLUTION_TO_LARGEST_INPUT IrcClient: bitlbee login fails if another client already logged in how to detect other mods in lctv chat implemenet chatlist kick button Gstreamer: Gstreamer: eliminate NATIVE_CAMERA_RESOLUTION_ONLY eliminate AvCaster::GetVolatileStore(), Gstreamer::ReloadConfig(), AvCaster::GetIsPreviewActive() by passing Store->config into Config, Controls, Gstreamer implement text 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 $(if $(filter-out x86_64 , $(shell uname -m)) , -malign-double , -fPIC) (after upgrade) $ CONFIG=Release32 PKG_CONFIG_PATH=/usr/lib/i386-linux-gnu/pkgconfig/ make

// 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 JuceLibraryCode/modules/juce_core/containers/juce_ListenerList.h JuceLibraryCode/modules/juce_core/maths/juce_StatisticsAccumulator.h JuceLibraryCode/modules/juce_core/native/java/AndroidMidi.java JuceLibraryCode/modules/juce_core/native/java/AndroidMidiFallback.java JuceLibraryCode/modules/juce_core/native/juce_mac_ClangBugWorkaround.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

define CONFIGURE_SCREENCAP_CHAIN 1

define CONFIGURE_CAMERA_CHAIN 1

define CONFIGURE_AUDIO_CHAIN 1

define CONFIGURE_TEXT_CHAIN 0

define CONFIGURE_COMPOSITING_CHAIN 1

define CONFIGURE_MUX_CHAIN 1

define CONFIGURE_OUTPUT_CHAIN 1

define CONFIGURE_TEES 0|1

define FAUX_SCREEN_SRC 0

define FAUX_CAMERA_SRC 0

define FAUX_AUDIO_SRC 0

define FAKE_MUX_ENCODER_SRC_AND_SINK 1

screen+camera+audio->comp->enc->mux->output master HEAD behaviour

define CONFIGURE_SCREENCAP_CHAIN 1

define CONFIGURE_CAMERA_CHAIN 1

define CONFIGURE_AUDIO_CHAIN 1

define CONFIGURE_TEXT_CHAIN 0

define CONFIGURE_COMPOSITING_CHAIN 1

define CONFIGURE_MUX_CHAIN 1

define CONFIGURE_OUTPUT_CHAIN 1

define CONFIGURE_TEES 0

define FAUX_SCREEN_SRC 0

define FAUX_CAMERA_SRC 0

define FAUX_AUDIO_SRC 0

define FAKE_MUX_ENCODER_SRC_AND_SINK 0

screen+camera+comp+tees

define CONFIGURE_SCREENCAP_CHAIN 1

define CONFIGURE_CAMERA_CHAIN 1

define CONFIGURE_AUDIO_CHAIN 0

define CONFIGURE_TEXT_CHAIN 0

define CONFIGURE_COMPOSITING_CHAIN 1

define CONFIGURE_MUX_CHAIN n/a

define CONFIGURE_OUTPUT_CHAIN n/a

define CONFIGURE_TEES 0|1

define FAUX_SCREEN_SRC 0

define FAUX_CAMERA_SRC 0

define FAUX_AUDIO_SRC 0

define FAKE_MUX_ENCODER_SRC_AND_SINK n/a

screen+audio->enc->mux->output

define CONFIGURE_SCREENCAP_CHAIN 1

define CONFIGURE_CAMERA_CHAIN 0

define CONFIGURE_AUDIO_CHAIN 1

define CONFIGURE_TEXT_CHAIN 0

define CONFIGURE_COMPOSITING_CHAIN n/a

define CONFIGURE_MUX_CHAIN 1

define CONFIGURE_OUTPUT_CHAIN 1

define CONFIGURE_TEES n/a

define FAUX_SCREEN_SRC 0

define FAUX_CAMERA_SRC 0

define FAUX_AUDIO_SRC 0

define FAKE_MUX_ENCODER_SRC_AND_SINK 0|1

camera+audio->enc->mux->output

define CONFIGURE_SCREENCAP_CHAIN 0

define CONFIGURE_CAMERA_CHAIN 1

define CONFIGURE_AUDIO_CHAIN 1

define CONFIGURE_TEXT_CHAIN 0

define CONFIGURE_COMPOSITING_CHAIN n/a

define CONFIGURE_MUX_CHAIN 1

define CONFIGURE_OUTPUT_CHAIN 1

define CONFIGURE_TEES n/a

define FAUX_SCREEN_SRC 0

define FAUX_CAMERA_SRC 0

define FAUX_AUDIO_SRC 0

define FAKE_MUX_ENCODER_SRC_AND_SINK 0|1

fakescreen+fakecamera->comp

define CONFIGURE_SCREENCAP_CHAIN 1

define CONFIGURE_CAMERA_CHAIN 1

define CONFIGURE_AUDIO_CHAIN 0

define CONFIGURE_TEXT_CHAIN 0

define CONFIGURE_COMPOSITING_CHAIN 1

define CONFIGURE_MUX_CHAIN n/a

define CONFIGURE_OUTPUT_CHAIN n/a

define CONFIGURE_TEES 1

define FAUX_SCREEN_SRC 1

define FAUX_CAMERA_SRC 1

define FAUX_AUDIO_SRC 0

define FAKE_MUX_ENCODER_SRC_AND_SINK 0|1

fakescreen+fakecamera+fakeaudio->comp->tees->fake fake->enc->mux->output

define CONFIGURE_SCREENCAP_CHAIN 1

define CONFIGURE_CAMERA_CHAIN 1

define CONFIGURE_AUDIO_CHAIN 1

define CONFIGURE_TEXT_CHAIN 0

define CONFIGURE_COMPOSITING_CHAIN 1

define CONFIGURE_MUX_CHAIN 1

define CONFIGURE_OUTPUT_CHAIN 0|1

define CONFIGURE_TEES 1

define FAUX_SCREEN_SRC 1

define FAUX_CAMERA_SRC 1

define FAUX_AUDIO_SRC 1

define FAKE_MUX_ENCODER_SRC_AND_SINK 1

arch package

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

Clone this wiki locally