aa7335e610
The example encoder down-samples the input video frames a number of times with a down-sampling factor, and then encodes and outputs bitstreams with different resolutions. Support arbitrary down-sampling factor, and down-sampling factor can be different for each encoding level. For example, the encoder can be tested as follows. 1. Configure with multi-resolution encoding enabled: ../libvpx/configure --target=x86-linux-gcc --disable-codecs --enable-vp8 --enable-runtime_cpu_detect --enable-debug --disable-install-docs --enable-error-concealment --enable-multi-res-encoding 2. Run make 3. Encode: If input video is 1280x720, run: ./vp8_multi_resolution_encoder 1280 720 input.yuv 1.ivf 2.ivf 3.ivf 1 (output: 1.ivf(1280x720); 2.ivf(640x360); 3.ivf(320x180). The last parameter is set to 1/0 to show/not show PSNR.) 4. Decode: ./simple_decoder 1.ivf 1.yuv ./simple_decoder 2.ivf 2.yuv ./simple_decoder 3.ivf 3.yuv 5. View video: mplayer 1.yuv -demuxer rawvideo -rawvideo w=1280:h=720 -loop 0 -fps 30 mplayer 2.yuv -demuxer rawvideo -rawvideo w=640:h=360 -loop 0 -fps 30 mplayer 3.yuv -demuxer rawvideo -rawvideo w=320:h=180 -loop 0 -fps 30 The encoding parameters can be modified in vp8_multi_resolution_encoder.c, for example, target bitrate, frame rate... Modified API. John helped a lot with that. Thanks! Change-Id: I03be9a51167eddf94399f92d269599fb3f3d54f5
134 lines
5.3 KiB
Makefile
134 lines
5.3 KiB
Makefile
##
|
|
## Copyright (c) 2010 The WebM project authors. All Rights Reserved.
|
|
##
|
|
## Use of this source code is governed by a BSD-style license
|
|
## that can be found in the LICENSE file in the root of the source
|
|
## tree. An additional intellectual property rights grant can be found
|
|
## in the file PATENTS. All contributing project authors may
|
|
## be found in the AUTHORS file in the root of the source tree.
|
|
##
|
|
|
|
|
|
include $(SRC_PATH_BARE)/$(VP8_PREFIX)vp8_common.mk
|
|
|
|
VP8_CX_EXPORTS += exports_enc
|
|
|
|
VP8_CX_SRCS-yes += $(VP8_COMMON_SRCS-yes)
|
|
VP8_CX_SRCS-no += $(VP8_COMMON_SRCS-no)
|
|
VP8_CX_SRCS_REMOVE-yes += $(VP8_COMMON_SRCS_REMOVE-yes)
|
|
VP8_CX_SRCS_REMOVE-no += $(VP8_COMMON_SRCS_REMOVE-no)
|
|
|
|
ifeq ($(ARCH_ARM),yes)
|
|
include $(SRC_PATH_BARE)/$(VP8_PREFIX)vp8cx_arm.mk
|
|
endif
|
|
|
|
VP8_CX_SRCS-yes += vp8_cx_iface.c
|
|
|
|
# encoder
|
|
#INCLUDES += algo/vpx_common/vpx_mem/include
|
|
#INCLUDES += common
|
|
#INCLUDES += common
|
|
#INCLUDES += common
|
|
#INCLUDES += algo/vpx_ref/cpu_id/include
|
|
#INCLUDES += common
|
|
#INCLUDES += encoder
|
|
|
|
VP8_CX_SRCS-yes += encoder/asm_enc_offsets.c
|
|
VP8_CX_SRCS-yes += encoder/defaultcoefcounts.h
|
|
VP8_CX_SRCS-yes += encoder/bitstream.c
|
|
VP8_CX_SRCS-yes += encoder/boolhuff.c
|
|
VP8_CX_SRCS-yes += encoder/dct.c
|
|
VP8_CX_SRCS-yes += encoder/encodeframe.c
|
|
VP8_CX_SRCS-yes += encoder/encodeintra.c
|
|
VP8_CX_SRCS-yes += encoder/encodemb.c
|
|
VP8_CX_SRCS-yes += encoder/encodemv.c
|
|
VP8_CX_SRCS-$(CONFIG_MULTITHREAD) += encoder/ethreading.c
|
|
VP8_CX_SRCS-yes += encoder/firstpass.c
|
|
VP8_CX_SRCS-yes += encoder/generic/csystemdependent.c
|
|
VP8_CX_SRCS-yes += encoder/block.h
|
|
VP8_CX_SRCS-yes += encoder/boolhuff.h
|
|
VP8_CX_SRCS-yes += encoder/bitstream.h
|
|
VP8_CX_SRCS-yes += encoder/dct.h
|
|
VP8_CX_SRCS-yes += encoder/encodeintra.h
|
|
VP8_CX_SRCS-yes += encoder/encodemb.h
|
|
VP8_CX_SRCS-yes += encoder/encodemv.h
|
|
VP8_CX_SRCS-yes += encoder/firstpass.h
|
|
VP8_CX_SRCS-yes += encoder/lookahead.c
|
|
VP8_CX_SRCS-yes += encoder/lookahead.h
|
|
VP8_CX_SRCS-yes += encoder/mcomp.h
|
|
VP8_CX_SRCS-yes += encoder/modecosts.h
|
|
VP8_CX_SRCS-yes += encoder/onyx_int.h
|
|
VP8_CX_SRCS-yes += encoder/pickinter.h
|
|
VP8_CX_SRCS-yes += encoder/psnr.h
|
|
VP8_CX_SRCS-yes += encoder/quantize.h
|
|
VP8_CX_SRCS-yes += encoder/ratectrl.h
|
|
VP8_CX_SRCS-yes += encoder/rdopt.h
|
|
VP8_CX_SRCS-yes += encoder/tokenize.h
|
|
VP8_CX_SRCS-yes += encoder/treewriter.h
|
|
VP8_CX_SRCS-yes += encoder/variance.h
|
|
VP8_CX_SRCS-yes += encoder/mcomp.c
|
|
VP8_CX_SRCS-yes += encoder/modecosts.c
|
|
VP8_CX_SRCS-yes += encoder/onyx_if.c
|
|
VP8_CX_SRCS-yes += encoder/pickinter.c
|
|
VP8_CX_SRCS-yes += encoder/picklpf.c
|
|
VP8_CX_SRCS-yes += encoder/psnr.c
|
|
VP8_CX_SRCS-yes += encoder/quantize.c
|
|
VP8_CX_SRCS-yes += encoder/ratectrl.c
|
|
VP8_CX_SRCS-yes += encoder/rdopt.c
|
|
VP8_CX_SRCS-yes += encoder/sad_c.c
|
|
VP8_CX_SRCS-yes += encoder/segmentation.c
|
|
VP8_CX_SRCS-yes += encoder/segmentation.h
|
|
VP8_CX_SRCS-$(CONFIG_INTERNAL_STATS) += encoder/ssim.c
|
|
VP8_CX_SRCS-yes += encoder/tokenize.c
|
|
VP8_CX_SRCS-yes += encoder/treewriter.c
|
|
VP8_CX_SRCS-yes += encoder/variance_c.c
|
|
VP8_CX_SRCS-$(CONFIG_INTERNAL_STATS) += common/postproc.h
|
|
VP8_CX_SRCS-$(CONFIG_INTERNAL_STATS) += common/postproc.c
|
|
VP8_CX_SRCS-yes += encoder/temporal_filter.c
|
|
VP8_CX_SRCS-yes += encoder/temporal_filter.h
|
|
VP8_CX_SRCS-$(CONFIG_MULTI_RES_ENCODING) += encoder/mr_dissim.c
|
|
VP8_CX_SRCS-$(CONFIG_MULTI_RES_ENCODING) += encoder/mr_dissim.h
|
|
|
|
ifeq ($(CONFIG_REALTIME_ONLY),yes)
|
|
VP8_CX_SRCS_REMOVE-yes += encoder/firstpass.c
|
|
VP8_CX_SRCS_REMOVE-yes += encoder/temporal_filter.c
|
|
endif
|
|
|
|
VP8_CX_SRCS-$(ARCH_X86)$(ARCH_X86_64) += encoder/x86/encodemb_x86.h
|
|
VP8_CX_SRCS-$(ARCH_X86)$(ARCH_X86_64) += encoder/x86/dct_x86.h
|
|
VP8_CX_SRCS-$(ARCH_X86)$(ARCH_X86_64) += encoder/x86/mcomp_x86.h
|
|
VP8_CX_SRCS-$(ARCH_X86)$(ARCH_X86_64) += encoder/x86/variance_x86.h
|
|
VP8_CX_SRCS-$(ARCH_X86)$(ARCH_X86_64) += encoder/x86/quantize_x86.h
|
|
VP8_CX_SRCS-$(ARCH_X86)$(ARCH_X86_64) += encoder/x86/temporal_filter_x86.h
|
|
VP8_CX_SRCS-$(ARCH_X86)$(ARCH_X86_64) += encoder/x86/x86_csystemdependent.c
|
|
VP8_CX_SRCS-$(HAVE_MMX) += encoder/x86/variance_mmx.c
|
|
VP8_CX_SRCS-$(HAVE_MMX) += encoder/x86/variance_impl_mmx.asm
|
|
VP8_CX_SRCS-$(HAVE_MMX) += encoder/x86/sad_mmx.asm
|
|
VP8_CX_SRCS-$(HAVE_MMX) += encoder/x86/dct_mmx.asm
|
|
VP8_CX_SRCS-$(HAVE_MMX) += encoder/x86/subtract_mmx.asm
|
|
VP8_CX_SRCS-$(HAVE_SSE2) += encoder/x86/dct_sse2.asm
|
|
VP8_CX_SRCS-$(HAVE_SSE2) += encoder/x86/variance_sse2.c
|
|
VP8_CX_SRCS-$(HAVE_SSE2) += encoder/x86/variance_impl_sse2.asm
|
|
VP8_CX_SRCS-$(HAVE_SSE2) += encoder/x86/sad_sse2.asm
|
|
VP8_CX_SRCS-$(HAVE_SSE2) += encoder/x86/fwalsh_sse2.asm
|
|
VP8_CX_SRCS-$(HAVE_SSE2) += encoder/x86/quantize_sse2.asm
|
|
VP8_CX_SRCS-$(HAVE_SSE2) += encoder/x86/subtract_sse2.asm
|
|
VP8_CX_SRCS-$(HAVE_SSE2) += encoder/x86/temporal_filter_apply_sse2.asm
|
|
VP8_CX_SRCS-$(HAVE_SSE3) += encoder/x86/sad_sse3.asm
|
|
VP8_CX_SRCS-$(HAVE_SSSE3) += encoder/x86/sad_ssse3.asm
|
|
VP8_CX_SRCS-$(HAVE_SSSE3) += encoder/x86/variance_ssse3.c
|
|
VP8_CX_SRCS-$(HAVE_SSSE3) += encoder/x86/variance_impl_ssse3.asm
|
|
VP8_CX_SRCS-$(HAVE_SSSE3) += encoder/x86/quantize_ssse3.asm
|
|
VP8_CX_SRCS-$(HAVE_SSE4_1) += encoder/x86/sad_sse4.asm
|
|
VP8_CX_SRCS-$(HAVE_SSE4_1) += encoder/x86/quantize_sse4.asm
|
|
VP8_CX_SRCS-$(ARCH_X86)$(ARCH_X86_64) += encoder/x86/quantize_mmx.asm
|
|
VP8_CX_SRCS-$(ARCH_X86)$(ARCH_X86_64) += encoder/x86/encodeopt.asm
|
|
VP8_CX_SRCS-$(ARCH_X86_64) += encoder/x86/ssim_opt.asm
|
|
|
|
ifeq ($(CONFIG_REALTIME_ONLY),yes)
|
|
VP8_CX_SRCS_REMOVE-$(HAVE_SSE2) += encoder/x86/temporal_filter_apply_sse2.asm
|
|
endif
|
|
|
|
|
|
VP8_CX_SRCS-yes := $(filter-out $(VP8_CX_SRCS_REMOVE-yes),$(VP8_CX_SRCS-yes))
|