summaryrefslogtreecommitdiff
path: root/vp8/encoder/onyx_if.c
diff options
context:
space:
mode:
authorPaul Wilkins <paulwilkins@google.com>2012-01-28 08:50:33 +0000
committerPaul Wilkins <paulwilkins@google.com>2012-01-31 12:52:51 +0000
commit048e4fd5247e23b8d744807e8461b85b990e2b5f (patch)
treedaee7e2c91f16d5cb958ee6818292bbc7869a04c /vp8/encoder/onyx_if.c
parent5f0f260f0cf304eebf2aa88a90978f3e9df20dcb (diff)
downloadlibvpx-048e4fd5247e23b8d744807e8461b85b990e2b5f.tar
libvpx-048e4fd5247e23b8d744807e8461b85b990e2b5f.tar.gz
libvpx-048e4fd5247e23b8d744807e8461b85b990e2b5f.tar.bz2
libvpx-048e4fd5247e23b8d744807e8461b85b990e2b5f.zip
Moved some reference frame data structures into common.
Encoder side changes Change-Id: I8921800e4fccec5e5a9e4755b80cbd472623107b
Diffstat (limited to 'vp8/encoder/onyx_if.c')
-rw-r--r--vp8/encoder/onyx_if.c98
1 files changed, 50 insertions, 48 deletions
diff --git a/vp8/encoder/onyx_if.c b/vp8/encoder/onyx_if.c
index 9969d3f58..675546dc4 100644
--- a/vp8/encoder/onyx_if.c
+++ b/vp8/encoder/onyx_if.c
@@ -2345,9 +2345,9 @@ VP8_PTR vp8_create_compressor(VP8_CONFIG *oxcf)
cpi->frames_till_gf_update_due = 0;
cpi->gf_overspend_bits = 0;
cpi->non_gf_bitrate_adjustment = 0;
- cpi->prob_last_coded = 128;
- cpi->prob_gf_coded = 128;
- cpi->prob_intra_coded = 63;
+ cm->prob_last_coded = 128;
+ cm->prob_gf_coded = 128;
+ cm->prob_intra_coded = 63;
#if CONFIG_DUALPRED
cpi->prob_dualpred[0] = 128;
cpi->prob_dualpred[1] = 128;
@@ -3424,36 +3424,36 @@ static void update_rd_ref_frame_probs(VP8_COMP *cpi)
if (cm->frame_type == KEY_FRAME)
{
- cpi->prob_intra_coded = 255;
- cpi->prob_last_coded = 128;
- cpi->prob_gf_coded = 128;
+ cm->prob_intra_coded = 255;
+ cm->prob_last_coded = 128;
+ cm->prob_gf_coded = 128;
}
else if (!(rf_intra + rf_inter))
{
// This is a trap in case this function is called with cpi->recent_ref_frame_usage[] blank.
- cpi->prob_intra_coded = 63;
- cpi->prob_last_coded = 128;
- cpi->prob_gf_coded = 128;
+ cm->prob_intra_coded = 63;
+ cm->prob_last_coded = 128;
+ cm->prob_gf_coded = 128;
}
else
{
- cpi->prob_intra_coded = (rf_intra * 255) / (rf_intra + rf_inter);
+ cm->prob_intra_coded = (rf_intra * 255) / (rf_intra + rf_inter);
- if (cpi->prob_intra_coded < 1)
- cpi->prob_intra_coded = 1;
+ if (cm->prob_intra_coded < 1)
+ cm->prob_intra_coded = 1;
if ((cm->frames_since_golden > 0) || cpi->source_alt_ref_active)
{
- cpi->prob_last_coded = rf_inter ? (rfct[LAST_FRAME] * 255) / rf_inter : 128;
+ cm->prob_last_coded = rf_inter ? (rfct[LAST_FRAME] * 255) / rf_inter : 128;
- if (cpi->prob_last_coded < 1)
- cpi->prob_last_coded = 1;
+ if (cm->prob_last_coded < 1)
+ cm->prob_last_coded = 1;
- cpi->prob_gf_coded = (rfct[GOLDEN_FRAME] + rfct[ALTREF_FRAME])
+ cm->prob_gf_coded = (rfct[GOLDEN_FRAME] + rfct[ALTREF_FRAME])
? (rfct[GOLDEN_FRAME] * 255) / (rfct[GOLDEN_FRAME] + rfct[ALTREF_FRAME]) : 128;
- if (cpi->prob_gf_coded < 1)
- cpi->prob_gf_coded = 1;
+ if (cm->prob_gf_coded < 1)
+ cm->prob_gf_coded = 1;
}
}
@@ -3464,61 +3464,63 @@ static void update_rd_ref_frame_probs(VP8_COMP *cpi)
if (cm->frame_type == KEY_FRAME)
{
- cpi->prob_intra_coded = 255;
- cpi->prob_last_coded = 128;
- cpi->prob_gf_coded = 128;
+ cm->prob_intra_coded = 255;
+ cm->prob_last_coded = 128;
+ cm->prob_gf_coded = 128;
}
else if (!(rf_intra + rf_inter))
{
- // This is a trap in case this function is called with cpi->recent_ref_frame_usage[] blank.
- cpi->prob_intra_coded = 63;
- cpi->prob_last_coded = 128;
- cpi->prob_gf_coded = 128;
+ // This is a trap in case this function is called with
+ // cpi->recent_ref_frame_usage[] blank.
+ cm->prob_intra_coded = 63;
+ cm->prob_last_coded = 128;
+ cm->prob_gf_coded = 128;
}
else
{
- cpi->prob_intra_coded = (rf_intra * 255) / (rf_intra + rf_inter);
+ cm->prob_intra_coded = (rf_intra * 255) / (rf_intra + rf_inter);
- if (cpi->prob_intra_coded < 1)
- cpi->prob_intra_coded = 1;
+ if (cm->prob_intra_coded < 1)
+ cm->prob_intra_coded = 1;
- cpi->prob_last_coded = rf_inter ? (rfct[LAST_FRAME] * 255) / rf_inter : 128;
+ cm->prob_last_coded =
+ rf_inter ? (rfct[LAST_FRAME] * 255) / rf_inter : 128;
- if (cpi->prob_last_coded < 1)
- cpi->prob_last_coded = 1;
+ if (cm->prob_last_coded < 1)
+ cm->prob_last_coded = 1;
- cpi->prob_gf_coded = (rfct[GOLDEN_FRAME] + rfct[ALTREF_FRAME])
- ? (rfct[GOLDEN_FRAME] * 255) / (rfct[GOLDEN_FRAME] + rfct[ALTREF_FRAME]) : 128;
+ cm->prob_gf_coded =
+ (rfct[GOLDEN_FRAME] + rfct[ALTREF_FRAME])
+ ? (rfct[GOLDEN_FRAME] * 255) /
+ (rfct[GOLDEN_FRAME] + rfct[ALTREF_FRAME]) : 128;
- if (cpi->prob_gf_coded < 1)
- cpi->prob_gf_coded = 1;
+ if (cm->prob_gf_coded < 1)
+ cm->prob_gf_coded = 1;
}
- // update reference frame costs since we can do better than what we got last frame.
+ // update reference frame costs since we can do better than what we got
+ // last frame.
if (cpi->common.refresh_alt_ref_frame)
{
- cpi->prob_intra_coded += 40;
- cpi->prob_last_coded = 200;
- cpi->prob_gf_coded = 1;
+ cm->prob_intra_coded += 40;
+ cm->prob_last_coded = 200;
+ cm->prob_gf_coded = 1;
}
else if (cpi->common.frames_since_golden == 0)
{
- cpi->prob_last_coded = 214;
- cpi->prob_gf_coded = 1;
+ cm->prob_last_coded = 214;
+ cm->prob_gf_coded = 1;
}
else if (cpi->common.frames_since_golden == 1)
{
- cpi->prob_last_coded = 192;
- cpi->prob_gf_coded = 220;
+ cm->prob_last_coded = 192;
+ cm->prob_gf_coded = 220;
}
else if (cpi->source_alt_ref_active)
{
- //int dist = cpi->common.frames_till_alt_ref_frame + cpi->common.frames_since_golden;
- cpi->prob_gf_coded -= 20;
-
- if (cpi->prob_gf_coded < 10)
- cpi->prob_gf_coded = 10;
+ cm->prob_gf_coded =
+ ( cm->prob_gf_coded > 30 ) ? cm->prob_gf_coded - 20 : 10;
}
#endif