Commit Graph

131 Commits

Author SHA1 Message Date
Minghai Shang
42ad07a138 Merge "[spatial svc]Multiple frame context feature" 2014-08-25 14:29:49 -07:00
Dmitry Kovalev
8710df8c49 Merge "Removing source field from VP9_COMP." 2014-08-25 12:53:19 -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
Jim Bankoski
8a896fa54d Merge "vp9_calc_ssim: remove unused parm to resolve warning" 2014-08-25 06:39:49 -07:00
Dmitry Kovalev
80fd1419f5 Removing source field from VP9_COMP.
Using local variables instead.

Change-Id: I68737f7e392b81492ffd3ef2c2ff9afbf55fb097
2014-08-22 16:57:58 -07:00
Jingning Han
310f5a769c Merge "Move mv cost table to VP9_COMP" 2014-08-22 14:41:17 -07:00
Jim Bankoski
3c463ab056 vp9_calc_ssim: remove unused parm to resolve warning
Change-Id: I2b4f4e929495837817010eae12aa6225899afaff
2014-08-22 13:41:38 -07:00
Jingning Han
2b1c6eacb9 Move mv cost table to VP9_COMP
The mv cost table set is maintained at frame level, hence moved to
VP9_COMP.

Change-Id: Icb3d0185d47443590bd11357de729aa4ba5c5e5e
2014-08-22 09:38:07 -07:00
Dmitry Kovalev
10da24a494 Removing last_source field from VP9_COMP.
Change-Id: I5d7cb0151d8495e5ecd073a98b73da65cc6e7274
2014-08-21 17:49:40 -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
c8e933ef4b Merge "Removing gold_is_last, alt_is_last, gold_is_alt flags." 2014-08-20 12:10:14 -07:00
Dmitry Kovalev
a3c0708a80 Merge "Adding set_mv_search_params()." 2014-08-20 11:02:56 -07:00
Dmitry Kovalev
6c4fecbcf1 Adding set_mv_search_params().
Change-Id: I1d1bd2d636a03e23f7d44cda349053966f99736d
2014-08-19 11:49:05 -07:00
Dmitry Kovalev
87ee096117 Adding set_rc_buffer_sizes().
Change-Id: I76aab1e4f56a790597104b5c9b0d3543d6982eae
2014-08-19 11:33:36 -07:00
Dmitry Kovalev
a8cd30cb5d Removing gold_is_last, alt_is_last, gold_is_alt flags.
Change-Id: I061d3bc5b13e3819710fc29504f01f01f065032e
2014-08-18 17:11:20 -07:00
Dmitry Kovalev
17a26eb443 Replacing SVC oxcf->mode check with oxcf->pass check.
oxcf->pass is used in all other places in similar contexts.

Change-Id: I9de3a5f24311838d5a6dc3dd470d258cb189ff59
2014-08-18 14:11:59 -07:00
Dmitry Kovalev
1acc96fb80 Removing vp9_rescale().
Now everything is int64_t, so we don't need that function.

Change-Id: I7dd2023677b4943ecd968d68cc06f9d4862c3c3f
2014-08-15 17:02:10 -07:00
Dmitry Kovalev
dc35b40a67 Merge "Simplifying vp9_set_speed_features() function." 2014-08-15 15:31:43 -07:00
Dmitry Kovalev
f1ec9e8712 Cleaning up vp9_encoder.c.
Change-Id: Ib06c59d1adefb841a6ff653619dffb7e23f3318d
2014-08-15 10:26:03 -07:00
Dmitry Kovalev
480693b995 Merge "Moving framerate from VP9EncoderConfig to VP9_COMP." 2014-08-14 18:26:35 -07:00
Paul Wilkins
ea55e4d26a Minor Two pass rate control adjustments.
Alter way in which we identify static scenes.
Remove some redundant code.

Change-Id: I883c2ea2e341770648a8663d8881f720ed099b61
2014-08-12 16:27:32 +01:00
Dmitry Kovalev
55f6ef9e53 Removing unised OUTPUT_YUV_SRC define.
Change-Id: Ia88eebf10c8620dadaa66722543db291e44fe104
2014-08-08 17:14:01 -07:00
Dmitry Kovalev
cd1fbc67f9 Simplifying vp9_set_speed_features() function.
Change-Id: I3e67230690b81ef54ef48ae26107fe7bc880ab8e
2014-08-08 16:29:24 -07:00
Dmitry Kovalev
6e5149b68d Merge "Moving pass from VP9_COMP to VP9EncoderConfig." 2014-08-08 16:07:47 -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
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
Adrian Grange
75b42a4977 Remove coding_use_prev_mi member from VP9_COMMON
This was shadowing the use of error_resilient_mode, but with
the opposite sense.

Change-Id: Ie4d30263a304fe4b3e94f0c7741db6888cc6afd8
2014-08-08 09:40:38 -07:00
Deb Mukherjee
a468170804 Merge "Changes hdr for profiles > 1 for intraonly frames" 2014-08-07 11:15:38 -07:00
Deb Mukherjee
09bf1d61ca Changes hdr for profiles > 1 for intraonly frames
Specifies the bit-depth, color sampling and colorspace
for intra only frames for profiles > 0

Also adds checks to ensure that profile 1 and 3 are
exclusively used for non 420 streams.

Change-Id: Icfb15fa1acccbce8f757c78fa8a2f60591360745
2014-08-07 09:47:14 -07:00
Minghai Shang
390ad737b8 [spatial svc]Add is_spatial_svc() helper function.
Change-Id: Ice5376100d8e27cbdaddfd3cd06898cedd2720fe
2014-08-06 15:20:51 -07:00
Adrian Grange
0984121f49 Create function vp9_preserve_existing_gf
This code was being called from two places and
difficult to parse. I rationalized it in to a
function to improve readability.

