profile
viewpoint
Jonathan Baudanza jbaudanza CaptionPop San Francisco, CA

jbaudanza/action_dispatch-gz_static 28

ActionDispatch::GzStatic is like ActionDispatch::Static, but it also serves up static .gz files

jbaudanza/jira-tracker-bridge 5

This script takes open bugs scheduled in Jira and adds them to a Pivotal Tracker Icebox

jbaudanza/as-sqs 1

Amazon SQS bindings for ActionScript

jbaudanza/beanstalk-client-ruby 1

Ruby client for beanstalkd

jbaudanza/davis.js 1

RESTful degradable JavaScript routing using pushState

jbaudanza/jbaudanza.github.com 1

Jonathan's blog

jbaudanza/AFIncrementalStore 0

Core Data Persistence with AFNetworking, Done Right

jbaudanza/bitcoin-ruby 0

bitcoin utils and protocol in ruby.

startedreact-native-webrtc/react-native-webrtc

started time in a day

push eventjbaudanza/mediasoup-sandbox

Jonathan Baudanza

commit sha 680f8fd60488499a2bf27798a8fca8f5e9f9a998

Remove peer id, put roomId and jwt in handshake

view details

push time in 2 days

issue commentauth0-community/auth0-socketio-jwt

TypeError: accept is not a function

I had the same problem. As @nowrap, the solution is to use authorize() as middleware, not as an event handler.

SteveCruise

comment created time in 2 days

push eventjbaudanza/mediasoup-sandbox

Jonathan Baudanza

commit sha e08046807a913ce7e900a2311c9344247e874d1f

chat-messages

view details

push time in 4 days

push eventjbaudanza/mediasoup-sandbox

Jonathan Baudanza

commit sha 677319022e5e611efdc0e0657432aea4503efb71

fix string

view details

push time in 4 days

push eventjbaudanza/mediasoup-sandbox

Jonathan Baudanza

commit sha 7e520625b9bb1ccea8f379dd6ef5236d9cf4da06

fix updatePeers

view details

push time in 4 days

push eventjbaudanza/mediasoup-sandbox

Jonathan Baudanza

commit sha 9370daee58624584341b98ccb894fa4a1051e23e

Garbage collect empty rooms

view details

push time in 4 days

push eventjbaudanza/mediasoup-sandbox

Jonathan Baudanza

commit sha cafb496fc81608ae8218ecce45ad55fa4b7d7ca2

Better logging and pingTimeout

view details

Jonathan Baudanza

commit sha d5d741f8fa0726517babc307b38220b90f77ccbe

authenticate socket connections

view details

push time in 4 days

push eventjbaudanza/mediasoup-sandbox

Jonathan Baudanza

commit sha c8d02824c7827ed43b022c4074bd6a66ce7c6d02

Each room gets its own router

view details

push time in 13 days

push eventjbaudanza/mediasoup-sandbox

Jonathan Baudanza

commit sha ef8fa61518eae1178acc06ea22a6582aad6118a8

fix send-track

view details

push time in 14 days

push eventjbaudanza/mediasoup-sandbox

Jonathan Baudanza

commit sha fe34a63c9b1292e57d24f2854b8fb79ade509d5a

Move request handlers to websocket

view details

Jonathan Baudanza

commit sha 1c3e308db7efbf65825577eebb8e2c6c2cf51b77

First pass at multi-room support

view details

push time in 15 days

startedtim-kos/node-retry

started time in 17 days

push eventjbaudanza/mediasoup-sandbox

Jonathan Baudanza

commit sha 4107fbb377070b9c1c6573d18838aff89120c3e0

chat-messages

view details

Jonathan Baudanza

commit sha bdbe63e5813bda74d60934e46b6b4494b60f88a2

fix static

view details

push time in 18 days

push eventjbaudanza/mediasoup-sandbox

Jonathan Baudanza

commit sha b21e8a8157738b81b02c46bce38d8182d517692c

Typescript

view details

Jonathan Baudanza

commit sha d65b9afff32f3303e7fac27d88840da11104867a

withAsyncHandler

view details

Jonathan Baudanza

commit sha e362abb7e845967921234f7915ba69b84769db6b

chat-messages

view details

push time in 19 days

push eventjbaudanza/mediasoup-sandbox

Jonathan Baudanza

