Changeset 2667

Show
Ignore:
Timestamp:
08/11/99 01:13:19 (15 years ago)
Author:
ucacoxh
Message:

- Added audio panel to participant panel on UI and code that will

scale audio buffers before mixing. Can also mute source from
participant panel, button binding for this seems to have disappeared
so it's just as well... Suggested by Jerry Isdale, cool feature,
ugly ui for it though [oh]

NB: make depend; make or Build clean to avoid mysterious behaviours.

Location:
rat/trunk
Files:
9 modified

Legend:

Unmodified
Added
Removed
  • rat/trunk/audio_util.c

    r2664 r2667  
    1515#include "config_win32.h" 
    1616#include "audio_util.h" 
     17#include "debug.h" 
    1718 
    1819#define C0 +0.46363718 
     
    274275} 
    275276 
    276  
     277/* not going to simd this one */ 
     278 
     279void 
     280audio_scale_buffer(sample *buf, int len, double scale) 
     281{ 
     282        int i; 
     283        debug_msg("scaling %f\n", scale); 
     284        for(i = 0; i < len; i++) { 
     285                buf[i] = (sample)((double)buf[i] * scale); 
     286        } 
     287} 
  • rat/trunk/audio_util.h

    r2664 r2667  
    2424#endif 
    2525 
     26void    audio_scale_buffer(sample *buf, int len, double scale);  
     27 
    2628/* Biasing operations */ 
    2729 
  • rat/trunk/mbus_engine.c

    r2649 r2667  
    720720} 
    721721 
     722static void rx_rtp_source_gain(char *srce, char *args, session_struct *sp) 
     723{ 
     724        rtcp_dbentry    *e; 
     725        char            *ssrc; 
     726        double           g; 
     727 
     728        UNUSED(srce); 
     729 
     730        mbus_parse_init(sp->mbus_engine, args); 
     731        if (mbus_parse_str(sp->mbus_engine, &ssrc) && mbus_parse_flt(sp->mbus_engine, &g)) { 
     732                ssrc = mbus_decode_str(ssrc); 
     733                e = rtcp_get_dbentry(sp, strtoul(ssrc, 0, 16)); 
     734                if (e != NULL) { 
     735                        debug_msg("Recied gain %f\n", g); 
     736                        e->gain = g; 
     737                } else { 
     738                        debug_msg("Unknown source 0x%08lx\n", ssrc); 
     739                } 
     740        } else { 
     741                debug_msg("mbus: usage \"rtp_source_gain <ssrc> <bool>\"\n"); 
     742        } 
     743        mbus_parse_done(sp->mbus_engine); 
     744} 
    722745 
    723746static void rx_rtp_source_playout(char *srce, char *args, session_struct *sp) 
     
    11811204        "rtp.source.loc", 
    11821205        "rtp.source.mute", 
     1206        "rtp.source.gain", 
    11831207        "rtp.source.playout", 
    11841208        "mbus.quit", 
     
    12311255        rx_rtp_source_loc, 
    12321256        rx_rtp_source_mute, 
     1257        rx_rtp_source_gain, 
    12331258        rx_rtp_source_playout, 
    12341259        rx_mbus_quit, 
  • rat/trunk/rtcp_db.c

    r2663 r2667  
    222222        newdb->enc_fmt                  = NULL; 
    223223        newdb->last_sr_rx               = 0; 
     224 
     225        /* This is not the right place for this */ 
     226        newdb->gain                     = 1.0; 
    224227        return newdb; 
    225228} 
  • rat/trunk/rtcp_db.h

    r2597 r2667  
    8383        u_int32         last_rr_for_me; 
    8484 
     85        double          gain;                   /* Participant gain */ 
     86 
    8587        /* The variables must be properly set up for first data packet */ 
    8688        /* - zero is no good                                           */ 
  • rat/trunk/source.c

    r2664 r2667  
    10081008                } 
    10091009 
     1010                if (src->dbe->gain != 1.0 && codec_is_native_coding(md->rep[md->nrep - 1]->id)) { 
     1011                        audio_scale_buffer((sample*)md->rep[md->nrep - 1]->data, 
     1012                                           md->rep[md->nrep - 1]->data_len / sizeof(sample), 
     1013                                           src->dbe->gain); 
     1014                } 
     1015 
    10101016                if (mix_process(ms, src->dbe, md->rep[md->nrep - 1], playout) == FALSE) { 
    10111017                        /* Sources sampling rate changed mid-flow?, 
  • rat/trunk/ui.c

    r2634 r2667  
    8888} 
    8989 
     90void  
     91ui_info_gain(session_struct *sp, rtcp_dbentry *e) 
     92{ 
     93        mbus_qmsgf(sp->mbus_engine, mbus_name_ui, TRUE, "rtp.source.gain", "\"%08lx\" %.2f", e->sentry->ssrc, e->gain); 
     94} 
     95 
    9096void 
    9197ui_info_mute(session_struct *sp, rtcp_dbentry *e) 
  • rat/trunk/ui.h

    r2528 r2667  
    2727void       ui_info_update_note(struct session_tag *s, struct s_rtcp_dbentry *e); 
    2828void              ui_info_mute(struct session_tag *s, struct s_rtcp_dbentry *e); 
     29void              ui_info_gain(struct session_tag *s, struct s_rtcp_dbentry *e); 
    2930void            ui_info_remove(struct session_tag *s, struct s_rtcp_dbentry *e); 
    3031void          ui_info_activate(struct session_tag *s, struct s_rtcp_dbentry *e); 
    3132void        ui_info_deactivate(struct session_tag *s, struct s_rtcp_dbentry *e); 
    32 void        ui_info_3d_settings(struct session_tag *s, struct s_rtcp_dbentry *e); 
     33void       ui_info_3d_settings(struct session_tag *s, struct s_rtcp_dbentry *e); 
    3334 
    3435void    ui_show_audio_busy(struct session_tag *s); 
  • rat/trunk/ui_audiotool.tcl

    r2646 r2667  
    5151        global CNAME NAME EMAIL LOC PHONE TOOL NOTE SSRC num_ssrc  
    5252        global CODEC DURATION PCKTS_RECV PCKTS_LOST PCKTS_MISO PCKTS_DUP JITTER \ 
    53                 LOSS_TO_ME LOSS_FROM_ME INDEX JIT_TOGED BUFFER_SIZE PLAYOUT_DELAY 
     53                LOSS_TO_ME LOSS_FROM_ME INDEX JIT_TOGED BUFFER_SIZE PLAYOUT_DELAY \ 
     54                GAIN MUTE 
    5455 
    5556        # This is a debugging test -- old versions of the mbus used the 
     
    7172                set          NOTE($ssrc) "" 
    7273                set         CODEC($ssrc) unknown 
     74                set          GAIN($ssrc) 1.0 
     75                set          MUTE($ssrc) 0 
    7376                set      DURATION($ssrc) "" 
    7477                set   BUFFER_SIZE($ssrc) 0 
     
    235238                rtp.source.inactive             {eval mbus_recv_rtp.source.inactive $args} 
    236239                rtp.source.mute                 {eval mbus_recv_rtp.source.mute $args} 
     240                rtp.source.gain                 {eval mbus_recv_rtp.source.gain $args} 
    237241                security.encryption.key         {eval mbus_recv_security.encryption.key $args} 
    238242                default                         {puts "Unknown mbus command $cmnd"} 
     
    819823} 
    820824 
     825proc mbus_recv_rtp.source.gain {ssrc gain} { 
     826        global GAIN 
     827        init_source $ssrc 
     828        set GAIN($ssrc) $gain 
     829} 
     830 
    821831proc mbus_recv_rtp.source.packet.duration {ssrc packet_duration} { 
    822832        global DURATION 
     
    916926    global CNAME NAME EMAIL LOC PHONE TOOL NOTE CODEC DURATION PCKTS_RECV PCKTS_LOST PCKTS_MISO \ 
    917927            PCKTS_DUP JITTER BUFFER_SIZE PLAYOUT_DELAY LOSS_TO_ME LOSS_FROM_ME INDEX JIT_TOGED \ 
    918             num_ssrc loss_to_me_timer loss_from_me_timer 
     928            num_ssrc loss_to_me_timer loss_from_me_timer GAIN MUTE 
    919929 
    920930    # Disable updating of loss diamonds. This has to be done before we destroy the 
     
    929939        unset CODEC($ssrc) DURATION($ssrc) PCKTS_RECV($ssrc) PCKTS_LOST($ssrc) PCKTS_MISO($ssrc) PCKTS_DUP($ssrc) 
    930940        unset JITTER($ssrc) LOSS_TO_ME($ssrc) LOSS_FROM_ME($ssrc) INDEX($ssrc) JIT_TOGED($ssrc) BUFFER_SIZE($ssrc) 
    931         unset PLAYOUT_DELAY($ssrc) 
     941        unset PLAYOUT_DELAY($ssrc) GAIN($ssrc) MUTE($ssrc) 
    932942 
    933943        incr num_ssrc -1 
     
    937947 
    938948proc mbus_recv_rtp.source.mute {ssrc val} { 
    939         global iht 
    940  
     949        global iht MUTE 
     950        set MUTE($ssrc) $val 
    941951        if {$val} { 
    942952                [window_plist $ssrc] create line [expr $iht + 2] [expr $iht / 2] 500 [expr $iht / 2] -tags a -width 2.0 -fill gray95 
     
    11421152} 
    11431153 
     1154proc send_gain_and_mute {ssrc} { 
     1155        global GAIN MUTE 
     1156        mbus_send "R" "rtp.source.gain" "[mbus_encode_str $ssrc] $GAIN($ssrc)" 
     1157        mbus_send "R" "rtp.source.mute" "[mbus_encode_str $ssrc] $MUTE($ssrc)" 
     1158} 
     1159 
    11441160proc fix_scrollbar {} { 
    11451161        global iht iwd fw 
     
    11691185    pack $widget.l -side left  -fill x -expand 1 
    11701186    pack $widget.w -side right  
     1187} 
     1188 
     1189proc ssrc_set_gain {ssrc gain} { 
     1190    global GAIN 
     1191    set    GAIN($ssrc) [format "%.2f " [expr pow (2, $gain)]] 
     1192    send_gain_and_mute $ssrc 
    11711193} 
    11721194 
     
    11941216        $win.mf.mb.menu add command -label "Personal Details" -command "set_pane stats_pane($win) $win.df \"Personal Details\"" 
    11951217        $win.mf.mb.menu add command -label "Reception"        -command "set_pane stats_pane($win) $win.df Reception" 
     1218        $win.mf.mb.menu add command -label "Audio"            -command "set_pane stats_pane($win) $win.df Audio" 
    11961219        $win.mf.mb.menu add command -label "3D Positioning"   -command "set_pane stats_pane($win) $win.df \"3D Positioning\"" 
    11971220 
     
    12251248        stats_add_field $win.df.reception.b "Packets duplicated: "     PCKTS_DUP($ssrc) 
    12261249        stats_add_field $win.df.reception.c "Units dropped (jitter): " JIT_TOGED($ssrc) 
     1250 
     1251# Audio settings 
     1252        global GAIN MUTE 
     1253        frame $win.df.audio -relief sunk         
     1254        label $win.df.audio.advice -text "The signal from the participant can\nbe scaled and muted with the controls below." 
     1255        pack  $win.df.audio.advice 
     1256 
     1257        checkbutton $win.df.audio.mute -text "Mute" -variable MUTE($ssrc) -command "send_gain_and_mute $ssrc" 
     1258        pack $win.df.audio.mute 
     1259 
     1260        frame $win.df.audio.opts 
     1261        pack  $win.df.audio.opts -side top 
     1262        label $win.df.audio.opts.title -text "Gain" 
     1263        scale $win.df.audio.opts.gain_scale -showvalue 0 -orient h -from -3 -to +3 -resolution 0.25 -command "ssrc_set_gain $ssrc" 
     1264        label $win.df.audio.opts.gain_text -textvariable GAIN($ssrc) -width 4 
     1265        pack  $win.df.audio.opts.title $win.df.audio.opts.gain_scale $win.df.audio.opts.gain_text -side left 
     1266 
     1267        $win.df.audio.opts.gain_scale set [expr log10($GAIN($ssrc)) / log10(2)]  
     1268 
     1269        button $win.df.audio.default -text "Default" -command "set MUTE($ssrc) 0; $win.df.audio.opts.gain_scale set 0.0; send_gain_and_mute $ssrc"  
     1270        pack   $win.df.audio.default -side right  -anchor e -padx 2 -pady 2 
    12271271 
    12281272# 3D settings