]>
git.madduck.net Git - code/pulserecorder.git/blobdiff - pulserecorder 
madduck's git repository 
Every one of the projects in this repository is available at the canonical
URL git://git.madduck.net/madduck/pub/<projectpath>  — see
each project's metadata for the exact URL.
All patches and comments are welcome. Please squash your changes to logical
commits before using git-format-patch  and git-send-email  to
patches@ git. madduck. net .
If you'd read over the Git project's submission guidelines  and adhered to them,
I'd be especially grateful.
SSH access, as well as push access can be individually
  arranged .
If you use my repositories frequently, consider adding the following
snippet to ~/.gitconfig  and using the third clone URL listed for each
project:
[url "git://git.madduck.net/madduck/"]
  insteadOf = madduck:
 
 }
 
 move_source_to_sink() {
 }
 
 move_source_to_sink() {
   c=$(pactl list short sink-inputs | sed -rne "s,^${1}[[:space:]]+([[:digit:]]+).+,\1,p")
   c=$(pactl list short sink-inputs | sed -rne "s,^${1}[[:space:]]+([[:digit:]]+).+,\1,p")
+  d="$(pactl list short sinks | sed -rne "s,^${c}[[:space:]]+([^[:space:]]+).+,\1,p")"
+  case "$d" in
+    (record-to-file-*)
+      # Never restore to a record-to-file destination, or it could botch
+      # another recording
+      c="@DEFAULT_SINK@"
+      ;;
+    (*) :;;
+  esac
+  echo >&2 "Moving input $1 to sink $2 (restore to $c) …"
   cleanup_hook pactl move-sink-input $1 $c
   pactl move-sink-input $1 $2
 }
 
   cleanup_hook pactl move-sink-input $1 $c
   pactl move-sink-input $1 $2
 }
 
+if [ -n "${PAREC_PIPE:-}" ] ; then
   # This would be great, but it does not work. For instance, trying this on
   # audible meant that audible would play at maximum speed (3h played in 3
   # minutes), but the result would be full of skips, making me think that
   # This would be great, but it does not work. For instance, trying this on
   # audible meant that audible would play at maximum speed (3h played in 3
   # minutes), but the result would be full of skips, making me think that
 
   load_module module-pipe-sink "$devname" "$devname" file="$TMPDIR/outfifo"
   move_source_to_sink $index "$devname"
 
   load_module module-pipe-sink "$devname" "$devname" file="$TMPDIR/outfifo"
   move_source_to_sink $index "$devname"
-  oggenc --raw -q5 -o "$outfile" "$TMPDIR/outfifo" || :
-  #pv -pterb "$TMPDIR/outfifo" > $TMPDIR/outfile.wav || :
+  #oggenc --raw -q5 -o "$outfile" "$TMPDIR/outfifo" || :
+  pv -pterb "$TMPDIR/outfifo" > $TMPDIR/outfile.wav &
+  pid=$!
+  pa_wait_for_event sink-input remove $index >/dev/null
+  kill $pid
 
 else
   # More traditional approach, which just takes 1:1 time.
 
 else
   # More traditional approach, which just takes 1:1 time.