Commit Graph

191 Commits

Author SHA1 Message Date
Minghai Shang
f780b16bb8 [spatial svc] Use same golden frame for all temporal layers
Overhead goes down from 8% to 3% for 1080 60p

Change-Id: Idf3e5ca8712402a914a8cb79df17d3cdab63b163
2014-09-18 11:16:29 -07:00
JackyChen
bb1a23656c Change the control function of VP9 denoiser.
Change from VP8E_SET_NOISE_SENSITIVITY to VP9E_SET_NOISE_SENSITIVITY

Change-Id: Ia210a7029b26924e30973f0f9798a338e0412407
2014-09-12 16:34:22 -07:00
Minghai Shang
3e7b04af54 Merge "[spatial svc] Output psnr for all layers in one packet." 2014-09-12 10:52:42 -07:00
Deb Mukherjee
10783d4f3a Adds high bitdepth transform functions and tests
Adds various high bitdepth transform functions and tests.
Much of the changes are related to using typedefs tran_low_t
and tran_high_t for the final transform cofficients and intermediate
stages of the transform computation respectively rather than fixed
types int16_t/int. When vp9_highbitdepth configure flag is off,
these map tp int16_t/int32_t, but when the flag is on, they map
to int32_t/int64_t to make space for needed extra precision.

Change-Id: I3c56de79e15b904d6f655b62ffae170729befdd8
2014-09-11 19:56:33 -07:00
Minghai Shang
e3fff31aff [spatial svc] Output psnr for all layers in one packet.
Change-Id: I97d0cf095e9cfefdfa0f65eb5e96d6848cc9ffca
2014-09-11 16:21:35 -07:00
Dmitry Kovalev
02a0c51e50 Merge "Adding temp cpi var." 2014-09-05 10:31:41 -07:00
Dmitry Kovalev
7897059e8b Adding temp cpi var.
Change-Id: Ifa3c1cc2317c1bc21d1042b9662b35056d1e9ed0
2014-09-04 14:51:29 -07:00
Dmitry Kovalev
91998e638e Removing sz member from vpx_codec_priv.
Change-Id: I811526a9ee9f237604f72abe7fc677e39e0f457f
2014-09-04 14:47:42 -07:00
Dmitry Kovalev
3820f568da Merge "Consistent allocation of vpx_codec_alg_priv_t." 2014-09-03 19:41:28 -07:00
Dmitry Kovalev
b08fab8808 Consistent allocation of vpx_codec_alg_priv_t.
Change-Id: I5a03496de035fbcf31e4527cd25fcae4627a57a0
2014-09-03 11:01:21 -07:00
Minghai Shang
759afe525c Merge "[svc] Temporal svc with two pass rate control" 2014-09-03 10:51:19 -07:00
Deb Mukherjee
a4ef1a0819 Merge "Adds config opt for highbitdepth + misc. vpx" 2014-09-02 15:41:27 -07:00
Deb Mukherjee
5acfafb18e Adds config opt for highbitdepth + misc. vpx
Adds config parameter vp9_highbitdepth, to support highbitdepth profiles.
Also includes most vpx level high bit-depth functions. However
encode/decode in the highbitdepth profiles will not work until
the rest of the code is in place.

Change-Id: I34c53b253c38873611057a6cbc89a1361b8985a6
2014-09-02 14:37:10 -07:00
Minghai Shang
be3b08da3e [svc] Temporal svc with two pass rate control
It's built based on current spatial svc code.
We only support one spatial two temporal layers at this time.
Change-Id: I1fdc8584354b910331e626bfae60473b3b701ba1
2014-09-02 12:05:14 -07:00
Dmitry Kovalev
4c7a783e8c Merge "Adding get_frame_pkt_flags() function." 2014-09-02 10:00:51 -07:00
Dmitry Kovalev
73edeb03ea Removing alg_priv from vpx_codec_priv struct.
In order to understand memory layout consider the declaration of the
following structs. The first one is a part of our API:

struct vpx_codec_ctx {
  // ...
  struct vpx_codec_priv *priv;
};

The second one is defined in vpx_codec_internal.h:

struct vpx_codec_priv {
  // ...
};

The following struct is defined 4 times for encoder/decoder VP8/VP9:

struct vpx_codec_alg_priv {
  struct vpx_codec_priv base;
  // ... 
};

Private data allocation for the given ctx:

struct vpx_codec_ctx *ctx = <get>
struct vpx_codec_alg_priv *alg_priv = <allocate>
ctx->priv = (struct vpx_codec_priv *)alg_priv;

The cast works because vpx_codec_alg_priv has a
vpx_codec_priv instance as a first member 'base'.

