Commit Graph

2268 Commits

Author SHA1 Message Date
Anthony Minessale fdcfcaece9 FS-7500: don't wait for video ready from inside video thread that sets that flag 2015-05-28 12:47:11 -05:00
Anthony Minessale 24254bb1fd FS-7500: revert 2015-05-28 12:47:11 -05:00
Anthony Minessale d3359ff9f0 FS-7500: don't wait for video ready from inside video thread that sets that flag 2015-05-28 12:47:11 -05:00
Anthony Minessale c040b0ff0d FS-7503: store stream name so same module can handle mutiple stream interfaces 2015-05-28 12:47:10 -05:00
Anthony Minessale 517a6d4ab7 FS-7503: add video read flags to choose flush and or block mode and add stuff to vlc so it can play youtube urls 2015-05-28 12:47:10 -05:00
Michael jerris 1cd9e52b9e FS-7499: add enum for various rtcp related types 2015-05-28 12:47:10 -05:00
Anthony Minessale c9cccd519a FS-7509: add some more bandwidth control features 2015-05-28 12:47:09 -05:00
Anthony Minessale 0d34e8ac77 FS-7500: add a framebuffer to reuse memory and use it to offload frame writing from video muxing thread to a dedicated write thread 2015-05-28 12:47:08 -05:00
Anthony Minessale 78d06832e7 FS-7500: add force flag 2015-05-28 12:47:07 -05:00
Anthony Minessale a42f40f938 FS-7514 FS-7505: clean up more from yesterday 2015-05-28 12:47:06 -05:00
Anthony Minessale a63dab7a4a FS-7503 FS-7514: A bunch of stuff:
Get filehandles working with video in some cases (if using vlc://):
    mod_conference for play and record video (will record the canvas in mix mode or floor holder in non-mix mode)
    regular playback app should be able to play vlc streams

Add no-minimize-encoding member flag so particilar memebers can opt out of that setting and still get their own encoded stream (for bw related needs)

TODO:

  mod_vlc is a mess.  Find a way to merge video_context and file_context.  They are very similar and they are intertwined and messy.
  Find out why vlc creates messed up mp4 files that don't play everywhere
  Get VLC so it can record aac, mp4x webm
2015-05-28 12:47:06 -05:00
Anthony Minessale 4bcc6e6d64 FS-7503 FS-7514: First crack at recording mp4 <action application="capture_video" data="vlc://#transcode{vcodec=h264,acodec=mp3}:std{access=file,mux=mp4,dst=/var/www/sounds/file.mp4}"/> 2015-05-28 12:47:05 -05:00
Anthony Minessale 93db69ed03 FS-7500: can't use stristr for this 2015-05-28 12:47:04 -05:00
Anthony Minessale 628edd1183 FS-7513: add code to track media direction to avoid assigning floor or video layers to those with no signal 2015-05-28 12:47:03 -05:00
Anthony Minessale 2c4c2587ed FS-7513 FS-7509: crack at screen share 2015-05-28 12:47:03 -05:00
Seven Du e02ff26569 FS-7500: libpng 1.6.0 has much simpler APIs, also add a new switch_img_patch_png to possible patch a transparent png to an img
While this is not optimal, we should cache the png:
1) cache the whole buffer, with comes with RGBARGBA pixel formats
2) Allow switch_image_t to be other formats e.g. VPX_IMG_FMT_ARGB, VPX_IMG_FMT_ARGB_LE, or VPX_IMG_FMT_444A
   those can have alpha channels so we can check the alpha channel before we patch

Note all PNG are created equel, or maybe a bug in libpng since for some PNG files with alpha the returned buffer
     not seems like RGBARGBA... while docs says it should default be RGBA
