diff options
author | Adrian Grange <agrange@google.com> | 2013-04-02 15:08:50 -0700 |
---|---|---|
committer | Adrian Grange <agrange@google.com> | 2013-04-15 09:11:39 -0700 |
commit | c2876cf0fde6baf9cbdf3c7570adedfd1065f3db (patch) | |
tree | a0df2a9bdc46364d174b029d1d0584657c78aeec /vp9/common/vp9_onyxc_int.h | |
parent | 626d06502f9df90bc796e4e107600242a5bca6c5 (diff) | |
download | libvpx-c2876cf0fde6baf9cbdf3c7570adedfd1065f3db.tar libvpx-c2876cf0fde6baf9cbdf3c7570adedfd1065f3db.tar.gz libvpx-c2876cf0fde6baf9cbdf3c7570adedfd1065f3db.tar.bz2 libvpx-c2876cf0fde6baf9cbdf3c7570adedfd1065f3db.zip |
Initial addition of multiple ARF frames
This is work-in-progress, it implements multiple ARF
encoding behind an experimental flag.
It adds the ability to insert multiple ARF frames into a
single ARF group. This patch implements the reordering
of the coded frames, and implements a fixed-length coding
pattern. It applies a fixed quantizer strategy based on
where the frame is in the coding sequence.
Further work to modify the rate control strategy is
ongoing and will be submitted via a set of future patches.
In this first step, each ARF group is recursively
bisected and an ARF frame added at that position in the
sequence. The recursion continues until ARF frames are
within MIN_GF_INTERVAL frames.
The code sits behind the "multiple-arf" experimental
flag ("CONFIG_MULTIPLE_ARF"). The experimental flag
"oneshotq" ("CONFIG_ONESHOTQ") also needs to be enabled
for this patch to work correctly.
Change-Id: Ie473b05ebb43ac473c0cfb659b2b8042823085e2
Diffstat (limited to 'vp9/common/vp9_onyxc_int.h')
-rw-r--r-- | vp9/common/vp9_onyxc_int.h | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/vp9/common/vp9_onyxc_int.h b/vp9/common/vp9_onyxc_int.h index 6f928f5e0..c7ca67efe 100644 --- a/vp9/common/vp9_onyxc_int.h +++ b/vp9/common/vp9_onyxc_int.h @@ -18,6 +18,7 @@ #include "vp9/common/vp9_entropymv.h" #include "vp9/common/vp9_entropy.h" #include "vp9/common/vp9_entropymode.h" + #if CONFIG_POSTPROC #include "vp9/common/vp9_postproc.h" #endif @@ -37,8 +38,13 @@ void vp9_initialize_common(void); #define QINDEX_RANGE (MAXQ + 1) +#if CONFIG_MULTIPLE_ARF +#define NUM_REF_FRAMES 8 +#define NUM_REF_FRAMES_LG2 3 +#else #define NUM_REF_FRAMES 3 #define NUM_REF_FRAMES_LG2 2 +#endif #define ALLOWED_REFS_PER_FRAME 3 @@ -52,6 +58,8 @@ void vp9_initialize_common(void); #define COMP_PRED_CONTEXTS 2 +#define MAX_LAG_BUFFERS 25 + typedef struct frame_contexts { vp9_prob bmode_prob[VP9_NKF_BINTRAMODES - 1]; vp9_prob ymode_prob[VP9_YMODES - 1]; /* interframe intra mode probs */ |