Change-Id: I10d1afc8c9a7dfda50baade8c7b0296678bdb0d0
2014-08-28 13:51:37 -07:00
Dmitry Kovalev
bc9204a90e Adding get_frame_pkt_flags() function.
Change-Id: Icfacc695a711ec325b1d8f2b5d927a720e2bd6b4
2014-08-26 14:32:51 -07:00
Dmitry Kovalev
33f4e5707c Removing unused arnr_type from VP9EncoderConfig and vp9_extracfg.
Change-Id: Icab9a4399c5687453f4bec14b8cb5000464335e5
2014-08-25 23:48:52 -07:00
Dmitry Kovalev
3efb0363ed Removing non-executable code from encoder_encode().
We don't output invisible frames with VP9.

Change-Id: I7b874d3ac454c1b2966d5d7d72e12a864b49afae
2014-08-25 17:57:32 -07:00
Minghai Shang
42ad07a138 Merge "[spatial svc]Multiple frame context feature" 2014-08-25 14:29:49 -07:00
Minghai Shang
d4a407c051 [spatial svc]Multiple frame context feature
We can use one frame context for each layer so that we don't have
to reset the probs every frame. But we can't use prev_mi since we
may drop enhancement layers. So we have to generate a non vp9
compatible bitstream and modify it in the player.
1. We need to code all frames as invisible frame to let prev_mi
   not to be used. But in the bitstream we need to code the
   show_frame flag to 1 so that the publisher will know it's
   supposed to be a visible frame.
2. In the player we need to change the show_frame flag to 0 for
   all frames. Then add an one byte frame into the super frame
   to tell the decoder which layer we want to show.
Change-Id: I75b7304cf31f0ab952f043e33c034495e88f01f3
2014-08-25 10:02:45 -07:00
Dmitry Kovalev
8d363882fd Choosing GOOD mode by default.
This patch fixes slow first pass problem. Mode could only be determined
from the deadline value during frame encode call. Unfortunately, we use
mode value before any encode calls during the first pass encoding (see
set_speed_features() logic). The mode for the first pass must be different
from BEST to make first pass fast.

Change-Id: I562a7d32004ff631695d91c09a44d8a9076fd6b5
2014-08-22 15:46:25 -07:00
Jim Bankoski
75290d9bc3 vp9_cx_iface.c: spatial_svc resolve missing initializer warning
Change-Id: I3f56a4d64828a74c370a5b3247a5f00e554a922c
2014-08-22 13:36:41 -07:00
Dmitry Kovalev
c72f0ee35b Removing output_pkt_list and pkt_list from config structs.
Change-Id: Id21f1e77f1d030fbe3f5f30486d2a7ecb2bccdf5
2014-08-21 11:13:25 -07:00
Dmitry Kovalev
df083b266a Merge "Removing extraconfig_map from vp9_cx_iface.c." 2014-08-21 11:10:13 -07:00
Dmitry Kovalev
eafa7126a0 Merge "Replacing NOT_IMPLMENTED with NULL." 2014-08-21 11:10:00 -07:00
Dmitry Kovalev
cd6d9846b0 Replacing NOT_IMPLMENTED with NULL.
We don’t need to introduce new macro for the null value.

Change-Id: I59dbae25feeebb4e8359095801aecc8bb17d7764
2014-08-20 17:16:28 -07:00
Dmitry Kovalev
f2e652396f Removing iface pointer from vpx_codec_priv.
The iface pointer is already in vpx_codec_ctx struct.

Change-Id: I9fffe27c613a7c94476f185a1e5a53ff6d99f1c6
2014-08-20 12:31:19 -07:00
Dmitry Kovalev
9988b9b164 Merge "Converting MODE to be just BEST, GOOD, and REALTIME." 2014-08-20 11:03:03 -07:00
Dmitry Kovalev
d4adf25d96 Removing extraconfig_map from vp9_cx_iface.c.
We have just one default set of extra config values, g_usage is
never used with VP9.

Change-Id: I0f1939b0a2da4522a87a393d85be8c8acf7f364c
2014-08-19 15:59:12 -07:00
Dmitry Kovalev
87ee096117 Adding set_rc_buffer_sizes().
Change-Id: I76aab1e4f56a790597104b5c9b0d3543d6982eae
2014-08-19 11:33:36 -07:00
Dmitry Kovalev
215151b78d Converting MODE to be just BEST, GOOD, and REALTIME.
After that change oxcf->pass and oxcf->mode become two orthogonal variables.