2015-05-28 12:47:02 -05:00
Anthony Minessale e65f6bd604 FS-7513: add logo func and positioning param and vid snapshot 2015-05-28 12:47:02 -05:00
Anthony Minessale 2c1ab14074 FS-7513: add configurable FPS for conf and default to 15 2015-05-28 12:47:02 -05:00
Seven Du 84a1f5f642 FS-7500: add overlay func 2015-05-28 12:47:02 -05:00
Seven Du c70e8cf216 FS-7500: add yuv2rgb 2015-05-28 12:47:01 -05:00
Anthony Minessale 1faf602251 FS-7513: basic logo 2015-05-28 12:47:01 -05:00
Anthony Minessale 521a97935e FS-7500: check in png code and put it in the core to mature 2015-05-28 12:47:00 -05:00
Seven Du 90ea86bc95 FS-7506 FS-7513: refactor with rgb color space to support anti aliasing 2015-05-28 12:47:00 -05:00
Anthony Minessale 0697db4fb4 FS-7506 FS-7513: set banner with video_banner_text variable set before calling in, NEEDS DOCS params are parsable inside a {} string 2015-05-28 12:46:59 -05:00
Seven Du 9d7eef28e6 FS-7500 FS-7513: add and use switch_img_fill 2015-05-28 12:46:59 -05:00
Seven Du c857be4547 FS-7506: improve draw_text with minimum anti aliasing 2015-05-28 12:46:59 -05:00
Seven Du 0f28311b17 FS-7506 FS-7513: refactor switch color and implement draw_text in mod_conference 2015-05-28 12:46:59 -05:00
Anthony Minessale 1aa66ef30a FS-7513: do layers in order and reset when attaching 2015-05-28 12:46:58 -05:00
Anthony Minessale fcf32fd53d FS-7500 FS-7513: add video bandwidth control function and use it in mod_conference 2015-05-28 12:46:58 -05:00
Anthony Minessale e14ad07a26 FS-7500: move function to core 2015-05-28 12:46:58 -05:00
Anthony Minessale f7fb5fbff3 FS-7500: forgot one 2015-05-28 12:46:58 -05:00
Anthony Minessale 1bb8c0a8fc FS-7500: fix signed error 2015-05-28 12:46:58 -05:00
Anthony Minessale a56e65bace FS-7513: add flag to choose between encoding each frame and using central encoder per codec, add parsing for floor fields and reservation fields in layouts, add param to control bandwidth for consolidated codecs, add audio-position attr to images in layout to sync with virtual HRTF 2015-05-28 12:46:58 -05:00
Anthony Minessale fa5d6af2cd FS-7513: refactor conference video muxing to create one distinct encoder per codec used and only create one encoded frame per distinct codec, store current image used by layer on the layer so it is not destroyed before the canvas is written, refactor and rearrange some functions 2015-05-28 12:46:57 -05:00
Anthony Minessale 1061aef9fa FS-7500: convert more to typedef to avoid warnings and build problems 2015-05-28 12:46:56 -05:00
Anthony Minessale 13c3f053ab FS-7500: use the vpx_image_t from the installed header file to prevent mismatch 2015-05-28 12:46:56 -05:00
Anthony Minessale 4d100bc2e8 FS-7509: stop media on verto detach 2015-05-28 12:46:55 -05:00
Anthony Minessale 982d05c30c FS-7501: fix vid buffer reset 2015-05-28 12:46:55 -05:00
Seven Du c52d69d173 FS-7500: add switch_img_copy to clone an image 2015-05-28 12:46:54 -05:00
Anthony Minessale a69938c3d5 FS-7500: factor back in video_thread callback and move it to the video_read_frame 2015-05-28 12:46:53 -05:00
Anthony Minessale bc24e0f28a support AVPF too 2015-05-28 12:46:53 -05:00
Anthony Minessale 17aa836403 FS-7499: add generic nack support to rtp stack 2015-05-28 12:46:53 -05:00
Anthony Minessale 836e2b2888 FS-7500: add switch_inthash variety of hash that can key on int 2015-05-28 12:46:53 -05:00
Anthony Minessale 0d626bc715 FS-7501: more factoring on vid buffer 2015-05-28 12:46:52 -05:00
Anthony Minessale 0e991e7d0f FS-7501: connect video buffer for testing, still needs a lot of work 2015-05-28 12:46:52 -05:00
Anthony Minessale 2a50c6d55c FS-7501: use vidderbuffer in rtp 2015-05-28 12:46:52 -05:00
Anthony Minessale 7b323f0b17 FS-7501: add vidderbuffer 2015-05-28 12:46:52 -05:00
Seven Du a50789f97f FS-7499: magic number to macro 2015-05-28 12:46:52 -05:00
Anthony Minessale 76ec99ed97 FS-7500: poll rtp on answer until dtls is negotiated 2015-05-28 12:46:51 -05:00
Anthony Minessale 303a4ecf99 FS-7499: move fir and pli into the normal rtcp code so it can be bundled with a report block per the rfc 2015-05-28 12:46:51 -05:00
Anthony Minessale be21d4f28f FS-7500: use unsigned int for frame->timestamp 2015-05-28 12:46:50 -05:00
Anthony Minessale 970064294c FS-7500: refactoring 2015-05-28 12:46:50 -05:00
Anthony Minessale 2ea12656ea FS-7500: improvement for conf vid 2015-05-28 12:46:49 -05:00
Anthony Minessale 853873725b FS-7500: factor out the write_image callback and fix the vlc video endpoint to setup and match the audio params of the A leg when bridged 2015-05-28 12:46:48 -05:00
Anthony Minessale 01fda5748c FS-7500: another round of trying to make things work 2015-05-28 12:46:48 -05:00
Anthony Minessale b90d24a05f FS-7513: fix video switching in conference 2015-05-28 12:46:48 -05:00
Anthony Minessale b8ba1a1469 FS-7500: reduce CNG frames on video and move debug from mod_fsv to the core with a flag to enable it since the raw packet is not available anymore when you set DECODED READ flag 2015-05-28 12:46:47 -05:00
Anthony Minessale 4dc155f164 FS-7500: add switch_core_session_raw_read to put session into raw read mode without needing a local codec var (WE SHOULD REFACTOR MUCH OF switch_ivr_* to use this...) and add echo_decode_audio option to echo app 2015-05-28 12:46:47 -05:00
Anthony Minessale e7d34f3170 FS-7508: tolerate some messed up packets a little more 2015-05-28 12:46:45 -05:00
Anthony Minessale 22020c86cb FS-7500: add SFF_USE_VIDEO_TIMESTAMP to tell video write frame if it needs to use a timer or not for timestamps 2015-05-28 12:46:45 -05:00
Anthony Minessale 0cd5658caa FS-7500: another refactoring pass, temp code still in place, WORK IN PROGRESS 2015-05-28 12:46:44 -05:00
Anthony Minessale 44e7929507 FS-7500: revert earlier bridge change 2015-05-28 12:46:44 -05:00
Anthony Minessale 659c1e474e FS-7500: Work in progress. Added codec config params that can be set from session and made vpx codec re-init on size change. Also add periodic key frame timer 2015-05-28 12:46:44 -05:00
Anthony Minessale 365a5dd820 FS-7500: major refactoring pass. Push concepts from mod_vlc as deep as possible and flesh out api to use everywhere else. Round 2 will be to convert the bridge and other places using the same code 2015-05-28 12:46:44 -05:00
Anthony Minessale 765fff3d75 FS-7500: add support for codec control and use it to pass messages down to the codec and use it to implement keyframe reset for fir, pli and nack. Later we will expand to handle nack correctly. 2015-05-28 12:46:44 -05:00
William King 4fc94e3907 FS-7500 S-7513: Few build fixes 2015-05-28 12:46:43 -05:00
Seven Du 35ff4b5cda FS-7500: add ability to insert a custom callback to the core video thread
the callback will be called on each loop on read video frame, or
the callback function call run it's own loop to take over the core
loop so it can read video from session by itself.

