Changeset 3038

Show
Ignore:
Timestamp:
01/06/00 12:09:34 (14 years ago)
Author:
ucacoxh
Message:

- Removed redundant code from vanilla_decoder_output. Tested.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • rat/trunk/cc_vanilla.c

    r3034 r3038  
    187187        const codec_format_t *cf; 
    188188        codec_id_t            id; 
    189         uint32_t               data_len; 
     189        uint32_t              data_len; 
    190190        u_char               *p, *end; 
    191191        media_data           *m; 
    192         ts_t                  playout_step; 
    193  
    194         id = codec_get_by_payload(cu->pt); 
    195         cf = codec_get_format(id); 
    196  
    197         media_data_create(&m, 1); 
    198         assert(m->nrep == 1); 
    199  
    200         /* Do first unit separately as that may have state */ 
    201         p    = cu->data; 
    202         end  = cu->data + cu->data_len; 
    203  
    204         if (cf->mean_per_packet_state_size) { 
    205                 m->rep[0]->state_len = cf->mean_per_packet_state_size; 
    206                 m->rep[0]->state     = (u_char*)block_alloc(m->rep[0]->state_len); 
    207                 memcpy(m->rep[0]->state, p, cf->mean_per_packet_state_size); 
    208                 p += cf->mean_per_packet_state_size; 
    209         } 
    210  
    211         data_len = codec_peek_frame_size(id, p, (uint16_t)(end - p)); 
    212         m->rep[0]->id = id; 
    213         m->rep[0]->data_len = (uint16_t)data_len; 
    214         m->rep[0]->data     = (u_char*)block_alloc(data_len); 
    215         memcpy(m->rep[0]->data, p, data_len); 
    216         p += data_len; 
    217  
    218         if (pb_add(out, (u_char *)m, sizeof(media_data), playout) == FALSE) { 
    219                 debug_msg("XXX Failed to add unit\n"); 
    220                 media_data_destroy(&m, sizeof(media_data)); 
    221                 return; 
    222         } 
    223         /* Now do other units which do not have state*/ 
    224         playout_step = ts_map32(cf->format.sample_rate, codec_get_samples_per_frame(id)); 
     192        ts_t                  unit_dur; 
     193 
     194        id       = codec_get_by_payload(cu->pt); 
     195        cf       = codec_get_format(id); 
     196        unit_dur = ts_map32(cf->format.sample_rate, codec_get_samples_per_frame(id)); 
     197        p        = cu->data; 
     198        end      = cu->data + cu->data_len; 
     199 
    225200        while(p < end) { 
    226                 playout = ts_add(playout, playout_step); 
    227201                media_data_create(&m, 1); 
    228                 m->rep[0]->id = id; 
    229                 assert(m->nrep == 1); 
    230  
     202                m->rep[0]->id       = id; 
     203                if (p == cu->data && cf->mean_per_packet_state_size) { 
     204                        /* First unit out of packet may have state */ 
     205                        m->rep[0]->state_len = cf->mean_per_packet_state_size; 
     206                        m->rep[0]->state     = (u_char*)block_alloc(m->rep[0]->state_len); 
     207                        memcpy(m->rep[0]->state, p, cf->mean_per_packet_state_size); 
     208                        p += cf->mean_per_packet_state_size; 
     209                } 
     210                /* Now do data section */ 
    231211                data_len            = codec_peek_frame_size(id, p, (uint16_t)(end - p)); 
    232212                m->rep[0]->data     = (u_char*)block_alloc(data_len); 
    233213                m->rep[0]->data_len = (uint16_t)data_len; 
    234  
    235214                memcpy(m->rep[0]->data, p, data_len); 
    236                 p += data_len; 
    237215                if (pb_add(out, (u_char *)m, sizeof(media_data), playout) == FALSE) { 
    238216                        debug_msg("Vanilla decode failed\n"); 
    239                 } 
     217                        media_data_destroy(&m, sizeof(media_data)); 
     218                        return; 
     219                } 
     220                p += data_len; 
     221                playout = ts_add(playout, unit_dur); 
    240222        } 
    241223        assert(p == end);