commit sha f4386709d1a1c9292e76a1bc2d6cf2b162f95564

Integrate with socketio

view details

push time in 20 days

push eventjbaudanza/mediasoup-sandbox

Jonathan Baudanza

commit sha 0d8661d467831d798b95ba88268461956dad8ca2

socketio

view details

Jonathan Baudanza

commit sha 91dda4871e7cf34fe064b53bf989811bcddd711a

Integrate with socketio

view details

push time in 20 days

fork jbaudanza/mediasoup-sandbox

sample code for and experiments with mediasoup

fork in 20 days

issue commentlibersys/rtp-ogg-opus

Build is broken on Mac OS

I'm still researching the best way to do this.

Alternatively, I'm considering piping everything through ffmpeg. Launching an ffmpeg child process seems like overkill to just go from OGG-RTP to OGG-Opus, but implementing all the edge cases in RTP in node seems daunting. For reference, here is ffmpeg's RTP implementation: https://github.com/FFmpeg/FFmpeg/blob/master/libavformat/rtpdec.c

I'm also not sure how much mediasoup shields me from some of this complexity. Are dropped and out-of-order packets even possible if everything passes through a mediasoup router first? I'm not sure. I'll let you know what I figure out.

jbaudanza

comment created time in 20 days

PR opened versatica/mediasoup-website

Add reference to RFC6464 to AudioLevelObserver

I had a question about how AudioLevelObservers work, since I knew MediaSoup doesn't do any media decoding. I figured other people might have the same question, so I updated the docs. Hope this helps!

+2 -0

0 comment

1 changed file

pr created time in 20 days

push eventjbaudanza/mediasoup-website

Jonathan Baudanza

commit sha fbdb314b34feda4b9b36c5d39ca19f745fea3003

Add reference to RFC6464 to AudioLevelObserver I had a question about how AudioLevelObservers work, since I knew MediaSoup doesn't do any media decoding. I figured other people might have the same question, so I updated the docs. Hope this helps!

view details

push time in 20 days

issue commentlibersys/rtp-ogg-opus

Build is broken on Mac OS

@dioris-moreno thank you!

I noticed that libogg seems to write the packets in the order that they are received, and doesn't seem to do much with the packetno attribute on the ogg_packet struct.

Do you think it's necessary to run this with some sort of jitter buffer in front to deal with issues of out-of-order or duplicate packets? I realize this would increase the complexity quite a bit.

jbaudanza

comment created time in 23 days

issue openedlibersys/rtp-ogg-opus

Build is broken on Mac OS

When I try to build on Mac OS, I get the following errors:

../src/helpers.cc:130:9: error: cannot use 'throw' with exceptions disabled
        throw std::invalid_argument("Couldn't allocate data buffer.");
        ^
../src/helpers.cc:136:9: error: cannot use 'throw' with exceptions disabled
        throw std::invalid_argument("Couldn't allocate Ogg packet.");
        ^
../src/helpers.cc:160:20: warning: ISO C++11 does not allow conversion from string literal to 'char *' [-Wwritable-strings]
    char *vendor = "rtp-ogg-opus using libopus";
                   ^
../src/helpers.cc:168:9: error: cannot use 'throw' with exceptions disabled
        throw std::invalid_argument("Couldn't allocate data buffer.");
        ^
../src/helpers.cc:174:9: error: cannot use 'throw' with exceptions disabled
        throw std::invalid_argument("Couldn't allocate Ogg packet.");
        ^
2 warnings and 4 errors generated.
make: *** [Release/obj.target/rtpoggopus/src/helpers.o] Error 1

I resolved this by adding the following to binding.gyp:

"conditions": [
    ['OS=="mac"', {
       "xcode_settings": {
          "GCC_ENABLE_CPP_EXCEPTIONS": "YES"
       }
   }]
],

I just grabbed this snippet from here, I'm not sure if it's actually a good fix or not. https://github.com/rla/fast-feed/issues/8

I'm using your package to take an RTP stream from mediasoup and package an OGG-Opus stream to send to Google's speach-to-text API. So far it seems to be working great. Thanks!

created time in 23 days

startedlibersys/rtp-ogg-opus

started time in 24 days

startedversatica/rtp.js

started time in 24 days

issue commentmelchor629/node-flac-bindings