the callback function can -

return SWITCH_STATUS_SUCCESS to wait another loop
return SWITCH_STATUS_CONTINUE to continue use the default behaviour
return anything else will break the core video loop and end the
       core thread
2015-05-28 12:46:43 -05:00
Seven Du ea2f00b3d9 FS-7500: refactor to use switch_core_video
added switch_core_codec_encode_video and switch_core_codec_decode video and add separate video implementations
the switch_core_video code depends on libvpx, wraped into the switch_ namespace like switch_apr, need to figure out how to find the correct libvpx lib in autotools
2015-05-28 12:46:42 -05:00
Seven Du bcbdf8a347 FS-7500: add switch_core_video code 2015-05-28 12:46:42 -05:00
liyang 90818f137e FS-7500: allow using the video thread externally - e.g. non rtp based video 2015-05-28 12:46:42 -05:00
Seven Du 998d933671 FS-7500: initial idea to decode video in core 2015-05-28 12:46:42 -05:00
Seven Du 416745e2cd FS-7500: move video bridge logic to switch_core_media so possible to do transcoding 2015-05-28 12:46:41 -05:00
Seven Du 90b654e923 FS-7502: add simple video media bug implementation, should work with .fsv, be sure to set enable_file_write_buffering=false
Conflicts:
	src/include/switch_types.h
