Changeset 2943

Show
Ignore:
Timestamp:
11/18/99 00:58:49 (14 years ago)
Author:
ucacoxh
Message:

- Fixed div by zero bug (doh!) in source_get_skew when no samples decoded.
- Added talkstart to mark start of next talkspurt and stop repair happening

between end of previous spurt and start of next if they are close together.

- Changed font of tool_name to be the same as everything else.

Location:
rat/trunk
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • rat/trunk/source.c

    r2937 r2943  
    6363        struct s_source            *next; 
    6464        struct s_source            *prev; 
    65         pdb_entry_t                *pdbe; /* persistent database entry */ 
     65        pdb_entry_t                *pdbe;       /* persistent database entry */ 
    6666        u_int32                     age; 
    67         ts_t                        next_played; /* anticipated next unit   */ 
     67        ts_t                        next_played; /* anticipated next unit    */ 
    6868        ts_t                        last_repair; 
     69        ts_t                        talkstart;  /* start of latest talkspurt */ 
    6970        u_int16                     consec_lost; 
    7071        u_int32                     mean_energy; 
     
    679680                playout = ts_add(e->transit, playout); 
    680681                playout = ts_add(src_ts, playout); 
    681  
    682682                e->last_transit = transit; 
     683 
     684                if (adjust_playout) { 
     685                        src->talkstart = playout; /* Note start of new talkspurt  */ 
     686                } 
    683687 
    684688                if (src->packets_done == 0) { 
     
    723727                e->last_ts  = p->ts; 
    724728                e->last_arr = sp->cur_ts; 
    725 /* 
    726                 debug_msg("src_ts % 8u playout % 8u buffered % 8u\n", 
    727                           p->ts, ts_to_us(source_get_playout_delay(src)), ts_to_us(source_get_audio_buffered(src))); 
    728                           */ 
     729 
    729730                src->packets_done++; 
    730731                xfree(p); 
     
    10991100                assert(md_len == sizeof(media_data)); 
    11001101                 
    1101                 /* Conditions for repair:  
    1102                  * (a) playout point of unit is further away than expected. 
    1103                  * (b) don't have a hold on. 
    1104                  */ 
     1102                /* Conditions for repair:                                    */ 
     1103                /* (a) playout point of unit is further away than expected.  */ 
     1104                /* (b) playout does not correspond to new talkspurt (don't   */ 
     1105                /* fill between end of last talkspurt and start of next).    */ 
     1106                /* (c) don't have a hold on.                                 */ 
    11051107 
    11061108                if (ts_gt(playout, src->next_played) && 
     1109                    ts_eq(playout, src->talkstart) == FALSE && 
    11071110                    hold_repair == 0) { 
    1108                         /* If repair was successful media_pos is moved, 
    1109                          * so get data at media_pos again. 
    1110                          */ 
     1111                        /* If repair was successful media_pos is moved,      */ 
     1112                        /* so get data at media_pos again.                   */ 
    11111113                        if (source_repair(src, repair_type, src->next_played) == TRUE) { 
    1112                                 debug_msg("Repair\n"); 
     1114                                debug_msg("Repair %d\n", src->consec_lost); 
    11131115                                success = pb_iterator_get_at(src->media_pos,  
    11141116                                                             (u_char**)&md,  
     
    11181120                                assert(ts_eq(playout, src->next_played)); 
    11191121                        } else { 
    1120                                 /* Repair failed for some reason.  Wait a while before */ 
    1121                                 /* re-trying.                                          */ 
     1122                                /* Repair failed for some reason.  Wait a    */ 
     1123                                /* while before re-trying.                   */ 
     1124                                debug_msg("Repair failed unexpectedly\n"); 
    11221125                                hold_repair += 2;  
    11231126                        } 
     
    12561259source_get_audio_buffered (source *src) 
    12571260{ 
     1261        ts_t delta; 
    12581262        /* Changes in avg_transit change amount of audio buffered. */ 
    1259         ts_t delta; 
     1263        /* It's how much transit is off from start.                */ 
    12601264        delta = ts_sub(src->pdbe->transit, src->pdbe->avg_transit); 
    12611265        return ts_add(src->pdbe->playout, delta); 
     
    12661270{ 
    12671271        return src->pdbe->playout; 
    1268         /*  return ts_sub(src->pdbe->playout, src->pdbe->transit); */ 
    12691272} 
    12701273 
     
    13021305source_get_skew_rate(source *src) 
    13031306{ 
    1304         double r = (double)(src->samples_played + src->samples_added) / (double)src->samples_played; 
    1305         return r; 
    1306 } 
     1307        if (src->samples_played) { 
     1308                double r = (double)(src->samples_played + src->samples_added) / (double)src->samples_played; 
     1309                return r; 
     1310        } 
     1311        return 1.0; 
     1312} 
  • rat/trunk/ui_audiotool.tcl

    r2942 r2943  
    14901490 
    14911491frame  .st -bd 0 
    1492 label  .st.tool -textvariable tool_name -font $smallfont -justify center -pady 0 
     1492label  .st.tool -textvariable tool_name -font $infofont -justify center -pady 0 
    14931493button .st.opts  -text "Options"   -command {wm deiconify .prefs; raise .prefs} 
    14941494button .st.about -text "About"     -command {jiggle_credits; wm deiconify .about}