Age | Commit message (Collapse) | Author |
|
Adds support for one-pass rc-enabled SVC encoder with callbacks for
getting per-layer packets.
- the callback function registration is implemented as an encoder
control function.
- if the callback function is not registered, the old way of
aggregating packets with superframe will take effect.
- one more control function “VP9E_GET_SVC_LAYER_ID” has been
implemented to get the temporal/spatial id from the encoder
within the callback. This can be used to get the ids to put on RTP
packet.
Change-Id: I1a90e00135dde65da128b758e6c00b57299a111a
|
|
0 means that golden boost is off, and uses average frame target rate,
a non-zero number means the percentage of boost over average frame
bitrate is given initially to golden frames in CBR mode.
Change-Id: If4334fe2cc424b65ae0cce27f71b5561bf1e577d
|
|
Change-Id: I205de3611622cff7f751ea8baf9f82784581730a
|
|
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 remerged.
Change-Id: I9efab38bba7da86e056fbe8f663e711c5df38449
|
|
This reverts commit c113457af9880b8e15a36cdaabfd414d1c245693.
Temporary revert to allow clean revert of another commit.
Change-Id: Ia9b7b755e6c48e1b6e383329f121fef175a24b27
|
|
|
|
this change checks that CONFIG_SPATIAL_SVC is defined and adds a TODO to
ensure this is changed in the future as the release headers can't
depend on vpx_config.h.
vpx/vpx_encoder.h:164:5: warning: "CONFIG_SPATIAL_SVC" is not defined
[-Wundef]
Change-Id: I797a0150e5f56caf048e7ee00b282fbc9c5ede19
|
|
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
|
|
Adds enums and corresponding vpx level code.
Change-Id: Ia402d47490a4466988d7edc6b7e3e5163f20a381
|
|
Miscellaneous bug-fixes for high bitdepth functionality.
With this patch, high bit-depth profiles become mostly functional,
except for an intermittent assert failure issue that is being
tracked.
Change-Id: I6a7fcbdcf1e5b09842e88535f8442d2e1230748c
|
|
fixes --enable-coefficient-range-checking --enable-debug
vp9_idct.h has references to INT16_MIN/MAX; this header is included in
c++ source so needs to request the macros
Change-Id: I2e643eb973c2d84729fa3cf2f4c4d8bf65cfdff0
|
|
This reverts commit eafc8c9c40d712aabe234bed5269a02c62fa0bfc.
tran_low_t/tran_high_t don't belong in a public header, they're private.
Similarly the public headers shouldn't rely on config defines,
vpx_config.h isn't installed.
Change-Id: I194ec273598da418df8dd727b6c0e78a556740ad
|
|
|
|
Change-Id: Ie9fb6a4078eb6a3fb7c4ff1453831ab9afe23121
|
|
This commit fixes a compiling error in vp9_idct.h, where the codec
checks that the intermediate steps of transformation fit within
16-bit length. The issue was due to broken file dependency.
Change-Id: Ib22bba13a1e6df28489cb23d6774c561969f1fdc
|
|
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
|
|
Change-Id: I214bc4169f6c5eaee4957cd308a74d309e999005
|
|
1. This is to align with the ffmpeg implementation
2. Remove APIs for setting quantizers and scale-factors
Change-Id: I6e238d71db790a9fb3254baaeb61e2a5aac58f48
|
|
|
|
Libvpx was memseting every external frame buffer before decode. This
was to work around a valgrind issue in our C loop filter. Most of
the time this was not needed and we have noticed some significant
performance loss on some platforms. Now we require the application to
zero out the buffers if it is using external frame buffers.
Change-Id: I7330d00a315e65137ed30edd5f813e8929b76242
|
|
|
|
Change from VP8E_SET_NOISE_SENSITIVITY to VP9E_SET_NOISE_SENSITIVITY
Change-Id: Ia210a7029b26924e30973f0f9798a338e0412407
|
|
Change-Id: If8cd3879aa2a498a2b1b97cedb88b2b3bd97f0ba
|
|
Change-Id: I97d0cf095e9cfefdfa0f65eb5e96d6848cc9ffca
|
|
1. svc_encodeframe.c will not handle frame or stats packets anymore.
The app will process them.
2. Remove APIs that related to these packets.
Change-Id: Id0d7f8b458dc09c6f77064c0878fd4e572db001b
|
|
|
|
from string"
|
|
Change-Id: I6e8d3f08c8a8ce3555a498feba471ba9fec411c6
|
|
Change-Id: I811526a9ee9f237604f72abe7fc677e39e0f457f
|
|
|
|
Change-Id: I6fdcea0e0faf42386dd2b8f972a3b3fb2c21b2c7
|
|
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
|
|
It's built based on current spatial svc code.
We only support one spatial two temporal layers at this time.
Change-Id: I1fdc8584354b910331e626bfae60473b3b701ba1
|
|
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
|
|
|
|
|
|
Change-Id: I3e319f581215ccb814afca247c1d911be231a4ac
|
|
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
|
|
Change-Id: Ibbbc5b39429d4b753f0a966b9d84d1d7bf823650
|
|
|
|
We don’t need to introduce new macro for the null value.
Change-Id: I59dbae25feeebb4e8359095801aecc8bb17d7764
|
|
The iface pointer is already in vpx_codec_ctx struct.
Change-Id: I9fffe27c613a7c94476f185a1e5a53ff6d99f1c6
|
|
|
|
Change-Id: Idfd606bf9d23c898bcdfb98fb90a23a5fdace960
|
|
Change-Id: I07f7aea60ef7b9904f67e12eb5b2bfeb7348a454
|
|
Change-Id: I53659e3ff8ba1b70d89d152e0580ac7a412b89b2
|
|
Moved to global function to avoid unused function warnings...
Change-Id: I4e9002dcb20748f6d8d84cbbe6ef2de0bd9a8018
|
|
|
|
|
|
Change-Id: I80284ae82915b9df56f7c5ef4953bd53e8cffd1f
|