Home | History | Annotate | Download | only in source
      1 /*
      2  *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
      3  *
      4  *  Use of this source code is governed by a BSD-style license
      5  *  that can be found in the LICENSE file in the root of the source
      6  *  tree. An additional intellectual property rights grant can be found
      7  *  in the file PATENTS.  All contributing project authors may
      8  *  be found in the AUTHORS file in the root of the source tree.
      9  */
     10 
     11 /*
     12  * decode_bwe.c
     13  *
     14  * This C file contains the internal decode bandwidth estimate function.
     15  *
     16  */
     17 
     18 
     19 #include "bandwidth_estimator.h"
     20 #include "codec.h"
     21 #include "entropy_coding.h"
     22 #include "structs.h"
     23 
     24 
     25 
     26 
     27 int WebRtcIsacfix_EstimateBandwidth(BwEstimatorstr *bwest_str,
     28                                     Bitstr_dec  *streamdata,
     29                                     size_t packet_size,
     30                                     uint16_t rtp_seq_number,
     31                                     uint32_t send_ts,
     32                                     uint32_t arr_ts)
     33 {
     34   int16_t index;
     35   size_t frame_samples;
     36   int err;
     37 
     38   /* decode framelength */
     39   err = WebRtcIsacfix_DecodeFrameLen(streamdata, &frame_samples);
     40   /* error check */
     41   if (err<0) {
     42     return err;
     43   }
     44 
     45   /* decode BW estimation */
     46   err = WebRtcIsacfix_DecodeSendBandwidth(streamdata, &index);
     47   /* error check */
     48   if (err<0) {
     49     return err;
     50   }
     51 
     52   /* Update BWE with received data */
     53   err = WebRtcIsacfix_UpdateUplinkBwImpl(
     54       bwest_str,
     55       rtp_seq_number,
     56       (int16_t)(frame_samples * 1000 / FS),
     57       send_ts,
     58       arr_ts,
     59       packet_size,  /* in bytes */
     60       index);
     61 
     62   /* error check */
     63   if (err<0) {
     64     return err;
     65   }
     66 
     67   /* Succesful */
     68   return 0;
     69 }
     70