Commit Graph

38 Commits

Author SHA1 Message Date
Minghai Shang
c113457af9 [spatial svc]Another workaround to avoid using prev_mi
We encode a empty invisible frame in front of the base layer frame to
avoid using prev_mi. Since there's a restriction for reference frame
scaling factor, we have to make it smaller and smaller gradually until
its size is 16x16.
Change-Id: I60b680314e33a60b4093cafc296465ee18169c19
2014-10-14 16:26:39 -07:00
Minghai Shang
38b6aed8fd Merge "[spatial svc] Remove vpx_svc_parameters_t and the loop that sets it for each layer" 2014-09-22 14:01:24 -07:00
Minghai Shang
209ee12110 [spatial svc] Remove vpx_svc_parameters_t and the loop that sets it for each layer
vpx_svc_parameters_t contains id, resolution and min/max qp for each spatial layer.

In this change we will use extra config to send min/max qp and scaling factors, then calculate layer resolution inside encoder.

Change-Id: Ib673303266605fe803c3b067284aae5f7a25514a
2014-09-18 18:05:07 -07:00
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
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
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
7025d72cd8 Revert "Removing unnecessary casts to int64_t."
My fault, that was a float (not integer) which was converted to int64_t.

This reverts commit a885e1cbf0

Change-Id: Ic50708b959e1c3cb3e37da1429d334fafc3391d6
2014-08-20 11:24:48 -07:00
Dmitry Kovalev
a885e1cbf0 Removing unnecessary casts to int64_t.
Change-Id: I156419fdf68056759a4cd4206cc829a00025ef78
2014-08-18 14:37:56 -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
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
Minghai Shang
390ad737b8 [spatial svc]Add is_spatial_svc() helper function.
Change-Id: Ice5376100d8e27cbdaddfd3cd06898cedd2720fe
2014-08-06 15:20:51 -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
24c9d6ad43 [spatial svc]Use #if instead of #ifdef on macro CONFIG_SPATIAL_SVC
Change-Id: Ifc94377a0d05d66e3d21b007893a985b66db6082
2014-07-22 11:11:55 -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
Minghai Shang
277338f748 [spatial svc]Implement lag in frames for spatial svc
Change-Id: I930dced169c9d53f8044d2754a04332138347409
2014-06-24 14:01:17 -07:00
Paul Wilkins
2e430cba61 Experiment for mid group second arf.
This patch implements a mechanism for inserting a second
arf at the mid position of arf groups.

It is currently disabled by default using the flag multi_arf_enabled.

Results are currently down somewhat in initial testing if
multi-arf is enabled. Most of the loss is attributable to the
fact that code to preserve the previous golden frame
(in the arf buffer) in cases where we are coding an overlay
frame, is currently disabled in the multi-arf case.

Change-Id: I1d777318ca09f147db2e8c86d7315fe86168c865
2014-06-24 12:59:14 +01:00
Dmitry Kovalev
1cdc238902 Adding buffer levels to RATE_CONTROL struct.
Change-Id: Ib35ff854378764dc3c6745844c67a33dee545663
2014-06-03 13:56:46 -07:00
Paul Wilkins
d009c2360e Merge "Re-factor some duplicate code." 2014-05-30 06:14:06 -07:00
Paul Wilkins
39c91d84ed Re-factor some duplicate code.
Change-Id: I89a1dbea39c50c7633f746d9c93fec3a289f1b42
2014-05-28 14:15:45 +01:00
Dmitry Kovalev
edccfcebb2 Using 2 instead of 3 elements for last_q array.
Change-Id: I2c6950e7d79fc89c6f97e6dcf47317ef66c453a5
2014-05-27 18:19:19 -07:00
Dmitry Kovalev
3fff4bd2df Converting target_bandwidth to Bit/s at very beginning.
Change-Id: I1d8c9fe4228e2f1ef67a66883694842a9545e7b9
2014-05-23 18:11:07 -07:00
Paul Wilkins
f07a96fdc1 Cosmetic clean up.
Use type TWO_PASS instead of "struct twopass".