Change-Id: I1501f83cd2805480e8118135e6d4045fb41e26d5
2014-08-19 10:37:12 -07:00
Dmitry Kovalev
480693b995 Merge "Moving framerate from VP9EncoderConfig to VP9_COMP." 2014-08-14 18:26:35 -07:00
James Zern
8910cf8d69 Merge "Fix a run-time integer overflow" 2014-08-12 19:21:20 -07:00
Yaowu Xu
3011c53d36 Fix a run-time integer overflow
Change-Id: I87255d8a25ef8c7d235cbf3c8887d7bed7892cfe
2014-08-12 16:49:07 -07:00
Minghai Shang
136a022d71 [spatial svc]Remove CONFIG_SPATIAL_SVC for ss_enable_auto_alt_ref in vpx_codec_enc_cfg to fix heap-overflow issue in asan config
Change-Id: Icdf08501db5f416285f751d316941dfacd2c69ba
2014-08-11 13:43:25 -07:00
Dmitry Kovalev
6e5149b68d Merge "Moving pass from VP9_COMP to VP9EncoderConfig." 2014-08-08 16:07:47 -07:00
Adrian Grange
a334cb0b7d Merge "Common encode/decode function to get reference frame" 2014-08-08 15:56:18 -07:00
Dmitry Kovalev
5a78c40657 Moving framerate from VP9EncoderConfig to VP9_COMP.
Framerate changes over time, VP9EncoderConfig supposed to have static
read-only data.

Change-Id: I36580a7ee71243c1eabb57691089691731d03e67
2014-08-08 15:29:37 -07:00
Dmitry Kovalev
9a4cd41793 Merge "Removing legacy XMA features from libvpx." 2014-08-08 14:58:23 -07:00
Dmitry Kovalev
91c2f1e45a Moving pass from VP9_COMP to VP9EncoderConfig.
We had a very complicated way to initialize cpi->pass from
cfg->g_pass:
switch (cfg->g_pass) {
  case VPX_RC_ONE_PASS:
    oxcf->mode = ONE_PASS_GOOD;
    break;
  case VPX_RC_FIRST_PASS:
    oxcf->mode = TWO_PASS_FIRST;
    break;
  case VPX_RC_LAST_PASS:
    oxcf->mode = TWO_PASS_SECOND_BEST;
    break;
}

cpi->pass = get_pass(oxcf->mode).

Now pass is moved to VP9EncoderConfig and initialization is simple:
switch (cfg->g_pass) {
  case VPX_RC_ONE_PASS:
    oxcf->pass = 0;
    break;
  case VPX_RC_FIRST_PASS:
    oxcf->pass = 1;
    break;
  case VPX_RC_LAST_PASS:
    oxcf->pass = 2;
    break;
}

Change-Id: I8f582203a4575f5e39b071598484a8ad2b72e0d9
2014-08-08 14:27:54 -07:00
Adrian Grange
1ebf52df2c Common encode/decode function to get reference frame
Replaced encoder and decoder functions to get a pointer
to a reference frame with a common function, vp9_get_ref_frame,
and simplified it.

Change-Id: Icb206fcce8caace3bfd1db3dbfa318dde79043ee
2014-08-08 11:37:11 -07:00
Alex Converse
4db5605bdb Merge "vp9_cx_iface.c: warning missing default" 2014-08-07 10:53:01 -07:00
Dmitry Kovalev
ae249d8602 Merge "Adding ticks <-> timebase units conversion functions." 2014-08-07 10:18:08 -07:00
Jim Bankoski
9ba1254317 vp9_cx_iface.c: warning missing default
Change-Id: I18cbdad6031d14d4c1a818c0ab33bbedf7b33e19
2014-08-07 06:53:24 -07:00
Minghai Shang
390ad737b8 [spatial svc]Add is_spatial_svc() helper function.
Change-Id: Ice5376100d8e27cbdaddfd3cd06898cedd2720fe
2014-08-06 15:20:51 -07:00
Dmitry Kovalev
545c324971 Adding ticks <-> timebase units conversion functions.
Change-Id: I75abd57367a7974a9fab8a727b2bbc54dea428c3
2014-08-06 14:58:53 -07:00
Alex Converse
82eed664f3 Write VP9E_SET_TUNE_CONTENT to the correct location.
Change-Id: Ie8c976ececc79fd58c6eb16b7add053dc58e3bb8
2014-08-06 10:59:16 -07:00
Dmitry Kovalev
a42b5c2ffc Removing legacy XMA features from libvpx.
Change-Id: I60ffee7cf78e748792fa6d109322ec32f92e40a9
2014-08-05 16:34:09 -07:00
Alex Converse
572de92991 Add a codec control option to tune for screen content.
Change-Id: I12b0b0a06750cb9a5f1bdc3368deb44137acc9a3
2014-08-05 15:23:45 -07:00