Some notes: web assembly: a cool technology allows you to compile c/c++/rust and other languages into wasm, expose API to javascript world. Web audio worklet/worker: allows developer to intercept audio stream/custom processing A good introduction is at: https://developers.google.com/web/updates/2017/12/audio-worklet Advance pattern: https://developers.google.com/web/updates/2018/06/audio-worklet-design-pattern https://github.com/GoogleChromeLabs/web-audio-samples/tree/master/audio-worklet/design-pattern/shared-buffer/ Combination of wasm and audio worklet can do a fair amount ? Read More »
It is well known that if? mutex protected codes could potentially be replaced by atomic compare exchange,? thus we cab achieve lock-less programming. In practice, it may need several techniques to get it working. Let’s look at a subscription example: Normal mutex An subscriber? can subscribe some content from a publisher,?in other word, a publisher ? Read More »
Repo:?https://github.com/meetecho/janus-gateway code: video sfu code at: plugins/janus_videoroom.c How sub/pub works: in its plugin implementation: plugins/janus_videoroom.c , there is: struct janus_videoroom_publisher { GSList subscribers; / Subscriptions to this publisher (who’s watching this publisher) */ GSList subscriptions; / Subscriptions this publisher has created (who this publisher is watching) */ } for every incoming? rtp from a publisher: ? Read More »
Problem: For example: I have a merge in main dev branch, I want to cherry-pick that merge into a relatively old prod branch, If we directly do: git cherry-pick merge_commit_in_dev_branch, we will get a? error:? is a merge but no -m option was given. Solution So we need to do this: git cherry-pick -m 1? ? Read More »
How to a/v sync in IETF RFC? The RFC specified how to do a/v sycn generally in? https://tools.ietf.org/html/rfc6051 RTP flows are synchronised by receivers based on information that is contained in RTCP SR packets generated by senders (specifically, the NTP-format timestamp and the RTP timestamp). Synchronisation requires that a common reference clock MUST be used ? Read More »
I recently submitted a patch to webrtc native. https://webrtc-review.googlesource.com/c/src/+/143841 https://groups.google.com/forum/?utm_medium=email&utm_source=footer#!topic/discuss-webrtc/zn4kmjflvt4 The process is not that difficult, but?there could be some caveats depending on your os version etc. Here is my notes/steps: Read official doc Basically you should follow this?official doc is at: https://webrtc.org/contributing/ install depot_tools mkdir webrtc && cd webrtc $ git clone ? Read More »
vim has a grammar check plugin https://github.com/rhysd/vim-grammarous How to install vim-grammarous? it uses new vim 8+ plugin mechanism, so we can easily install it by: mkdir -p ~/.vim/pack/bundle/start cd ~/.vim/pack/bundle/start git clone https://github.com/rhysd/vim-grammarous The first time you run the: GrammarousCheck in the vim, it will auto download the languagetool (java jar) etc. How to ? Read More »
H.264 profile-level-id in sdp:?profile-level-id = 428014? ( remember SDP use hex, wiki/h264 they use decimal ) profile_idc 0x42 == 66 so it is Baseline profile profile-iop 0x80 mean constraint_set0_flag=1 (so it is Constrained Baseline profile) and others 0 level-idc 0x14 == 20 so it is Level 2.0 https://en.wikipedia.org/wiki/H.264/MPEG-4_AVC?described the details of h264 profile, level. Profiles ? Read More »