Changeset ab55f2e for gutenbach/debian


Ignore:
Timestamp:
Feb 22, 2004, 11:50:57 AM (21 years ago)
Author:
arolfe <arolfe>
Branches:
master, debian, mac, no-cups, nodebathena, web
Children:
d414b9c
Parents:
53d7625
git-author:
arolfe <arolfe> (02/22/04 11:50:57)
git-committer:
arolfe <arolfe> (02/22/04 11:50:57)
Message:

fixed playing of ogg streams

File:
1 edited

Legend:

Unmodified
Added
Removed
  • gutenbach/debian/lib/sipbmp3-filter

    r53d7625 rab55f2e  
    22# Play the data on STDIN as an audio file
    33#
    4 # $Id: sipbmp3-filter,v 1.11 2003-10-24 20:31:42 jtwang Exp $
     4# $Id: sipbmp3-filter,v 1.12 2004-02-22 16:50:57 arolfe Exp $
    55# $Source: /tmp/tmp.UFBNno9997/RCS/sipbmp3-filter,v $
    66#
     
    478478
    479479# Play an OggVorbis audio stream (doesn't support auth!)
    480 # play_ogg_stream(URI, userpass)
     480# play_ogg_stream(URI)
     481#  Mostly copied from play_ogg_audio
    481482sub play_ogg_stream {
    482483  my $uri = shift(@_);
    483   my $userpass = shift(@_);
    484484
    485485  system("chmod a+rw /dev/audio");
     
    489489  # Prepare to write status:
    490490  open(ZEPHYR, '|/usr/athena/bin/zwrite -d -n -c sipb-auto -i sipbmp3@xcb -s "SIPB LPR music spooler"');
    491 
    492   # fork for ogg123
    493   my $pid = open(OGGSTATUS, "-|");
    494   unless (defined $pid) {
    495       print ZEPHYR "Couldn't fork: $!\n";
    496       close(ZEPHYR);
    497       return;
    498   }
    499   if ($pid) { # parent
    500       # Check if there were any errors
    501       if ($_ = <OGGSTATUS>) {
    502           print ZEPHYR "Playback completed with the following errors:\n";
    503           print ZEPHYR $_;
    504           while (<OGGSTATUS>) {
    505               print ZEPHYR $_;
    506           }
    507       } else {
    508           print ZEPHYR "Playback completed successfully.\n";
    509       }
    510       close(OGGSTATUS) || print ZEPHYR "ogg123 exited $?\n";
    511            
    512       close(ZEPHYR);
    513   }
    514   else { #child
    515       # redirect STDERR to STDOUT
    516       open STDERR, '>&STDOUT';
    517       exec("/mit/sipb/bin/ogg123","-b40000","-dau","-q","-f","-",$uri) ||
    518           die "Couldn't exec";
    519   }
     491  system("/mit/sipb/bin/ogg123 -b 40000 -dau -q -f - $uri 2> /tmp/ogg123.out | audioplay");
     492
     493  # Check if there were any errors
     494  open(OGGSTATUS, "/tmp/ogg123.out");
     495  if ($_ = <OGGSTATUS>) {
     496    print ZEPHYR "Playback completed with the following errors:\n";
     497    print ZEPHYR $_;
     498    while (<OGGSTATUS>) {
     499      print ZEPHYR $_;
     500    }
     501  } else {
     502    print ZEPHYR "Playback completed successfully.\n";
     503    # Repeat tag data for those playing at home
     504    if (!$ogginfo{'title'}) {
     505      print ZEPHYR "No ogginfo data found\n";
     506      print ZEPHYR "Filename: $opts{'J'}\n\n";
     507    } else {
     508      print ZEPHYR "Title          : $ogginfo{'title'}\n";
     509      print ZEPHYR "Artist         : $ogginfo{'artist'}\n";
     510      print ZEPHYR "Album          : $ogginfo{'album'}\n";
     511      print ZEPHYR "Track #        : $ogginfo{'tracknumber'}\n";
     512
     513      # others
     514      while (($key,$val) = each %lessinfo) {
     515        printf ZEPHYR "%-15s: %s\n", $key, $val;
     516      }
     517    }
     518  }
     519
     520  close(OGGSTATUS);
     521  unlink(OGGSTATUS);
     522
     523  close(ZEPHYR);
    520524}
    521525
Note: See TracChangeset for help on using the changeset viewer.