diff options
-rwxr-xr-x | build/make/configure.sh | 12 | ||||
-rw-r--r-- | examples/decoder_tmpl.txt | 4 | ||||
-rw-r--r-- | examples/encoder_tmpl.c | 4 | ||||
-rw-r--r-- | examples/encoder_tmpl.txt | 4 | ||||
-rw-r--r-- | libs.mk | 18 | ||||
-rw-r--r-- | vp8/common/onyx.h | 12 | ||||
-rw-r--r-- | vp8/common/onyxd.h | 11 | ||||
-rw-r--r-- | vp8/common/postproc.c | 2 | ||||
-rw-r--r-- | vp8/decoder/onyxd_if.c | 16 | ||||
-rw-r--r-- | vp8/encoder/encodeframe.c | 6 | ||||
-rw-r--r-- | vp8/encoder/firstpass.c | 3 | ||||
-rw-r--r-- | vp8/encoder/onyx_if.c | 116 | ||||
-rw-r--r-- | vp8/encoder/onyx_int.h | 5 | ||||
-rw-r--r-- | vp8/encoder/ratectrl.c | 18 | ||||
-rw-r--r-- | vp8/encoder/rdopt.h | 12 | ||||
-rw-r--r-- | vp8/vp8_cx_iface.c | 12 | ||||
-rw-r--r-- | vp8_multi_resolution_encoder.c | 8 | ||||
-rw-r--r-- | vp8_scalable_patterns.c | 9 | ||||
-rw-r--r-- | vpxdec.c | 2 | ||||
-rw-r--r-- | vpxenc.c | 16 |
20 files changed, 128 insertions, 162 deletions
diff --git a/build/make/configure.sh b/build/make/configure.sh index f8d69aed1..575a394ff 100755 --- a/build/make/configure.sh +++ b/build/make/configure.sh @@ -1008,7 +1008,7 @@ process_common_toolchain() { tune_cflags="-march=" ;; esac - ;; + ;; gcc*) add_cflags -m${bits} add_ldflags -m${bits} @@ -1017,7 +1017,13 @@ process_common_toolchain() { setup_gnu_toolchain #for 32 bit x86 builds, -O3 did not turn on this flag enabled optimizations && check_add_cflags -fomit-frame-pointer - ;; + ;; + vs*) + # When building with Microsoft Visual Studio the assembler is + # invoked directly. Checking at configure time is unnecessary. + # Skip the check by setting AS arbitrarily + AS=msvs + ;; esac case "${AS}" in @@ -1026,7 +1032,7 @@ process_common_toolchain() { which yasm >/dev/null 2>&1 && AS=yasm [ "${AS}" = auto -o -z "${AS}" ] \ && die "Neither yasm nor nasm have been found" - ;; + ;; esac log_echo " using $AS" [ "${AS##*/}" = nasm ] && add_asflags -Ox diff --git a/examples/decoder_tmpl.txt b/examples/decoder_tmpl.txt index 92a2c3013..e652a635b 100644 --- a/examples/decoder_tmpl.txt +++ b/examples/decoder_tmpl.txt @@ -48,8 +48,8 @@ for(plane=0; plane < 3; plane++) { unsigned char *buf =img->planes[plane]; for(y=0; y < (plane ? (img->d_h + 1) >> 1 : img->d_h); y++) { - if(fwrite(buf, 1, (plane ? (img->d_w + 1) >> 1 : img->d_w), - outfile)); + (void) fwrite(buf, 1, (plane ? (img->d_w + 1) >> 1 : img->d_w), + outfile); buf += img->stride[plane]; } } diff --git a/examples/encoder_tmpl.c b/examples/encoder_tmpl.c index cc70b0081..e2b65ecb6 100644 --- a/examples/encoder_tmpl.c +++ b/examples/encoder_tmpl.c @@ -85,7 +85,7 @@ static void write_ivf_file_header(FILE *outfile, mem_put_le32(header+24, frame_cnt); /* length */ mem_put_le32(header+28, 0); /* unused */ - if(fwrite(header, 1, 32, outfile)); + (void) fwrite(header, 1, 32, outfile); } @@ -103,7 +103,7 @@ static void write_ivf_frame_header(FILE *outfile, mem_put_le32(header+4, pts&0xFFFFFFFF); mem_put_le32(header+8, pts >> 32); - if(fwrite(header, 1, 12, outfile)); + (void) fwrite(header, 1, 12, outfile); } int main(int argc, char **argv) { diff --git a/examples/encoder_tmpl.txt b/examples/encoder_tmpl.txt index 00420713a..39aa22152 100644 --- a/examples/encoder_tmpl.txt +++ b/examples/encoder_tmpl.txt @@ -61,8 +61,8 @@ if(vpx_codec_encode(&codec, frame_avail? &raw : NULL, frame_cnt, ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ PROCESS_FRAME case VPX_CODEC_CX_FRAME_PKT: write_ivf_frame_header(outfile, pkt); - if(fwrite(pkt->data.frame.buf, 1, pkt->data.frame.sz, - outfile)); + (void) fwrite(pkt->data.frame.buf, 1, pkt->data.frame.sz, + outfile); break; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ PROCESS_FRAME @@ -285,38 +285,44 @@ OFFSET_PATTERN:='^[a-zA-Z0-9_]* EQU' ifeq ($(filter icc gcc,$(TGT_CC)), $(TGT_CC)) $(BUILD_PFX)asm_com_offsets.asm: $(BUILD_PFX)$(VP8_PREFIX)common/asm_com_offsets.c.S - LC_ALL=C grep $(OFFSET_PATTERN) $< | tr -d '$$\#' $(ADS2GAS) > $@ + @echo " [CREATE] $@" + $(qexec)LC_ALL=C grep $(OFFSET_PATTERN) $< | tr -d '$$\#' $(ADS2GAS) > $@ $(BUILD_PFX)$(VP8_PREFIX)common/asm_com_offsets.c.S: $(VP8_PREFIX)common/asm_com_offsets.c CLEAN-OBJS += $(BUILD_PFX)asm_com_offsets.asm $(BUILD_PFX)$(VP8_PREFIX)common/asm_com_offsets.c.S $(BUILD_PFX)asm_enc_offsets.asm: $(BUILD_PFX)$(VP8_PREFIX)encoder/asm_enc_offsets.c.S - LC_ALL=C grep $(OFFSET_PATTERN) $< | tr -d '$$\#' $(ADS2GAS) > $@ + @echo " [CREATE] $@" + $(qexec)LC_ALL=C grep $(OFFSET_PATTERN) $< | tr -d '$$\#' $(ADS2GAS) > $@ $(BUILD_PFX)$(VP8_PREFIX)encoder/asm_enc_offsets.c.S: $(VP8_PREFIX)encoder/asm_enc_offsets.c CLEAN-OBJS += $(BUILD_PFX)asm_enc_offsets.asm $(BUILD_PFX)$(VP8_PREFIX)encoder/asm_enc_offsets.c.S $(BUILD_PFX)asm_dec_offsets.asm: $(BUILD_PFX)$(VP8_PREFIX)decoder/asm_dec_offsets.c.S - LC_ALL=C grep $(OFFSET_PATTERN) $< | tr -d '$$\#' $(ADS2GAS) > $@ + @echo " [CREATE] $@" + $(qexec)LC_ALL=C grep $(OFFSET_PATTERN) $< | tr -d '$$\#' $(ADS2GAS) > $@ $(BUILD_PFX)$(VP8_PREFIX)decoder/asm_dec_offsets.c.S: $(VP8_PREFIX)decoder/asm_dec_offsets.c CLEAN-OBJS += $(BUILD_PFX)asm_dec_offsets.asm $(BUILD_PFX)$(VP8_PREFIX)decoder/asm_dec_offsets.c.S else ifeq ($(filter rvct,$(TGT_CC)), $(TGT_CC)) asm_com_offsets.asm: obj_int_extract asm_com_offsets.asm: $(VP8_PREFIX)common/asm_com_offsets.c.o - ./obj_int_extract rvds $< $(ADS2GAS) > $@ + @echo " [CREATE] $@" + $(qexec)./obj_int_extract rvds $< $(ADS2GAS) > $@ OBJS-yes += $(VP8_PREFIX)common/asm_com_offsets.c.o CLEAN-OBJS += asm_com_offsets.asm $(filter %$(ASM).o,$(OBJS-yes)): $(BUILD_PFX)asm_com_offsets.asm asm_enc_offsets.asm: obj_int_extract asm_enc_offsets.asm: $(VP8_PREFIX)encoder/asm_enc_offsets.c.o - ./obj_int_extract rvds $< $(ADS2GAS) > $@ + @echo " [CREATE] $@" + $(qexec)./obj_int_extract rvds $< $(ADS2GAS) > $@ OBJS-yes += $(VP8_PREFIX)encoder/asm_enc_offsets.c.o CLEAN-OBJS += asm_enc_offsets.asm $(filter %$(ASM).o,$(OBJS-yes)): $(BUILD_PFX)asm_enc_offsets.asm asm_dec_offsets.asm: obj_int_extract asm_dec_offsets.asm: $(VP8_PREFIX)decoder/asm_dec_offsets.c.o - ./obj_int_extract rvds $< $(ADS2GAS) > $@ + @echo " [CREATE] $@" + $(qexec)./obj_int_extract rvds $< $(ADS2GAS) > $@ OBJS-yes += $(VP8_PREFIX)decoder/asm_dec_offsets.c.o CLEAN-OBJS += asm_dec_offsets.asm $(filter %$(ASM).o,$(OBJS-yes)): $(BUILD_PFX)asm_dec_offsets.asm diff --git a/vp8/common/onyx.h b/vp8/common/onyx.h index 2c8188a63..67cb77c51 100644 --- a/vp8/common/onyx.h +++ b/vp8/common/onyx.h @@ -39,14 +39,6 @@ extern "C" typedef enum { - VP8_LAST_FLAG = 1, - VP8_GOLD_FLAG = 2, - VP8_ALT_FLAG = 4 - } VP8_REFFRAME; - - - typedef enum - { USAGE_STREAM_FROM_SERVER = 0x0, USAGE_LOCAL_FILE_PLAYBACK = 0x1, USAGE_CONSTRAINED_QUALITY = 0x2 @@ -244,8 +236,8 @@ extern "C" int vp8_use_as_reference(struct VP8_COMP* comp, int ref_frame_flags); int vp8_update_reference(struct VP8_COMP* comp, int ref_frame_flags); - int vp8_get_reference(struct VP8_COMP* comp, VP8_REFFRAME ref_frame_flag, YV12_BUFFER_CONFIG *sd); - int vp8_set_reference(struct VP8_COMP* comp, VP8_REFFRAME ref_frame_flag, YV12_BUFFER_CONFIG *sd); + int vp8_get_reference(struct VP8_COMP* comp, enum vpx_ref_frame_type ref_frame_flag, YV12_BUFFER_CONFIG *sd); + int vp8_set_reference(struct VP8_COMP* comp, enum vpx_ref_frame_type ref_frame_flag, YV12_BUFFER_CONFIG *sd); int vp8_update_entropy(struct VP8_COMP* comp, int update); int vp8_set_roimap(struct VP8_COMP* comp, unsigned char *map, unsigned int rows, unsigned int cols, int delta_q[4], int delta_lf[4], unsigned int threshold[4]); int vp8_set_active_map(struct VP8_COMP* comp, unsigned char *map, unsigned int rows, unsigned int cols); diff --git a/vp8/common/onyxd.h b/vp8/common/onyxd.h index 35a8b6e55..60af1cc4f 100644 --- a/vp8/common/onyxd.h +++ b/vp8/common/onyxd.h @@ -22,6 +22,7 @@ extern "C" #include "ppflags.h" #include "vpx_ports/mem.h" #include "vpx/vpx_codec.h" +#include "vpx/vp8.h" struct VP8D_COMP; @@ -35,12 +36,6 @@ extern "C" int error_concealment; int input_fragments; } VP8D_CONFIG; - typedef enum - { - VP8_LAST_FLAG = 1, - VP8_GOLD_FLAG = 2, - VP8_ALT_FLAG = 4 - } VP8_REFFRAME; typedef enum { @@ -56,8 +51,8 @@ extern "C" int vp8dx_receive_compressed_data(struct VP8D_COMP* comp, unsigned long size, const unsigned char *dest, int64_t time_stamp); int vp8dx_get_raw_frame(struct VP8D_COMP* comp, YV12_BUFFER_CONFIG *sd, int64_t *time_stamp, int64_t *time_end_stamp, vp8_ppflags_t *flags); - vpx_codec_err_t vp8dx_get_reference(struct VP8D_COMP* comp, VP8_REFFRAME ref_frame_flag, YV12_BUFFER_CONFIG *sd); - vpx_codec_err_t vp8dx_set_reference(struct VP8D_COMP* comp, VP8_REFFRAME ref_frame_flag, YV12_BUFFER_CONFIG *sd); + vpx_codec_err_t vp8dx_get_reference(struct VP8D_COMP* comp, enum vpx_ref_frame_type ref_frame_flag, YV12_BUFFER_CONFIG *sd); + vpx_codec_err_t vp8dx_set_reference(struct VP8D_COMP* comp, enum vpx_ref_frame_type ref_frame_flag, YV12_BUFFER_CONFIG *sd); struct VP8D_COMP* vp8dx_create_decompressor(VP8D_CONFIG *oxcf); diff --git a/vp8/common/postproc.c b/vp8/common/postproc.c index ccf6ad7dd..a94ae0006 100644 --- a/vp8/common/postproc.c +++ b/vp8/common/postproc.c @@ -441,7 +441,7 @@ static void fillrd(struct postproc_state *state, int q, int a) } - for (next = next; next < 256; next++) + for (; next < 256; next++) char_dist[next] = 0; } diff --git a/vp8/decoder/onyxd_if.c b/vp8/decoder/onyxd_if.c index e9d1a560f..1c67e71d7 100644 --- a/vp8/decoder/onyxd_if.c +++ b/vp8/decoder/onyxd_if.c @@ -125,16 +125,16 @@ void vp8dx_remove_decompressor(VP8D_COMP *pbi) } -vpx_codec_err_t vp8dx_get_reference(VP8D_COMP *pbi, VP8_REFFRAME ref_frame_flag, YV12_BUFFER_CONFIG *sd) +vpx_codec_err_t vp8dx_get_reference(VP8D_COMP *pbi, enum vpx_ref_frame_type ref_frame_flag, YV12_BUFFER_CONFIG *sd) { VP8_COMMON *cm = &pbi->common; int ref_fb_idx; - if (ref_frame_flag == VP8_LAST_FLAG) + if (ref_frame_flag == VP8_LAST_FRAME) ref_fb_idx = cm->lst_fb_idx; - else if (ref_frame_flag == VP8_GOLD_FLAG) + else if (ref_frame_flag == VP8_GOLD_FRAME) ref_fb_idx = cm->gld_fb_idx; - else if (ref_frame_flag == VP8_ALT_FLAG) + else if (ref_frame_flag == VP8_ALTR_FRAME) ref_fb_idx = cm->alt_fb_idx; else{ vpx_internal_error(&pbi->common.error, VPX_CODEC_ERROR, @@ -156,17 +156,17 @@ vpx_codec_err_t vp8dx_get_reference(VP8D_COMP *pbi, VP8_REFFRAME ref_frame_flag, } -vpx_codec_err_t vp8dx_set_reference(VP8D_COMP *pbi, VP8_REFFRAME ref_frame_flag, YV12_BUFFER_CONFIG *sd) +vpx_codec_err_t vp8dx_set_reference(VP8D_COMP *pbi, enum vpx_ref_frame_type ref_frame_flag, YV12_BUFFER_CONFIG *sd) { VP8_COMMON *cm = &pbi->common; int *ref_fb_ptr = NULL; int free_fb; - if (ref_frame_flag == VP8_LAST_FLAG) + if (ref_frame_flag == VP8_LAST_FRAME) ref_fb_ptr = &cm->lst_fb_idx; - else if (ref_frame_flag == VP8_GOLD_FLAG) + else if (ref_frame_flag == VP8_GOLD_FRAME) ref_fb_ptr = &cm->gld_fb_idx; - else if (ref_frame_flag == VP8_ALT_FLAG) + else if (ref_frame_flag == VP8_ALTR_FRAME) ref_fb_ptr = &cm->alt_fb_idx; else{ vpx_internal_error(&pbi->common.error, VPX_CODEC_ERROR, diff --git a/vp8/encoder/encodeframe.c b/vp8/encoder/encodeframe.c index 2cef01e4f..dce37a7ee 100644 --- a/vp8/encoder/encodeframe.c +++ b/vp8/encoder/encodeframe.c @@ -644,15 +644,15 @@ static void init_encode_frame_mb_context(VP8_COMP *cpi) sizeof(ENTROPY_CONTEXT_PLANES) * cm->mb_cols); // Special case treatment when GF and ARF are not sensible options for reference - if (cpi->ref_frame_flags == VP8_LAST_FLAG) + if (cpi->ref_frame_flags == VP8_LAST_FRAME) vp8_calc_ref_frame_costs(x->ref_frame_cost, cpi->prob_intra_coded,255,128); else if ((cpi->oxcf.number_of_layers > 1) && - (cpi->ref_frame_flags == VP8_GOLD_FLAG)) + (cpi->ref_frame_flags == VP8_GOLD_FRAME)) vp8_calc_ref_frame_costs(x->ref_frame_cost, cpi->prob_intra_coded,1,255); else if ((cpi->oxcf.number_of_layers > 1) && - (cpi->ref_frame_flags == VP8_ALT_FLAG)) + (cpi->ref_frame_flags == VP8_ALTR_FRAME)) vp8_calc_ref_frame_costs(x->ref_frame_cost, cpi->prob_intra_coded,1,1); else diff --git a/vp8/encoder/firstpass.c b/vp8/encoder/firstpass.c index 8de1a6a6f..36483d606 100644 --- a/vp8/encoder/firstpass.c +++ b/vp8/encoder/firstpass.c @@ -853,7 +853,8 @@ skip_motion_search: else recon_file = fopen(filename, "ab"); - if(fwrite(lst_yv12->buffer_alloc, lst_yv12->frame_size, 1, recon_file)); + (void) fwrite(lst_yv12->buffer_alloc, lst_yv12->frame_size, 1, + recon_file); fclose(recon_file); } diff --git a/vp8/encoder/onyx_if.c b/vp8/encoder/onyx_if.c index df1663792..fa8fea0d9 100644 --- a/vp8/encoder/onyx_if.c +++ b/vp8/encoder/onyx_if.c @@ -703,11 +703,11 @@ void vp8_set_speed_features(VP8_COMP *cpi) /* Count enabled references */ ref_frames = 1; - if (cpi->ref_frame_flags & VP8_LAST_FLAG) + if (cpi->ref_frame_flags & VP8_LAST_FRAME) ref_frames++; - if (cpi->ref_frame_flags & VP8_GOLD_FLAG) + if (cpi->ref_frame_flags & VP8_GOLD_FRAME) ref_frames++; - if (cpi->ref_frame_flags & VP8_ALT_FLAG) + if (cpi->ref_frame_flags & VP8_ALTR_FRAME) ref_frames++; /* Convert speed to continuous range, with clamping */ @@ -1514,7 +1514,7 @@ void vp8_change_config(VP8_COMP *cpi, VP8_CONFIG *oxcf) cpi->baseline_gf_interval = cpi->oxcf.alt_freq ? cpi->oxcf.alt_freq : DEFAULT_GF_INTERVAL; - cpi->ref_frame_flags = VP8_ALT_FLAG | VP8_GOLD_FLAG | VP8_LAST_FLAG; + cpi->ref_frame_flags = VP8_ALTR_FRAME | VP8_GOLD_FRAME | VP8_LAST_FRAME; //cpi->use_golden_frame_only = 0; //cpi->use_last_frame_only = 0; @@ -1650,6 +1650,7 @@ void vp8_change_config(VP8_COMP *cpi, VP8_CONFIG *oxcf) cm->yv12_fb[cm->lst_fb_idx].y_height || cm->yv12_fb[cm->lst_fb_idx].y_width == 0) { + dealloc_raw_frame_buffers(cpi); alloc_raw_frame_buffers(cpi); vp8_alloc_compressor_data(cpi); } @@ -1889,9 +1890,6 @@ struct VP8_COMP* vp8_create_compressor(VP8_CONFIG *oxcf) cpi->total_byte_count = 0; cpi->drop_frame = 0; - cpi->drop_count = 0; - cpi->max_drop_count = 0; - cpi->max_consec_dropped_frames = 4; cpi->rate_correction_factor = 1.0; cpi->key_frame_rate_correction_factor = 1.0; @@ -2486,28 +2484,28 @@ int vp8_update_reference(VP8_COMP *cpi, int ref_frame_flags) cpi->common.refresh_alt_ref_frame = 0; cpi->common.refresh_last_frame = 0; - if (ref_frame_flags & VP8_LAST_FLAG) + if (ref_frame_flags & VP8_LAST_FRAME) cpi->common.refresh_last_frame = 1; - if (ref_frame_flags & VP8_GOLD_FLAG) + if (ref_frame_flags & VP8_GOLD_FRAME) cpi->common.refresh_golden_frame = 1; - if (ref_frame_flags & VP8_ALT_FLAG) + if (ref_frame_flags & VP8_ALTR_FRAME) cpi->common.refresh_alt_ref_frame = 1; return 0; } -int vp8_get_reference(VP8_COMP *cpi, VP8_REFFRAME ref_frame_flag, YV12_BUFFER_CONFIG *sd) +int vp8_get_reference(VP8_COMP *cpi, enum vpx_ref_frame_type ref_frame_flag, YV12_BUFFER_CONFIG *sd) { VP8_COMMON *cm = &cpi->common; int ref_fb_idx; - if (ref_frame_flag == VP8_LAST_FLAG) + if (ref_frame_flag == VP8_LAST_FRAME) ref_fb_idx = cm->lst_fb_idx; - else if (ref_frame_flag == VP8_GOLD_FLAG) + else if (ref_frame_flag == VP8_GOLD_FRAME) ref_fb_idx = cm->gld_fb_idx; - else if (ref_frame_flag == VP8_ALT_FLAG) + else if (ref_frame_flag == VP8_ALTR_FRAME) ref_fb_idx = cm->alt_fb_idx; else return -1; @@ -2516,17 +2514,17 @@ int vp8_get_reference(VP8_COMP *cpi, VP8_REFFRAME ref_frame_flag, YV12_BUFFER_CO return 0; } -int vp8_set_reference(VP8_COMP *cpi, VP8_REFFRAME ref_frame_flag, YV12_BUFFER_CONFIG *sd) +int vp8_set_reference(VP8_COMP *cpi, enum vpx_ref_frame_type ref_frame_flag, YV12_BUFFER_CONFIG *sd) { VP8_COMMON *cm = &cpi->common; int ref_fb_idx; - if (ref_frame_flag == VP8_LAST_FLAG) + if (ref_frame_flag == VP8_LAST_FRAME) ref_fb_idx = cm->lst_fb_idx; - else if (ref_frame_flag == VP8_GOLD_FLAG) + else if (ref_frame_flag == VP8_GOLD_FRAME) ref_fb_idx = cm->gld_fb_idx; - else if (ref_frame_flag == VP8_ALT_FLAG) + else if (ref_frame_flag == VP8_ALTR_FRAME) ref_fb_idx = cm->alt_fb_idx; else return -1; @@ -2615,7 +2613,7 @@ static void scale_and_extend_source(YV12_BUFFER_CONFIG *sd, VP8_COMP *cpi) } -static void resize_key_frame(VP8_COMP *cpi) +static int resize_key_frame(VP8_COMP *cpi) { #if CONFIG_SPATIAL_RESAMPLING VP8_COMMON *cm = &cpi->common; @@ -2656,10 +2654,12 @@ static void resize_key_frame(VP8_COMP *cpi) cm->Height = new_height; vp8_alloc_compressor_data(cpi); scale_and_extend_source(cpi->un_scaled_source, cpi); + return 1; } } #endif + return 0; } @@ -3033,10 +3033,10 @@ static void update_reference_frames(VP8_COMMON *cm) if (cm->frame_type == KEY_FRAME) { - yv12_fb[cm->new_fb_idx].flags |= VP8_GOLD_FLAG | VP8_ALT_FLAG ; + yv12_fb[cm->new_fb_idx].flags |= VP8_GOLD_FRAME | VP8_ALTR_FRAME ; - yv12_fb[cm->gld_fb_idx].flags &= ~VP8_GOLD_FLAG; - yv12_fb[cm->alt_fb_idx].flags &= ~VP8_ALT_FLAG; + yv12_fb[cm->gld_fb_idx].flags &= ~VP8_GOLD_FRAME; + yv12_fb[cm->alt_fb_idx].flags &= ~VP8_ALTR_FRAME; cm->alt_fb_idx = cm->gld_fb_idx = cm->new_fb_idx; } @@ -3046,8 +3046,8 @@ static void update_reference_frames(VP8_COMMON *cm) { assert(!cm->copy_buffer_to_arf); - cm->yv12_fb[cm->new_fb_idx].flags |= VP8_ALT_FLAG; - cm->yv12_fb[cm->alt_fb_idx].flags &= ~VP8_ALT_FLAG; + cm->yv12_fb[cm->new_fb_idx].flags |= VP8_ALTR_FRAME; + cm->yv12_fb[cm->alt_fb_idx].flags &= ~VP8_ALTR_FRAME; cm->alt_fb_idx = cm->new_fb_idx; } else if (cm->copy_buffer_to_arf) @@ -3058,8 +3058,8 @@ static void update_reference_frames(VP8_COMMON *cm) { if(cm->alt_fb_idx != cm->lst_fb_idx) { - yv12_fb[cm->lst_fb_idx].flags |= VP8_ALT_FLAG; - yv12_fb[cm->alt_fb_idx].flags &= ~VP8_ALT_FLAG; + yv12_fb[cm->lst_fb_idx].flags |= VP8_ALTR_FRAME; + yv12_fb[cm->alt_fb_idx].flags &= ~VP8_ALTR_FRAME; cm->alt_fb_idx = cm->lst_fb_idx; } } @@ -3067,8 +3067,8 @@ static void update_reference_frames(VP8_COMMON *cm) { if(cm->alt_fb_idx != cm->gld_fb_idx) { - yv12_fb[cm->gld_fb_idx].flags |= VP8_ALT_FLAG; - yv12_fb[cm->alt_fb_idx].flags &= ~VP8_ALT_FLAG; + yv12_fb[cm->gld_fb_idx].flags |= VP8_ALTR_FRAME; + yv12_fb[cm->alt_fb_idx].flags &= ~VP8_ALTR_FRAME; cm->alt_fb_idx = cm->gld_fb_idx; } } @@ -3078,8 +3078,8 @@ static void update_reference_frames(VP8_COMMON *cm) { assert(!cm->copy_buffer_to_gf); - cm->yv12_fb[cm->new_fb_idx].flags |= VP8_GOLD_FLAG; - cm->yv12_fb[cm->gld_fb_idx].flags &= ~VP8_GOLD_FLAG; + cm->yv12_fb[cm->new_fb_idx].flags |= VP8_GOLD_FRAME; + cm->yv12_fb[cm->gld_fb_idx].flags &= ~VP8_GOLD_FRAME; cm->gld_fb_idx = cm->new_fb_idx; } else if (cm->copy_buffer_to_gf) @@ -3090,8 +3090,8 @@ static void update_reference_frames(VP8_COMMON *cm) { if(cm->gld_fb_idx != cm->lst_fb_idx) { - yv12_fb[cm->lst_fb_idx].flags |= VP8_GOLD_FLAG; - yv12_fb[cm->gld_fb_idx].flags &= ~VP8_GOLD_FLAG; + yv12_fb[cm->lst_fb_idx].flags |= VP8_GOLD_FRAME; + yv12_fb[cm->gld_fb_idx].flags &= ~VP8_GOLD_FRAME; cm->gld_fb_idx = cm->lst_fb_idx; } } @@ -3099,8 +3099,8 @@ static void update_reference_frames(VP8_COMMON *cm) { if(cm->alt_fb_idx != cm->gld_fb_idx) { - yv12_fb[cm->alt_fb_idx].flags |= VP8_GOLD_FLAG; - yv12_fb[cm->gld_fb_idx].flags &= ~VP8_GOLD_FLAG; + yv12_fb[cm->alt_fb_idx].flags |= VP8_GOLD_FRAME; + yv12_fb[cm->gld_fb_idx].flags &= ~VP8_GOLD_FRAME; cm->gld_fb_idx = cm->alt_fb_idx; } } @@ -3109,8 +3109,8 @@ static void update_reference_frames(VP8_COMMON *cm) if (cm->refresh_last_frame) { - cm->yv12_fb[cm->new_fb_idx].flags |= VP8_LAST_FLAG; - cm->yv12_fb[cm->lst_fb_idx].flags &= ~VP8_LAST_FLAG; + cm->yv12_fb[cm->new_fb_idx].flags |= VP8_LAST_FRAME; + cm->yv12_fb[cm->lst_fb_idx].flags &= ~VP8_LAST_FRAME; cm->lst_fb_idx = cm->new_fb_idx; } } @@ -3815,7 +3815,17 @@ static void encode_frame_to_data_rate if (cm->frame_type == KEY_FRAME) { - resize_key_frame(cpi); + if(resize_key_frame(cpi)) + { + /* If the frame size has changed, need to reset Q, quantizer, + * and background refresh. + */ + Q = vp8_regulate_q(cpi, cpi->this_frame_target); + if (cpi->cyclic_refresh_mode_enabled && (cpi->current_layer==0)) + cyclic_background_refresh(cpi, Q, 0); + vp8_set_quantizer(cpi, Q); + } + vp8_setup_key_frame(cpi); } @@ -4313,30 +4323,6 @@ static void encode_frame_to_data_rate } } -#if 0 - - // If the frame was massively oversize and we are below optimal buffer level drop next frame - if ((cpi->drop_frames_allowed) && - (cpi->oxcf.end_usage == USAGE_STREAM_FROM_SERVER) && - (cpi->buffer_level < cpi->oxcf.drop_frames_water_mark * cpi->oxcf.optimal_buffer_level / 100) && - (cpi->projected_frame_size > (4 * cpi->this_frame_target))) - { - cpi->drop_frame = 1; - } - -#endif - - // Set the count for maximum consecutive dropped frames based upon the ratio of - // this frame size to the target average per frame bandwidth. - // (cpi->av_per_frame_bandwidth > 0) is just a sanity check to prevent / 0. - if (cpi->drop_frames_allowed && (cpi->av_per_frame_bandwidth > 0)) - { - cpi->max_drop_count = cpi->projected_frame_size / cpi->av_per_frame_bandwidth; - - if (cpi->max_drop_count > cpi->max_consec_dropped_frames) - cpi->max_drop_count = cpi->max_consec_dropped_frames; - } - // Update the buffer level variable. // Non-viewable frames are a special case and are treated as pure overhead. if ( !cm->show_frame ) @@ -4527,16 +4513,16 @@ static void encode_frame_to_data_rate else if (cm->refresh_alt_ref_frame ^ cm->refresh_golden_frame) // 1 refreshed but not the other cpi->gold_is_alt = 0; - cpi->ref_frame_flags = VP8_ALT_FLAG | VP8_GOLD_FLAG | VP8_LAST_FLAG; + cpi->ref_frame_flags = VP8_ALTR_FRAME | VP8_GOLD_FRAME | VP8_LAST_FRAME; if (cpi->gold_is_last) - cpi->ref_frame_flags &= ~VP8_GOLD_FLAG; + cpi->ref_frame_flags &= ~VP8_GOLD_FRAME; if (cpi->alt_is_last) - cpi->ref_frame_flags &= ~VP8_ALT_FLAG; + cpi->ref_frame_flags &= ~VP8_ALTR_FRAME; if (cpi->gold_is_alt) - cpi->ref_frame_flags &= ~VP8_ALT_FLAG; + cpi->ref_frame_flags &= ~VP8_ALTR_FRAME; if (!cpi->oxcf.error_resilient_mode) diff --git a/vp8/encoder/onyx_int.h b/vp8/encoder/onyx_int.h index cf70231c4..3b202c941 100644 --- a/vp8/encoder/onyx_int.h +++ b/vp8/encoder/onyx_int.h @@ -25,6 +25,7 @@ #include "vp8/common/threading.h" #include "vpx_ports/mem.h" #include "vpx/internal/vpx_codec_internal.h" +#include "vpx/vp8.h" #include "mcomp.h" #include "vp8/common/findnearmv.h" #include "lookahead.h" @@ -435,10 +436,6 @@ typedef struct VP8_COMP int drop_frames_allowed; // Are we permitted to drop frames? int drop_frame; // Drop this frame? - int drop_count; // How many frames have we dropped? - int max_drop_count; // How many frames should we drop? - int max_consec_dropped_frames; // Limit number of consecutive frames that can be dropped. - int ymode_count [VP8_YMODES]; /* intra MB type cts this frame */ int uv_mode_count[VP8_UV_MODES]; /* intra MB type cts this frame */ diff --git a/vp8/encoder/ratectrl.c b/vp8/encoder/ratectrl.c index 04fd2d05b..f6baf4c7e 100644 --- a/vp8/encoder/ratectrl.c +++ b/vp8/encoder/ratectrl.c @@ -966,7 +966,7 @@ static void calc_pframe_target_size(VP8_COMP *cpi) // In unbufferd mode (eg vide conferencing) the descision to // code or drop a frame is made outside the codec in response to real // world comms or buffer considerations. - if (cpi->drop_frames_allowed && cpi->buffered_mode && + if (cpi->drop_frames_allowed && (cpi->oxcf.end_usage == USAGE_STREAM_FROM_SERVER) && ((cpi->common.frame_type != KEY_FRAME))) //|| !cpi->oxcf.allow_spatial_resampling) ) { @@ -984,28 +984,13 @@ static void calc_pframe_target_size(VP8_COMP *cpi) //vpx_log("Decoder: Drop frame due to bandwidth: %d \n",cpi->buffer_level, cpi->av_per_frame_bandwidth); cpi->drop_frame = 1; - } - -#if 0 - // Check for other drop frame crtieria (Note 2 pass cbr uses decimation on whole KF sections) - else if ((cpi->buffer_level < cpi->oxcf.drop_frames_water_mark * cpi->oxcf.optimal_buffer_level / 100) && - (cpi->drop_count < cpi->max_drop_count) && (cpi->pass == 0)) - { - cpi->drop_frame = 1; - } -#endif - - if (cpi->drop_frame) - { // Update the buffer level variable. cpi->bits_off_target += cpi->av_per_frame_bandwidth; if (cpi->bits_off_target > cpi->oxcf.maximum_buffer_size) cpi->bits_off_target = cpi->oxcf.maximum_buffer_size; cpi->buffer_level = cpi->bits_off_target; } - else - cpi->drop_count = 0; } // Adjust target frame size for Golden Frames: @@ -1554,7 +1539,6 @@ int vp8_pick_frame_size(VP8_COMP *cpi) if (cpi->drop_frame) { cpi->drop_frame = 0; - cpi->drop_count++; return 0; } } diff --git a/vp8/encoder/rdopt.h b/vp8/encoder/rdopt.h index db939f96c..bbcb59f67 100644 --- a/vp8/encoder/rdopt.h +++ b/vp8/encoder/rdopt.h @@ -86,15 +86,15 @@ static void get_predictor_pointers(const VP8_COMP *cpi, unsigned int recon_yoffset, unsigned int recon_uvoffset) { - if (cpi->ref_frame_flags & VP8_LAST_FLAG) + if (cpi->ref_frame_flags & VP8_LAST_FRAME) get_plane_pointers(&cpi->common.yv12_fb[cpi->common.lst_fb_idx], plane[LAST_FRAME], recon_yoffset, recon_uvoffset); - if (cpi->ref_frame_flags & VP8_GOLD_FLAG) + if (cpi->ref_frame_flags & VP8_GOLD_FRAME) get_plane_pointers(&cpi->common.yv12_fb[cpi->common.gld_fb_idx], plane[GOLDEN_FRAME], recon_yoffset, recon_uvoffset); - if (cpi->ref_frame_flags & VP8_ALT_FLAG) + if (cpi->ref_frame_flags & VP8_ALTR_FRAME) get_plane_pointers(&cpi->common.yv12_fb[cpi->common.alt_fb_idx], plane[ALTREF_FRAME], recon_yoffset, recon_uvoffset); } @@ -106,11 +106,11 @@ static void get_reference_search_order(const VP8_COMP *cpi, int i=0; ref_frame_map[i++] = INTRA_FRAME; - if (cpi->ref_frame_flags & VP8_LAST_FLAG) + if (cpi->ref_frame_flags & VP8_LAST_FRAME) ref_frame_map[i++] = LAST_FRAME; - if (cpi->ref_frame_flags & VP8_GOLD_FLAG) + if (cpi->ref_frame_flags & VP8_GOLD_FRAME) ref_frame_map[i++] = GOLDEN_FRAME; - if (cpi->ref_frame_flags & VP8_ALT_FLAG) + if (cpi->ref_frame_flags & VP8_ALTR_FRAME) ref_frame_map[i++] = ALTREF_FRAME; for(; i<4; i++) ref_frame_map[i] = -1; diff --git a/vp8/vp8_cx_iface.c b/vp8/vp8_cx_iface.c index ca06648fb..472db6e37 100644 --- a/vp8/vp8_cx_iface.c +++ b/vp8/vp8_cx_iface.c @@ -771,13 +771,13 @@ static vpx_codec_err_t vp8e_encode(vpx_codec_alg_priv_t *ctx, int ref = 7; if (flags & VP8_EFLAG_NO_REF_LAST) - ref ^= VP8_LAST_FLAG; + ref ^= VP8_LAST_FRAME; if (flags & VP8_EFLAG_NO_REF_GF) - ref ^= VP8_GOLD_FLAG; + ref ^= VP8_GOLD_FRAME; if (flags & VP8_EFLAG_NO_REF_ARF) - ref ^= VP8_ALT_FLAG; + ref ^= VP8_ALTR_FRAME; vp8_use_as_reference(ctx->cpi, ref); } @@ -789,13 +789,13 @@ static vpx_codec_err_t vp8e_encode(vpx_codec_alg_priv_t *ctx, int upd = 7; if (flags & VP8_EFLAG_NO_UPD_LAST) - upd ^= VP8_LAST_FLAG; + upd ^= VP8_LAST_FRAME; if (flags & VP8_EFLAG_NO_UPD_GF) - upd ^= VP8_GOLD_FLAG; + upd ^= VP8_GOLD_FRAME; if (flags & VP8_EFLAG_NO_UPD_ARF) - upd ^= VP8_ALT_FLAG; + upd ^= VP8_ALTR_FRAME; vp8_update_reference(ctx->cpi, upd); } diff --git a/vp8_multi_resolution_encoder.c b/vp8_multi_resolution_encoder.c index 81e71375d..497d8f7e1 100644 --- a/vp8_multi_resolution_encoder.c +++ b/vp8_multi_resolution_encoder.c @@ -164,7 +164,7 @@ static void write_ivf_file_header(FILE *outfile, mem_put_le32(header+24, frame_cnt); /* length */ mem_put_le32(header+28, 0); /* unused */ - if(fwrite(header, 1, 32, outfile)); + (void) fwrite(header, 1, 32, outfile); } static void write_ivf_frame_header(FILE *outfile, @@ -181,7 +181,7 @@ static void write_ivf_frame_header(FILE *outfile, mem_put_le32(header+4, pts&0xFFFFFFFF); mem_put_le32(header+8, pts >> 32); - if(fwrite(header, 1, 12, outfile)); + (void) fwrite(header, 1, 12, outfile); } int main(int argc, char **argv) @@ -410,8 +410,8 @@ int main(int argc, char **argv) switch(pkt[i]->kind) { case VPX_CODEC_CX_FRAME_PKT: write_ivf_frame_header(outfile[i], pkt[i]); - if(fwrite(pkt[i]->data.frame.buf, 1, pkt[i]->data.frame.sz, - outfile[i])); + (void) fwrite(pkt[i]->data.frame.buf, 1, + pkt[i]->data.frame.sz, outfile[i]); break; case VPX_CODEC_PSNR_PKT: if (show_psnr) diff --git a/vp8_scalable_patterns.c b/vp8_scalable_patterns.c index 8d151ddb7..bd884141d 100644 --- a/vp8_scalable_patterns.c +++ b/vp8_scalable_patterns.c @@ -93,7 +93,7 @@ static void write_ivf_file_header(FILE *outfile, mem_put_le32(header+24, frame_cnt); /* length */ mem_put_le32(header+28, 0); /* unused */ - if(fwrite(header, 1, 32, outfile)); + (void) fwrite(header, 1, 32, outfile); } @@ -111,7 +111,7 @@ static void write_ivf_frame_header(FILE *outfile, mem_put_le32(header+4, pts&0xFFFFFFFF); mem_put_le32(header+8, pts >> 32); - if(fwrite(header, 1, 12, outfile)); + (void) fwrite(header, 1, 12, outfile); } static int mode_to_num_layers[9] = {2, 2, 3, 3, 3, 3, 5, 2, 3}; @@ -530,8 +530,8 @@ int main(int argc, char **argv) { i<cfg.ts_number_layers; i++) { write_ivf_frame_header(outfile[i], pkt); - if (fwrite(pkt->data.frame.buf, 1, pkt->data.frame.sz, - outfile[i])); + (void) fwrite(pkt->data.frame.buf, 1, pkt->data.frame.sz, + outfile[i]); frames_in_layer[i]++; } break; @@ -562,4 +562,3 @@ int main(int argc, char **argv) { return EXIT_SUCCESS; } - @@ -356,7 +356,7 @@ void out_put(void *out, const uint8_t *buf, unsigned int len, int do_md5) } else { - if(fwrite(buf, 1, len, out)); + (void) fwrite(buf, 1, len, out); } } @@ -245,7 +245,7 @@ void stats_write(stats_io_t *stats, const void *pkt, size_t len) { if (stats->file) { - if(fwrite(pkt, 1, len, stats->file)); + (void) fwrite(pkt, 1, len, stats->file); } else { @@ -338,7 +338,7 @@ static int read_frame(struct input_state *input, vpx_image_t *img) * write_ivf_frame_header() for documentation on the frame header * layout. */ - if(fread(junk, 1, IVF_FRAME_HDR_SZ, f)); + (void) fread(junk, 1, IVF_FRAME_HDR_SZ, f); } for (plane = 0; plane < 3; plane++) @@ -468,7 +468,7 @@ static void write_ivf_file_header(FILE *outfile, mem_put_le32(header + 24, frame_cnt); /* length */ mem_put_le32(header + 28, 0); /* unused */ - if(fwrite(header, 1, 32, outfile)); + (void) fwrite(header, 1, 32, outfile); } @@ -486,14 +486,14 @@ static void write_ivf_frame_header(FILE *outfile, mem_put_le32(header + 4, pts & 0xFFFFFFFF); mem_put_le32(header + 8, pts >> 32); - if(fwrite(header, 1, 12, outfile)); + (void) fwrite(header, 1, 12, outfile); } static void write_ivf_frame_size(FILE *outfile, size_t size) { char header[4]; mem_put_le32(header, size); - fwrite(header, 1, 4, outfile); + (void) fwrite(header, 1, 4, outfile); } @@ -541,7 +541,7 @@ struct EbmlGlobal void Ebml_Write(EbmlGlobal *glob, const void *buffer_in, unsigned long len) { - if(fwrite(buffer_in, 1, len, glob->stream)); + (void) fwrite(buffer_in, 1, len, glob->stream); } #define WRITE_BUFFER(s) \ @@ -2259,8 +2259,8 @@ static void get_cx_data(struct stream_state *stream, } } - fwrite(pkt->data.frame.buf, 1, - pkt->data.frame.sz, stream->file); + (void) fwrite(pkt->data.frame.buf, 1, pkt->data.frame.sz, + stream->file); } stream->nbytes += pkt->data.raw.sz; break; |