2015-05-28 12:46:41 -05:00
Anthony Minessale d413bcd7b3 FS-7567 #resolve #comment additional occurrences beyond the initial patch discovered 2015-05-21 09:50:49 -05:00
Chris Rienzo b28f7acac1 FS-7496 Updated mime.types, added switch_core_mime_type2ext function and used it in mod_httapi. Now, file extensions defined in mime.types will be applied if mod_httapi downloads a file without one. 2015-04-30 14:24:41 -04:00
Michael Jerris b90aa23cbd FS-7488: [mod_managed] fix build error 2015-04-28 11:59:15 -05:00
Anthony Minessale c56b7da53a copy part of 0e7eb72ca75a3584d203c6464fc8ceaacf79ebae 2015-04-25 13:22:43 -05:00
Anthony Minessale 2c92ef31e3 FS-7386
Conflicts:
	src/switch_core_media.c
2015-03-26 23:52:53 -05:00
Manav Rathi 830bc28c45 FS-7352: Document how to use switch_core_set_variable to delete variables
I had to scan through the source of the function to verify that this
is the indeed the actual behaviour, and that NULL is a valid
argument. By mentioning this in the header, we save posterity that
effort.
2015-03-07 06:59:06 +05:30
Dave Olszewski 2890afc918 FS-7285 allow eavesdrop to bridge only one leg
Add channel variables eavesdrop_bridge_aleg and eavesdrop_bridge_bleg,
and if one is set to true on the eavesdrop channel, bridge that leg from
the target.  If neither is specified, bridge both.
2015-02-14 14:45:15 -08:00
Anthony Minessale 83dd94193d FS-7166 #resolve 2015-01-23 21:16:47 -06:00
Anthony Minessale 76370f4d17 auto urlencode user portion of sip uri 2015-01-23 21:06:02 -06:00
E. Schmidbauer 01dcb74f33 FS-7187 add switch_cache_db_create_schema() to test for SCF_AUTO_SCHEMAS flag 2015-01-22 15:41:22 -05:00
Anthony Minessale b74448462d FS-7173 #resolve #comment please verify fix in master 2015-01-20 19:55:50 -06:00
Anthony Minessale e783999b51 some changes to webrtc to make it work with iDoubs in rtcweb profile mode 2014-12-12 20:55:40 -06:00
Anthony Minessale 06c241a233 FS-6891 FS-7002 FS-7059 FS-7072 FS-7073 FS-7076 #close #comment All of these bugs are invalidated due to a botched revert -- commit 72c3df5ed3 was supposed to revert commit 1b612fecb6 but it only reverted part of it. commit 158c1f23da from the other day was erroneously created to work around the result of the botched revert so it is reverted. The result of this commit should be to bring it back to effectively properly revert 1b612fecb6 and now you can test and open new bugs if necessary. This includes the segfault in eavesdrop, and any media bug releated reports. Consider working together and only reporting one new bug if you still encounter any more problems and be sure to include details and make sure the jitter buffer is being used. 2014-12-11 20:57:55 -06:00
Michael Jerris 62a2e10e41 remove hack breaking some cross compile builds. if you really need this, you should be using new enough glibc anyways 2014-11-19 16:06:42 -05:00
Anthony Minessale df423b88d6 improve timerfd implementation to be more accurate 2014-11-18 17:14:04 -06:00
Michael Jerris 0cf770a836 FS-6996: #resolve fix define change as of glibc 2.20 for _BSD_SOURCE -> _DEFAULT_SOURCE 2014-11-17 09:27:22 -05:00
Seven Du dd629c1516 add external_video_source to media handle and expose switch_core_media_start_video_thread() to start the core video thread for non-rtp based media 2014-11-12 08:44:20 +08:00
Nathan Neulinger f175c71188 FS-6805 add support for logging full timestamps with dialplan, defaults to old behavior unless requested 2014-11-11 13:25:47 -06:00
Anthony Minessale 5ce5199be9 FS-6969 #resolve #comment This patch should accomplish the same and handle other platforms, please test 2014-11-07 08:38:01 -06:00
Anthony Minessale d1e529aefd Add new hard_mute control to allow apps to request low level mute e.g. from the rtp stack level. Its used in mod_conference to avoid reading audio while muted and possibly reduce some transcoding load 2014-10-27 15:13:42 -04:00
Jeff Lenk e3e267f462 vs2010 trivial compiler warnings 2014-10-14 13:20:52 -05:00
Anthony Minessale e4e9b1b9f9 have resume media on hold not send invite back out at the holder but rather enable media in the 200ok 2014-10-10 16:09:43 -05:00
Anthony Minessale 6bfc05b81e FS-6887 #resolve #comment new bug flag always_auto_adjust (also implicitly sets accept_any_packets) 2014-10-02 11:55:53 -05:00
Anthony Minessale 789e1481ed FS-6880 #resolve #comment I would think that in real life once the call agreed on a codec it would only offer the negotiated codecs but we can fix this to always filter for good measure. I am not sure what the ramifications are of filtering responses but I think this patch will do so as well. 2014-10-01 13:03:50 -05:00
Anthony Minessale 24084adf77 %FEATURE Add new feature to filter the SDP on bypass_media calls to remove or limit codecs.
VARIABLE: bypass_media_sdp_filter

