LCOV - code coverage report
Current view: top level - media/libopus/src - opus_private.h (source / functions) Hit Total Coverage
Test: output.info Lines: 0 3 0.0 %
Date: 2017-07-14 16:53:18 Functions: 0 1 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* Copyright (c) 2012 Xiph.Org Foundation
       2             :    Written by Jean-Marc Valin */
       3             : /*
       4             :    Redistribution and use in source and binary forms, with or without
       5             :    modification, are permitted provided that the following conditions
       6             :    are met:
       7             : 
       8             :    - Redistributions of source code must retain the above copyright
       9             :    notice, this list of conditions and the following disclaimer.
      10             : 
      11             :    - Redistributions in binary form must reproduce the above copyright
      12             :    notice, this list of conditions and the following disclaimer in the
      13             :    documentation and/or other materials provided with the distribution.
      14             : 
      15             :    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
      16             :    ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
      17             :    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
      18             :    A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
      19             :    OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
      20             :    EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
      21             :    PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
      22             :    PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
      23             :    LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
      24             :    NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
      25             :    SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
      26             : */
      27             : 
      28             : 
      29             : #ifndef OPUS_PRIVATE_H
      30             : #define OPUS_PRIVATE_H
      31             : 
      32             : #include "arch.h"
      33             : #include "opus.h"
      34             : #include "celt.h"
      35             : 
      36             : #include <stddef.h> /* offsetof */
      37             : 
      38             : struct OpusRepacketizer {
      39             :    unsigned char toc;
      40             :    int nb_frames;
      41             :    const unsigned char *frames[48];
      42             :    opus_int16 len[48];
      43             :    int framesize;
      44             : };
      45             : 
      46             : typedef struct ChannelLayout {
      47             :    int nb_channels;
      48             :    int nb_streams;
      49             :    int nb_coupled_streams;
      50             :    unsigned char mapping[256];
      51             : } ChannelLayout;
      52             : 
      53             : int validate_layout(const ChannelLayout *layout);
      54             : int get_left_channel(const ChannelLayout *layout, int stream_id, int prev);
      55             : int get_right_channel(const ChannelLayout *layout, int stream_id, int prev);
      56             : int get_mono_channel(const ChannelLayout *layout, int stream_id, int prev);
      57             : 
      58             : 
      59             : 
      60             : #define MODE_SILK_ONLY          1000
      61             : #define MODE_HYBRID             1001
      62             : #define MODE_CELT_ONLY          1002
      63             : 
      64             : #define OPUS_SET_VOICE_RATIO_REQUEST         11018
      65             : #define OPUS_GET_VOICE_RATIO_REQUEST         11019
      66             : 
      67             : /** Configures the encoder's expected percentage of voice
      68             :   * opposed to music or other signals.
      69             :   *
      70             :   * @note This interface is currently more aspiration than actuality. It's
      71             :   * ultimately expected to bias an automatic signal classifier, but it currently
      72             :   * just shifts the static bitrate to mode mapping around a little bit.
      73             :   *
      74             :   * @param[in] x <tt>int</tt>:   Voice percentage in the range 0-100, inclusive.
      75             :   * @hideinitializer */
      76             : #define OPUS_SET_VOICE_RATIO(x) OPUS_SET_VOICE_RATIO_REQUEST, __opus_check_int(x)
      77             : /** Gets the encoder's configured voice ratio value, @see OPUS_SET_VOICE_RATIO
      78             :   *
      79             :   * @param[out] x <tt>int*</tt>:  Voice percentage in the range 0-100, inclusive.
      80             :   * @hideinitializer */
      81             : #define OPUS_GET_VOICE_RATIO(x) OPUS_GET_VOICE_RATIO_REQUEST, __opus_check_int_ptr(x)
      82             : 
      83             : 
      84             : #define OPUS_SET_FORCE_MODE_REQUEST    11002
      85             : #define OPUS_SET_FORCE_MODE(x) OPUS_SET_FORCE_MODE_REQUEST, __opus_check_int(x)
      86             : 
      87             : typedef void (*downmix_func)(const void *, opus_val32 *, int, int, int, int, int);
      88             : void downmix_float(const void *_x, opus_val32 *sub, int subframe, int offset, int c1, int c2, int C);
      89             : void downmix_int(const void *_x, opus_val32 *sub, int subframe, int offset, int c1, int c2, int C);
      90             : 
      91             : int encode_size(int size, unsigned char *data);
      92             : 
      93             : opus_int32 frame_size_select(opus_int32 frame_size, int variable_duration, opus_int32 Fs);
      94             : 
      95             : opus_int32 opus_encode_native(OpusEncoder *st, const opus_val16 *pcm, int frame_size,
      96             :       unsigned char *data, opus_int32 out_data_bytes, int lsb_depth,
      97             :       const void *analysis_pcm, opus_int32 analysis_size, int c1, int c2,
      98             :       int analysis_channels, downmix_func downmix, int float_api);
      99             : 
     100             : int opus_decode_native(OpusDecoder *st, const unsigned char *data, opus_int32 len,
     101             :       opus_val16 *pcm, int frame_size, int decode_fec, int self_delimited,
     102             :       opus_int32 *packet_offset, int soft_clip);
     103             : 
     104             : /* Make sure everything is properly aligned. */
     105           0 : static OPUS_INLINE int align(int i)
     106             : {
     107             :     struct foo {char c; union { void* p; opus_int32 i; opus_val32 v; } u;};
     108             : 
     109           0 :     unsigned int alignment = offsetof(struct foo, u);
     110             : 
     111             :     /* Optimizing compilers should optimize div and multiply into and
     112             :        for all sensible alignment values. */
     113           0 :     return ((i + alignment - 1) / alignment) * alignment;
     114             : }
     115             : 
     116             : int opus_packet_parse_impl(const unsigned char *data, opus_int32 len,
     117             :       int self_delimited, unsigned char *out_toc,
     118             :       const unsigned char *frames[48], opus_int16 size[48],
     119             :       int *payload_offset, opus_int32 *packet_offset);
     120             : 
     121             : opus_int32 opus_repacketizer_out_range_impl(OpusRepacketizer *rp, int begin, int end,
     122             :       unsigned char *data, opus_int32 maxlen, int self_delimited, int pad);
     123             : 
     124             : int pad_frame(unsigned char *data, opus_int32 len, opus_int32 new_len);
     125             : 
     126             : #endif /* OPUS_PRIVATE_H */

Generated by: LCOV version 1.13