"Encoder has not been initialized yet" Error raised while using StreamEncoder

Thank you so much. I will deploy it and let you know if I encounter and more issues

jbaudanza

comment created time in 24 days

issue commentmelchor629/node-flac-bindings

"Encoder has not been initialized yet" Error raised while using StreamEncoder

Yeah, I actually think you could argue this is not a bug. I can see two possible "fixes" in this case:

  • Encoder's readable stream never emits any data.
  • Encoder throws an error on end, but it says something more descriptive like, "Encoder never received any data to encode".

I think both behaviors would be reasonable.

jbaudanza

comment created time in 25 days

issue commentmelchor629/node-flac-bindings

"Encoder has not been initialized yet" Error raised while using StreamEncoder

Ah ok. I think I see what's happening. My client is closing the connection before sending any PCM data, so _write is never being called. It looks like this:

  1. Client opens connection StreamEncoder() is created stream is passed to S3 Uploader to start streaming to S3. (not sure if this is relevant)
  2. Client immediately closes connection without sending audio data flacEncoder.end() raises 'Encoder has not been initialized yet' error.

Thank you for your help!

jbaudanza

comment created time in 25 days

issue openedmelchor629/node-flac-bindings

"Encoder has not been initialized yet" Error raised while using StreamEncoder

I am using the StreamEncoder to encode PCM data from a WebSocket and send the result to an S3 Bucket. I am initializing the encoder like this:

flacEncoder = new flac.StreamEncoder({
   channels: 1,
   bitsPerSample: 16,
   samplerate: sampleRate,
   compressionLevel: 7
});

After initialization, I pass the encoder object to the S3 uploader and begin calling flacEncoder.write when I receive PCM data on the WebSocket.

Usually, this works fine. But on one occasion, I saw in my logs that this error was raised: https://github.com/melchor629/node-flac-bindings/blob/67f5d45c60427b868ba1aa27b067008bab7f6e26/src/encoder/encoder.cpp#L562

Is there something I should be doing to wait for the encoder to initialize before streaming data to it? I didn't see anything in the docs or the interface.

Thanks for the great module! It's been very helpful.

created time in a month

issue commentformatjs/formatjs

Extracting messages from Flow typed React projects

For anyone else having this issue, I created an extract-strings.sh shell script in my project. This uses babel to strip away all the flow types before running formatjs extract

TMP_DIR=/tmp/extract-tmp
mkdir -p ${TMP_DIR}
yarn run babel\
    --no-babelrc \
    --plugins "@babel/plugin-syntax-jsx,@babel/plugin-transform-flow-strip-types" \
    --out-dir ${TMP_DIR} \
    js/*.js 
yarn run formatjs extract ${TMP_DIR}/*.js \
     --out-file lang/en.json \
     --id-interpolation-pattern '[sha512:contenthash:base64:6]'
rm -rf ${TMP_DIR}
steponas

comment created time in a month

startedmelchor629/node-flac-bindings

started time in 2 months

issue commentmvasin/react-div-100vh

Ditch rvh for a React hook and rewrite in TypeScript

I set a breakpoint in my browser debugger, and that effect hook is definitely getting invoked multiple times. I don't know why the test isn't failing. Maybe React doesn't propagate the render down through TestApp into Div100h for some reason?

As it's written, setRealHeight is going to be redefined on every render, and will have a new identity. Since it's part of the dependency array, it will always re-trigger the effect.

This is how it should look:

const [height, setHeight] = React.useState(getRealHeight())

React.useEffect(() => {
  function handler() {
    setHeight(getRealHeight());
  }

  window.addEventListener('resize', handler)
  return () => window.removeEventListener('resize', handler)
}, []);
mvasin

comment created time in 2 months

issue commentmvasin/react-div-100vh

Ditch rvh for a React hook and rewrite in TypeScript

From the looks of this hook's dependency array, it's going to run on every render. I think the dependency array should be empty, and the handler function should be moved into the scope of the effect closure. getRealHeight and setHeight are both constant, so they don't need to be included in the dependency array.

https://github.com/mvasin/react-div-100vh/blob/44b5dfd75d6cca4d0f1fdca9bf868210d6eadb77/lib/index.tsx#L21-L24

Thanks for putting this together. Let me know if you'd like some help with this.

mvasin

comment created time in 2 months

more