Can be set globally or per leg on the inbound side of a bypass_media bridge.

VALID FILTERS:

remove(): Removes the specified codec if it exists in the SDP.
only():   Removes all codecs besides the one specified (providing that it exists in the sdp) (will not remove telephone-event))

EXAMPLE 1 (remove everything leaving only g729):

  <action application="set" data="bypass_media_sdp_filter=only(g729)"/>
  <action application="set" data="bypass_media=true"/>
  <action application="bridge" data="sofia/internal/1238@conference.freeswitch.org"/>

EXAMPLE 2 (remove everything leaving only g729 and also remove dtmf):

  <action application="set" data="bypass_media_sdp_filter=only(g729)|remove(telephone-event)"/>
  <action application="set" data="bypass_media=true"/>
  <action application="bridge" data="sofia/internal/1238@conference.freeswitch.org"/>

EXAMPLE 3 (remove alaw and speex):

  <action application="set" data="bypass_media_sdp_filter=remove(pcma)|remove(speex)"/>
  <action application="set" data="bypass_media=true"/>
  <action application="bridge" data="sofia/internal/1238@conference.freeswitch.org"/>
2014-10-01 01:28:10 +05:00
Anthony Minessale 92a66fb1e7 improve adaptive jitter buffer ascending check 2014-09-30 22:54:46 +05:00
Michael Jerris dac4afbfdb this was alraedy in there, whoops 2014-09-28 10:40:57 -04:00