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

          Line data    Source code
       1             : /*
       2             :  *  Copyright (c) 2010 The WebM 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             : #ifndef VP8_COMMON_ONYX_H_
      12             : #define VP8_COMMON_ONYX_H_
      13             : 
      14             : #ifdef __cplusplus
      15             : extern "C" {
      16             : #endif
      17             : 
      18             : #include "vpx_config.h"
      19             : #include "vpx/internal/vpx_codec_internal.h"
      20             : #include "vpx/vp8cx.h"
      21             : #include "vpx/vpx_encoder.h"
      22             : #include "vpx_scale/yv12config.h"
      23             : #include "ppflags.h"
      24             : 
      25             : struct VP8_COMP;
      26             : 
      27             : /* Create/destroy static data structures. */
      28             : 
      29             : typedef enum {
      30             :   NORMAL = 0,
      31             :   FOURFIVE = 1,
      32             :   THREEFIVE = 2,
      33             :   ONETWO = 3
      34             : } VPX_SCALING;
      35             : 
      36             : typedef enum {
      37             :   USAGE_LOCAL_FILE_PLAYBACK = 0x0,
      38             :   USAGE_STREAM_FROM_SERVER = 0x1,
      39             :   USAGE_CONSTRAINED_QUALITY = 0x2,
      40             :   USAGE_CONSTANT_QUALITY = 0x3
      41             : } END_USAGE;
      42             : 
      43             : typedef enum {
      44             :   MODE_REALTIME = 0x0,
      45             :   MODE_GOODQUALITY = 0x1,
      46             :   MODE_BESTQUALITY = 0x2,
      47             :   MODE_FIRSTPASS = 0x3,
      48             :   MODE_SECONDPASS = 0x4,
      49             :   MODE_SECONDPASS_BEST = 0x5
      50             : } MODE;
      51             : 
      52             : typedef enum {
      53             :   FRAMEFLAGS_KEY = 1,
      54             :   FRAMEFLAGS_GOLDEN = 2,
      55             :   FRAMEFLAGS_ALTREF = 4
      56             : } FRAMETYPE_FLAGS;
      57             : 
      58             : #include <assert.h>
      59           0 : static INLINE void Scale2Ratio(int mode, int *hr, int *hs) {
      60           0 :   switch (mode) {
      61             :     case NORMAL:
      62           0 :       *hr = 1;
      63           0 :       *hs = 1;
      64           0 :       break;
      65             :     case FOURFIVE:
      66           0 :       *hr = 4;
      67           0 :       *hs = 5;
      68           0 :       break;
      69             :     case THREEFIVE:
      70           0 :       *hr = 3;
      71           0 :       *hs = 5;
      72           0 :       break;
      73             :     case ONETWO:
      74           0 :       *hr = 1;
      75           0 :       *hs = 2;
      76           0 :       break;
      77             :     default:
      78           0 :       *hr = 1;
      79           0 :       *hs = 1;
      80           0 :       assert(0);
      81             :       break;
      82             :   }
      83           0 : }
      84             : 
      85             : typedef struct {
      86             :   /* 4 versions of bitstream defined:
      87             :    *   0 best quality/slowest decode, 3 lowest quality/fastest decode
      88             :    */
      89             :   int Version;
      90             :   int Width;
      91             :   int Height;
      92             :   struct vpx_rational timebase;
      93             :   unsigned int target_bandwidth; /* kilobits per second */
      94             : 
      95             :   /* Parameter used for applying denoiser.
      96             :    * For temporal denoiser: noise_sensitivity = 0 means off,
      97             :    * noise_sensitivity = 1 means temporal denoiser on for Y channel only,
      98             :    * noise_sensitivity = 2 means temporal denoiser on for all channels.
      99             :    * noise_sensitivity = 3 means aggressive denoising mode.
     100             :    * noise_sensitivity >= 4 means adaptive denoising mode.
     101             :    * Temporal denoiser is enabled via the configuration option:
     102             :    * CONFIG_TEMPORAL_DENOISING.
     103             :    * For spatial denoiser: noise_sensitivity controls the amount of
     104             :    * pre-processing blur: noise_sensitivity = 0 means off.
     105             :    * Spatial denoiser invoked under !CONFIG_TEMPORAL_DENOISING.
     106             :    */
     107             :   int noise_sensitivity;
     108             : 
     109             :   /* parameter used for sharpening output: recommendation 0: */
     110             :   int Sharpness;
     111             :   int cpu_used;
     112             :   unsigned int rc_max_intra_bitrate_pct;
     113             :   /* percent of rate boost for golden frame in CBR mode. */
     114             :   unsigned int gf_cbr_boost_pct;
     115             :   unsigned int screen_content_mode;
     116             : 
     117             :   /* mode ->
     118             :    *(0)=Realtime/Live Encoding. This mode is optimized for realtim
     119             :    *    encoding (for example, capturing a television signal or feed
     120             :    *    from a live camera). ( speed setting controls how fast )
     121             :    *(1)=Good Quality Fast Encoding. The encoder balances quality with
     122             :    *    the amount of time it takes to encode the output. ( speed
     123             :    *    setting controls how fast )
     124             :    *(2)=One Pass - Best Quality. The encoder places priority on the
     125             :    *    quality of the output over encoding speed. The output is
     126             :    *    compressed at the highest possible quality. This option takes
     127             :    *    the longest amount of time to encode. ( speed setting ignored
     128             :    *    )
     129             :    *(3)=Two Pass - First Pass. The encoder generates a file of
     130             :    *    statistics for use in the second encoding pass. ( speed
     131             :    *    setting controls how fast )
     132             :    *(4)=Two Pass - Second Pass. The encoder uses the statistics that
     133             :    *    were generated in the first encoding pass to create the
     134             :    *    compressed output. ( speed setting controls how fast )
     135             :    *(5)=Two Pass - Second Pass Best.  The encoder uses the statistics
     136             :    *    that were generated in the first encoding pass to create the
     137             :    *    compressed output using the highest possible quality, and
     138             :    *    taking a longer amount of time to encode.. ( speed setting
     139             :    *    ignored )
     140             :    */
     141             :   int Mode;
     142             : 
     143             :   /* Key Framing Operations */
     144             :   int auto_key; /* automatically detect cut scenes */
     145             :   int key_freq; /* maximum distance to key frame. */
     146             : 
     147             :   /* lagged compression (if allow_lag == 0 lag_in_frames is ignored) */
     148             :   int allow_lag;
     149             :   int lag_in_frames; /* how many frames lag before we start encoding */
     150             : 
     151             :   /*
     152             :    * DATARATE CONTROL OPTIONS
     153             :    */
     154             : 
     155             :   int end_usage; /* vbr or cbr */
     156             : 
     157             :   /* buffer targeting aggressiveness */
     158             :   int under_shoot_pct;
     159             :   int over_shoot_pct;
     160             : 
     161             :   /* buffering parameters */
     162             :   int64_t starting_buffer_level;
     163             :   int64_t optimal_buffer_level;
     164             :   int64_t maximum_buffer_size;
     165             : 
     166             :   int64_t starting_buffer_level_in_ms;
     167             :   int64_t optimal_buffer_level_in_ms;
     168             :   int64_t maximum_buffer_size_in_ms;
     169             : 
     170             :   /* controlling quality */
     171             :   int fixed_q;
     172             :   int worst_allowed_q;
     173             :   int best_allowed_q;
     174             :   int cq_level;
     175             : 
     176             :   /* allow internal resizing */
     177             :   int allow_spatial_resampling;
     178             :   int resample_down_water_mark;
     179             :   int resample_up_water_mark;
     180             : 
     181             :   /* allow internal frame rate alterations */
     182             :   int allow_df;
     183             :   int drop_frames_water_mark;
     184             : 
     185             :   /* two pass datarate control */
     186             :   int two_pass_vbrbias;
     187             :   int two_pass_vbrmin_section;
     188             :   int two_pass_vbrmax_section;
     189             : 
     190             :   /*
     191             :    * END DATARATE CONTROL OPTIONS
     192             :    */
     193             : 
     194             :   /* these parameters aren't to be used in final build don't use!!! */
     195             :   int play_alternate;
     196             :   int alt_freq;
     197             :   int alt_q;
     198             :   int key_q;
     199             :   int gold_q;
     200             : 
     201             :   int multi_threaded;   /* how many threads to run the encoder on */
     202             :   int token_partitions; /* how many token partitions to create */
     203             : 
     204             :   /* early breakout threshold: for video conf recommend 800 */
     205             :   int encode_breakout;
     206             : 
     207             :   /* Bitfield defining the error resiliency features to enable.
     208             :    * Can provide decodable frames after losses in previous
     209             :    * frames and decodable partitions after losses in the same frame.
     210             :    */
     211             :   unsigned int error_resilient_mode;
     212             : 
     213             :   int arnr_max_frames;
     214             :   int arnr_strength;
     215             :   int arnr_type;
     216             : 
     217             :   vpx_fixed_buf_t two_pass_stats_in;
     218             :   struct vpx_codec_pkt_list *output_pkt_list;
     219             : 
     220             :   vp8e_tuning tuning;
     221             : 
     222             :   /* Temporal scaling parameters */
     223             :   unsigned int number_of_layers;
     224             :   unsigned int target_bitrate[VPX_TS_MAX_PERIODICITY];
     225             :   unsigned int rate_decimator[VPX_TS_MAX_PERIODICITY];
     226             :   unsigned int periodicity;
     227             :   unsigned int layer_id[VPX_TS_MAX_PERIODICITY];
     228             : 
     229             : #if CONFIG_MULTI_RES_ENCODING
     230             :   /* Number of total resolutions encoded */
     231             :   unsigned int mr_total_resolutions;
     232             : 
     233             :   /* Current encoder ID */
     234             :   unsigned int mr_encoder_id;
     235             : 
     236             :   /* Down-sampling factor */
     237             :   vpx_rational_t mr_down_sampling_factor;
     238             : 
     239             :   /* Memory location to store low-resolution encoder's mode info */
     240             :   void *mr_low_res_mode_info;
     241             : #endif
     242             : } VP8_CONFIG;
     243             : 
     244             : void vp8_initialize();
     245             : 
     246             : struct VP8_COMP *vp8_create_compressor(VP8_CONFIG *oxcf);
     247             : void vp8_remove_compressor(struct VP8_COMP **comp);
     248             : 
     249             : void vp8_init_config(struct VP8_COMP *onyx, VP8_CONFIG *oxcf);
     250             : void vp8_change_config(struct VP8_COMP *onyx, VP8_CONFIG *oxcf);
     251             : 
     252             : int vp8_receive_raw_frame(struct VP8_COMP *comp, unsigned int frame_flags,
     253             :                           YV12_BUFFER_CONFIG *sd, int64_t time_stamp,
     254             :                           int64_t end_time_stamp);
     255             : int vp8_get_compressed_data(struct VP8_COMP *comp, unsigned int *frame_flags,
     256             :                             size_t *size, unsigned char *dest,
     257             :                             unsigned char *dest_end, int64_t *time_stamp,
     258             :                             int64_t *time_end, int flush);
     259             : int vp8_get_preview_raw_frame(struct VP8_COMP *comp, YV12_BUFFER_CONFIG *dest,
     260             :                               vp8_ppflags_t *flags);
     261             : 
     262             : int vp8_use_as_reference(struct VP8_COMP *comp, int ref_frame_flags);
     263             : int vp8_update_reference(struct VP8_COMP *comp, int ref_frame_flags);
     264             : int vp8_get_reference(struct VP8_COMP *comp,
     265             :                       enum vpx_ref_frame_type ref_frame_flag,
     266             :                       YV12_BUFFER_CONFIG *sd);
     267             : int vp8_set_reference(struct VP8_COMP *comp,
     268             :                       enum vpx_ref_frame_type ref_frame_flag,
     269             :                       YV12_BUFFER_CONFIG *sd);
     270             : int vp8_update_entropy(struct VP8_COMP *comp, int update);
     271             : int vp8_set_roimap(struct VP8_COMP *comp, unsigned char *map, unsigned int rows,
     272             :                    unsigned int cols, int delta_q[4], int delta_lf[4],
     273             :                    unsigned int threshold[4]);
     274             : int vp8_set_active_map(struct VP8_COMP *comp, unsigned char *map,
     275             :                        unsigned int rows, unsigned int cols);
     276             : int vp8_set_internal_size(struct VP8_COMP *comp, VPX_SCALING horiz_mode,
     277             :                           VPX_SCALING vert_mode);
     278             : int vp8_get_quantizer(struct VP8_COMP *c);
     279             : 
     280             : #ifdef __cplusplus
     281             : }
     282             : #endif
     283             : 
     284             : #endif  // VP8_COMMON_ONYX_H_

Generated by: LCOV version 1.13