Change-Id: I154b8fe0b84e6c01e69601e78e67bd47c954d8b6
2014-08-05 15:25:21 -07:00
Minghai Shang
5de4368b43 [spatial svc]Enabl golden frame for base layer and fix wrong ref_frame_flag for upper layers in first frame
Change-Id: I1fec9c084b499b2f445b79726066d01b136b59fa
2014-08-04 15:06:21 -07:00
Minghai Shang
8433c8f92d Merge "[spatial svc]Fix reference issues" 2014-07-25 13:24:27 -07:00
Tim Kopp
9d337d34f2 s/CONFIG_DENOISING/CONFIG_VP9_TEMPORAL_DENOISING
This should prevent confusion with the VP8 CONFIG_TEMPORAL_DENOISING and other
flags.

Change-Id: I1fe4e2977895b7966841d861ab74317ad875b6c8
2014-07-24 13:43:52 -07:00
Minghai Shang
929001bf22 [spatial svc]Fix reference issues
1. Remove last reference flag for first frame upper layers in one pass mode.
2. Disable refresh golden frame flag for key frames.

Change-Id: I44ac1bd2c795169e4fbfdd078ea79a1d33a204d6
2014-07-23 16:54:14 -07:00
Yaowu Xu
5dcb2e3237 Merge "Moved call to vp9_clear_system_state() to a proper location" 2014-07-23 12:46:11 -07:00
Tim Kopp
1fe18acb92 VP9 denoiser bugfix in debugging code.
When OUTPUT_YUV_DENOISED is enabled the encoder outputs the uncompressed,
denoised video to a separate file. Moved the point at which the file is
written to in order to avoid an extra blank frame at the beginning of the video.

Change-Id: I805f6a912b18b3d9cae59b13c5b8108279439ce3
2014-07-22 14:10:16 -07:00
Minghai Shang
24c9d6ad43 [spatial svc]Use #if instead of #ifdef on macro CONFIG_SPATIAL_SVC
Change-Id: Ifc94377a0d05d66e3d21b007893a985b66db6082
2014-07-22 11:11:55 -07:00
Alex Converse
5926e7c0e8 Remove unfinished VP9 alpha channel.
Change-Id: Ic5d3a3a0dac10b49495771886a31e793bb78b5ca
2014-07-21 15:55:50 -07:00
Yaowu Xu
bcaf1d69ec Moved call to vp9_clear_system_state() to a proper location
The commit moved a call to vp9_clear_system_state() to a correct
location, i.e. prior function calls using floating point numbers.
This was to fix a mismatch mmx code and sse2 version, where a
floating point number used in adjust_frame_rate(cpi) gets NAN due
to mmx registers being in wrong state.

Change-Id: I40e0a6de98812000ccee6a729badb630604fd7e6
2014-07-21 15:55:12 -07:00
Pengchong Jin
ac638125ea Merge "Fixed a bug of setting wrong first pass mb stats pointer" 2014-07-17 14:24:52 -07:00
Pengchong Jin
e358ab5fc9 Fixed a bug of setting wrong first pass mb stats pointer
The bug sets the wrong pointer to the first pass mb stats
if the encoder does the re-coding in the second pass.

Change-Id: I8a11f45dd7dceb38de814adec24cecccae370d00
2014-07-17 12:04:15 -07:00
Adrian Grange
f68aaa38d6 Modified frame buffer handling
This patch is the first step toward simplifying the
frame buffer handling.

The final goal is to have a common frame buffer handling
framework for both encoder and decoder that incorporates
the existing ability to use externally allocated memory.

Change-Id: I2c378a4f54a39908915f46c4260e17a080db7ff1
2014-07-17 11:06:35 -07:00
Paul Wilkins
93960c869e Merge "Changes to rd balance and multi-arf bug fix." 2014-07-17 07:01:31 -07:00
Yaowu Xu
51c60a891e make default_interp_filter choice a speed feature
This commit changed the hard-coded DEFAULT_INTERP_FILTER to a speed
feature with the same default value: SWITCHABLE.

Change-Id: I7f54f40f1bd3f5277841d04b85db7a84e47313f1
2014-07-16 14:28:51 -07:00
Paul Wilkins
b691230dea Changes to rd balance and multi-arf bug fix.
2 pass only change to calculation of rd mult based on Q.
Make a small adjustment based on frame type and also
replace adjustment based on iifactor with an one based
on the ambient GF/ARF boost level.

Also fix multi arf bug / issue.

Overall these change give an slight improvement in ssim
but hurt psnr a little.

Change-Id: I5e1751e3ff5390a26f543d7855059e6fbcce105e
2014-07-16 13:58:47 +01:00
Pengchong Jin
f349b071c6 Rewrite functions related to first pass block stats
Change-Id: I28679f88e2911b06eef5cbc83ecb62b8c69e4c53
2014-07-14 17:45:27 -07:00
Minghai Shang
e899859c48 [spatial svc]Implement alt reference frames
All changes are for spatial svc only.
1. Enable encoding hidden frames in each layer and use alt reference idex to reference the hidden frame in each layer
2. Use golden reference idx for spatial reference
3. For those layers that don't have hidden frames (caused by lack of frame buffers), reference a hidden frame in lower layers
4. Add "auto-alt-refs" in svc options
Change-Id: Idf27d1fd2fb5f3ffd9e86d2119235e3dad36c178
2014-07-14 11:24:17 -07:00
Yaowu Xu
84744a497a Merge "Remove an unused parameter in vp9_init_search_range()" 2014-07-11 11:13:22 -07:00