Change-Id: I9d92920893bd436537b2ca19e9c9d355cca56c7c
2014-05-19 11:14:02 +01:00
Tom Finegan
86a89d740e vp9_svc_layercontext: Clean up function definition mismatch.
vp9_is_upper_layer_key_frame() definition does not match declaration--
it was missing the second const.

Change-Id: I71312579eb443be1924b8b06d8b3177c3dcb40f3
2014-05-07 18:32:27 -07:00
Dmitry Kovalev
eae4a467a8 Simplifying vp9_is_upper_layer_key_frame().
Change-Id: Ib56df7cd282dadbfd202de23f0c746a93b5ce63e
2014-05-01 11:41:01 -07:00
Minghai Shang
f916a3e256 [svc rc] RC improvement for key frames in upper layers for spatial svc.
Change-Id: Id6ab59e505be28cd4eb9f1fe114feb47debe0539
2014-04-30 15:12:55 -07:00
Adrian Grange
1aa2d1a444 Remove key_frame_frequency variable from VP9_COMP
This member of VP9_COMP seemed unnecessary since it
only shadowed VP9EncoderConfig.key_freq that is
accessible through VP9_COMP.

Change-Id: Ib751bb1cf1b0b3c50a2a527d7c34f6829dd6fee3
2014-04-24 08:44:47 -07:00
Dmitry Kovalev
ef003078e8 Renaming "onyx" to "encoder".
Actual renames:
  vp9_onyx_if.c -> vp9_encoder.c
  vp9_onyx_int.h -> vp9_encoder.h

Change-Id: I80532a80b118d0060518e6c6a0d640e3f411783c
2014-04-22 14:57:05 -07:00
Dmitry Kovalev
07f86d0944 Renaming VP9_CONFIG to VP9EncoderConfig.
Change-Id: Id48edd12c6f649c82113128491ef6ea7410e93b2
2014-04-18 11:01:36 -07:00
Dmitry Kovalev
4e9529cb24 Renaming av_per_frame_bandwidth to avg_frame_bandwidth.
Just to be consistent with min_frame_bandwidth & max_frame_bandwidth names.

Change-Id: I36702c708cba9ad1a5c36393f37758a2edeadb90
2014-04-15 18:36:01 -07:00
Marco Paniconi
a39b201344 Remove the unneeded output_framerate from svc.
And change a parameter setting in vpx_temporal_scalable_patterns.

Change-Id: I7c208296ebcecbc8f73de032f6cdb26a1fc1442b
2014-04-10 13:49:25 -07:00
Dmitry Kovalev
51b3035fc3 Adding vp9_inc_frame_in_layer() function.
Change-Id: Idf612c772440158cd1645623241c51ab0d57405c
2014-04-09 10:26:32 -07:00
Dmitry Kovalev
5db5154029 Applying q_trans[] inside set_encoder_config().
Change-Id: Ib64edeb58b3e25488fb85bbe85c9decb15b4d0a1
2014-04-08 19:43:08 -07:00
Dmitry Kovalev
7169a0b114 Adding temp svc variable.
Change-Id: Ic68caec1bcb8a88f443c3e40ce9770eade5bd320
2014-04-07 11:31:26 -07:00
Minghai Shang
9ee6087f34 [svc] Finalize first version of 2nd pass rc
Change-Id: I366850015004644c4fc7feabe27a782fdd8d8718
2014-03-28 13:38:02 -07:00
Minghai Shang
5cf0363368 [svc] Initialization of 2nd pass rc for svc two pass rc
Change-Id: If67ed8721f258883e41bab18f5c456505de68785
2014-03-27 15:46:32 -07:00
Dmitry Kovalev
2df69fefc9 Cleaning up vp9_svc_layercontext.c
Change-Id: I7c94b02f621ccc1a738b0d52edf60e9012cfc014
2014-03-21 13:56:15 -07:00
Marco Paniconi
78664081d1 Move svc layer_context to separate file.
Change-Id: Ie47c139d48cb18409d71f98f6a5b9eeb9f9437a9
2014-03-13 14:39:45 -07:00