[submodule "ext/videoutils"]
path = ext/videoutils
url = git://gitorious.org/vaapi/gstreamer-videoutils.git
+[submodule "ext/libvpx/upstream"]
+ path = ext/libvpx/upstream
+ url = https://chromium.googlesource.com/webm/libvpx
submodule_init="yes"
fi
done
+ [ -f ext/libvpx/upstream/configure ] || submodule_init="yes"
if test "$submodule_init" = "yes"; then
$GIT submodule init
fi
AC_PATH_PROG([GIT], [git])
AM_CONDITIONAL([HAVE_GIT], [test -n "$GIT"])
+AC_ARG_VAR([YASM], [Path to yasm program, if any])
+AC_PATH_PROG([YASM], [yasm])
+if test -z "$YASM"; then
+ AC_MSG_ERROR([yasm is needed to build libvpx sources])
+fi
+
dnl Initialize libtool
LT_PREREQ([2.2])
LT_INIT
docs/reference/plugins/Makefile
docs/reference/plugins/plugins-docs.xml
ext/Makefile
+ ext/libvpx/Makefile
gst-libs/Makefile
gst-libs/gst/Makefile
gst-libs/gst/base/Makefile
+SUBDIRS = libvpx
+
EXTRA_DIST =
codecparsers_srcdir = \
--- /dev/null
+# Makefile.am - Rules for the built-in libvpx sources
+#
+# INTEL CONFIDENTIAL, FOR INTERNAL USE ONLY
+# Copyright (C) 2014 Intel Corporation
+# Author: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
+#
+# @BEGIN_LICENSE@
+# The source code contained or described herein and all documents
+# related to the source code ("Material") are owned by Intel
+# Corporation or its suppliers or licensors. Title to the Material
+# remains with Intel Corporation or its suppliers and licensors. The
+# Material contains trade secrets and proprietary and confidential
+# information of Intel or its suppliers and licensors. The Material
+# is protected by worldwide copyright and trade secret laws and
+# treaty provisions. No part of the Material may be used, copied,
+# reproduced, modified, published, uploaded, posted, transmitted,
+# distributed, or disclosed in any way without Intel’s prior express
+# written permission.
+#
+# No license under any patent, copyright, trade secret or other
+# intellectual property right is granted to or conferred upon you by
+# disclosure or delivery of the Materials, either expressly, by
+# implication, inducement, estoppel or otherwise. Any license under
+# such intellectual property rights must be express and approved by
+# Intel in writing.
+# @END_LICENSE@
+
+lib_LTLIBRARIES =
+if USE_LOCAL_CODEC_PARSERS_VP8
+lib_LTLIBRARIES += libgstcodecparsers_vpx.la
+endif
+
+gst_vpx_source_c = gstlibvpx.c
+gst_vpx_source_h = gstlibvpx.h
+
+vpx_upstream = upstream
+vpx_srcdir = $(srcdir)/$(vpx_upstream)
+vpx_builddir = $(builddir)/$(vpx_upstream)
+vpx_versions = libgstcodecparsers_vpx.vers
+
+vpx_cflags = \
+ -I$(vpx_srcdir) \
+ -I$(vpx_builddir) \
+ $(NULL)
+
+vpx_libs = \
+ -Wl,-Bsymbolic \
+ -Wl,--whole-archive \
+ -Wl,$(vpx_builddir)/libvpx.a \
+ -Wl,--no-whole-archive \
+ -Wl,--version-script,$(srcdir)/$(vpx_versions) \
+ -Wl,-lpthread \
+ -Wl,-lm \
+ $(NULL)
+
+libgstcodecparsers_vpx_la_SOURCES = $(gst_vpx_source_c)
+libgstcodecparsers_vpx_la_CFLAGS = $(vpx_cflags)
+libgstcodecparsers_vpx_la_DEPENDENCIES = vpx.build
+libgstcodecparsers_vpx_la_LINK = $(LINK) $(vpx_libs)
+EXTRA_libgstcodecparsers_vpx_la_DEPENDENCIES = $(srcdir)/$(vpx_versions)
+
+VPX_DEBUG = yes
+
+# Codecs
+VP8_DECODER = enable
+VP8_ENCODER = disable
+VP9_DECODER = disable
+VP9_ENCODER = disable
+
+clean-local: vpx.clean
+maintainer-clean-local: vpx.maintainer.clean
+
+vpx.build: vpx.configure.stamp
+ @$(MAKE) -C $(vpx_builddir)
+
+vpx.clean:
+ @[ -d $(vpx_builddir) ] && \
+ $(MAKE) -C $(vpx_builddir) clean || :
+ rm -f vpx.build.stamp vpx.configure.stamp
+
+vpx.maintainer.clean: vpx.clean
+ rm -rf $(vpx_builddir)
+
+vpx.configure.stamp:
+ @[ -d $(vpx_builddir) ] || mkdir $(vpx_builddir); \
+ cd $(vpx_builddir) ; \
+ test "$(VPX_DEBUG)" = "yes" && \
+ CONFIGURE_FLAGS="$$CONFIGURE_FLAGS --enable-debug" ; \
+ $(abs_srcdir)/$(vpx_upstream)/configure $$CONFIGURE_FLAGS \
+ --enable-static \
+ --enable-pic \
+ --disable-shared \
+ --$(VP8_DECODER)-vp8-decoder \
+ --$(VP8_ENCODER)-vp8-encoder \
+ --$(VP9_DECODER)-vp9-decoder \
+ --$(VP9_ENCODER)-vp9-encoder \
+ --enable-runtime-cpu-detect \
+ --disable-md5 \
+ --disable-examples \
+ --disable-docs \
+ --disable-unit-tests && \
+ cd .. && \
+ touch $@
+
+CLEANFILES = vpx.build.stamp
+
+# Files for packaging
+include $(srcdir)/sources.frag
+
+vpx_sources = \
+ $(vpx_srcdir)/AUTHORS \
+ $(vpx_srcdir)/CHANGELOG \
+ $(vpx_srcdir)/LICENSE \
+ $(vpx_srcdir)/PATENTS \
+ $(vpx_srcdir)/build/make/Makefile \
+ $(vpx_srcdir)/build/make/ads2gas.pl \
+ $(vpx_srcdir)/build/make/ads2gas_apple.pl \
+ $(vpx_srcdir)/build/make/configure.sh \
+ $(vpx_srcdir)/build/make/gen_asm_deps.sh \
+ $(vpx_srcdir)/build/make/obj_int_extract.c \
+ $(vpx_srcdir)/build/make/rtcd.sh \
+ $(vpx_srcdir)/build/make/version.sh \
+ $(vpx_srcdir)/configure \
+ $(vpx_srcdir)/vp8/common/rtcd_defs.sh \
+ $(vpx_srcdir)/vp9/common/vp9_rtcd_defs.sh \
+ $(vpx_srcdir)/vpx_scale/vpx_scale_rtcd.sh \
+ $(vpx_source_mak:%.mk=$(vpx_srcdir)/%.mk) \
+ $(vpx_source_c:%.c=$(vpx_srcdir)/%.c) \
+ $(vpx_source_h:%.h=$(vpx_srcdir)/%.h) \
+ $(vpx_source_asm:%.asm=$(vpx_srcdir)/%.asm) \
+ $(NULL)
+
+EXTRA_DIST = \
+ sources.frag \
+ $(gst_vpx_source_h) \
+ $(vpx_sources) \
+ $(vpx_versions) \
+ $(NULL)
+
+# Extra clean files so that maintainer-clean removes *everything*
+MAINTAINERCLEANFILES = Makefile.in vpx.configure.stamp
--- /dev/null
+/*
+ * gstlibvpx.c - GStreamer/libvpx glue
+ *
+ * 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 <string.h>
+#include <assert.h>
+#include <vp8/common/entropy.h>
+#include <vp8/common/entropymv.h>
+#include <vp8/common/default_coef_probs.h>
+#include <vp8/decoder/dboolhuff.h>
+#include "gstlibvpx.h"
+
+#define BOOL_DECODER_CAST(bd) \
+ ((BOOL_DECODER *)(&(bd)->private[1]))
+
+bool
+vp8_bool_decoder_init (vp8_bool_decoder * bd, const uint8_t * buf,
+ unsigned int buf_size)
+{
+ assert ((sizeof (*bd) - sizeof (bd->private[0])) >= sizeof (BOOL_DECODER));
+
+ bd->private[0] = (uintptr_t)buf;
+ return vp8dx_start_decode (BOOL_DECODER_CAST (bd), buf, buf_size,
+ NULL, NULL) == 0;
+}
+
+int
+vp8_bool_decoder_read (vp8_bool_decoder * bd, uint8_t prob)
+{
+ return vp8dx_decode_bool (BOOL_DECODER_CAST (bd), prob);
+}
+
+int
+vp8_bool_decoder_read_literal (vp8_bool_decoder * bd, int bits)
+{
+ return vp8_decode_value (BOOL_DECODER_CAST (bd), bits);
+}
+
+unsigned int
+vp8_bool_decoder_get_pos (vp8_bool_decoder * bd_)
+{
+ BOOL_DECODER *const bd = BOOL_DECODER_CAST (bd_);
+
+ return ((uintptr_t)bd->user_buffer - bd_->private[0]) * 8 - (8 + bd->count);
+}
+
+void
+vp8_bool_decoder_get_state (vp8_bool_decoder * bd_,
+ vp8_bool_decoder_state * state)
+{
+ BOOL_DECODER *const bd = BOOL_DECODER_CAST (bd_);
+
+ if (bd->count < 0)
+ vp8dx_bool_decoder_fill (bd);
+
+ state->range = bd->range;
+ state->value = (uint8_t) ((bd->value) >> (VP8_BD_VALUE_SIZE - 8));
+ state->count = (8 + bd->count) % 8;
+}
+
+void
+vp8_init_token_update_probs (uint8_t
+ probs[BLOCK_TYPES][COEF_BANDS][PREV_COEF_CONTEXTS][ENTROPY_NODES])
+{
+ memcpy (probs, vp8_coef_update_probs, sizeof (vp8_coef_update_probs));
+}
+
+void
+vp8_init_default_token_probs (uint8_t
+ probs[BLOCK_TYPES][COEF_BANDS][PREV_COEF_CONTEXTS][ENTROPY_NODES])
+{
+ memcpy (probs, default_coef_probs, sizeof (default_coef_probs));
+}
+
+void
+vp8_init_mv_update_probs (uint8_t probs[2][MVPcount])
+{
+ memcpy (probs[0], vp8_mv_update_probs[0].prob,
+ sizeof (vp8_mv_update_probs[0].prob));
+ memcpy (probs[1], vp8_mv_update_probs[1].prob,
+ sizeof (vp8_mv_update_probs[1].prob));
+}
+
+void
+vp8_init_default_mv_probs (uint8_t probs[2][MVPcount])
+{
+ memcpy (probs[0], vp8_default_mv_context[0].prob,
+ sizeof (vp8_default_mv_context[0].prob));
+ memcpy (probs[1], vp8_default_mv_context[1].prob,
+ sizeof (vp8_default_mv_context[1].prob));
+}
+
+void
+vp8_init_default_intra_mode_probs (uint8_t y_probs[VP8_YMODES-1],
+ uint8_t uv_probs[VP8_UV_MODES-1])
+{
+ extern const uint8_t vp8_kf_ymode_prob[VP8_YMODES-1];
+ extern const uint8_t vp8_kf_uv_mode_prob[VP8_UV_MODES-1];
+
+ memcpy (y_probs, vp8_kf_ymode_prob, sizeof (vp8_kf_ymode_prob));
+ memcpy (uv_probs, vp8_kf_uv_mode_prob, sizeof (vp8_kf_uv_mode_prob));
+}
+
+void
+vp8_init_default_inter_mode_probs (uint8_t y_probs[VP8_YMODES-1],
+ uint8_t uv_probs[VP8_UV_MODES-1])
+{
+ extern const uint8_t vp8_ymode_prob[VP8_YMODES-1];
+ extern const uint8_t vp8_uv_mode_prob[VP8_UV_MODES-1];
+
+ memcpy (y_probs, vp8_ymode_prob, sizeof (vp8_ymode_prob));
+ memcpy (uv_probs, vp8_uv_mode_prob, sizeof (vp8_uv_mode_prob));
+}
--- /dev/null
+/*
+ * gstlibvpx.h - GStreamer/libvpx glue
+ *
+ * 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.
+ */
+
+#ifndef GST_LIBVPX_H
+#define GST_LIBVPX_H
+
+#include <stdint.h>
+#include <stdbool.h>
+
+typedef struct _vp8_bool_decoder vp8_bool_decoder;
+typedef struct _vp8_bool_decoder_state vp8_bool_decoder_state;
+
+struct _vp8_bool_decoder {
+ uintptr_t private[16];
+};
+
+struct _vp8_bool_decoder_state {
+ uint8_t range; /* Current "range" value (<= 255) */
+ uint8_t value; /* Current "value" value */
+ uint8_t count; /* Number of bits shifted out of value (<= 7) */
+};
+
+bool
+vp8_bool_decoder_init (vp8_bool_decoder * bd, const uint8_t * buf,
+ unsigned int buf_size);
+
+int
+vp8_bool_decoder_read (vp8_bool_decoder * bd, uint8_t prob);
+
+int
+vp8_bool_decoder_read_literal (vp8_bool_decoder * bd, int bits);
+
+unsigned int
+vp8_bool_decoder_get_pos (vp8_bool_decoder * bd);
+
+void
+vp8_bool_decoder_get_state (vp8_bool_decoder * bd,
+ vp8_bool_decoder_state * state);
+
+void
+vp8_init_token_update_probs (uint8_t probs[4][8][3][11]);
+
+void
+vp8_init_default_token_probs (uint8_t probs[4][8][3][11]);
+
+void
+vp8_init_mv_update_probs (uint8_t probs[2][19]);
+
+void
+vp8_init_default_mv_probs (uint8_t probs[2][19]);
+
+void
+vp8_init_default_intra_mode_probs (uint8_t y_probs[4], uint8_t uv_probs[3]);
+
+void
+vp8_init_default_inter_mode_probs (uint8_t y_probs[4], uint8_t uv_probs[3]);
+
+#endif /* GST_LIBVPX_H */
--- /dev/null
+GSTREAMER {
+global:
+ vp8_bool_decoder_init;
+ vp8_bool_decoder_read;
+ vp8_bool_decoder_read_literal;
+ vp8_bool_decoder_get_pos;
+ vp8_bool_decoder_get_state;
+ vp8_init_token_update_probs;
+ vp8_init_default_token_probs;
+ vp8_init_mv_update_probs;
+ vp8_init_default_mv_probs;
+ vp8_init_default_intra_mode_probs;
+ vp8_init_default_inter_mode_probs;
+local:
+ *;
+};
--- /dev/null
+# sources.frag - Generated list of source files for libvpx (-*- makefile -*-)
+#
+# INTEL CONFIDENTIAL, FOR INTERNAL USE ONLY
+# Copyright (C) 2014 Intel Corporation
+# Author: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
+#
+# @BEGIN_LICENSE@
+# The source code contained or described herein and all documents
+# related to the source code ("Material") are owned by Intel
+# Corporation or its suppliers or licensors. Title to the Material
+# remains with Intel Corporation or its suppliers and licensors. The
+# Material contains trade secrets and proprietary and confidential
+# information of Intel or its suppliers and licensors. The Material
+# is protected by worldwide copyright and trade secret laws and
+# treaty provisions. No part of the Material may be used, copied,
+# reproduced, modified, published, uploaded, posted, transmitted,
+# distributed, or disclosed in any way without Intel’s prior express
+# written permission.
+#
+# No license under any patent, copyright, trade secret or other
+# intellectual property right is granted to or conferred upon you by
+# disclosure or delivery of the Materials, either expressly, by
+# implication, inducement, estoppel or otherwise. Any license under
+# such intellectual property rights must be express and approved by
+# Intel in writing.
+# @END_LICENSE@
+
+vpx_source_mak = \
+ docs.mk \
+ examples.mk \
+ libs.mk \
+ solution.mk \
+ test/test.mk \
+ vp8/vp8_common.mk \
+ vp8/vp8cx.mk \
+ vp8/vp8cx_arm.mk \
+ vp8/vp8dx.mk \
+ vp9/vp9_common.mk \
+ vp9/vp9cx.mk \
+ vp9/vp9dx.mk \
+ vpx/vpx_codec.mk \
+ vpx_mem/vpx_mem.mk \
+ vpx_ports/vpx_ports.mk \
+ vpx_scale/vpx_scale.mk \
+ $(NULL)
+
+vpx_source_c = \
+ vp8/common/alloccommon.c \
+ vp8/common/blockd.c \
+ vp8/common/debugmodes.c \
+ vp8/common/dequantize.c \
+ vp8/common/entropy.c \
+ vp8/common/entropymode.c \
+ vp8/common/entropymv.c \
+ vp8/common/extend.c \
+ vp8/common/filter.c \
+ vp8/common/findnearmv.c \
+ vp8/common/generic/systemdependent.c \
+ vp8/common/idct_blk.c \
+ vp8/common/idctllm.c \
+ vp8/common/loopfilter.c \
+ vp8/common/loopfilter_filters.c \
+ vp8/common/mbpitch.c \
+ vp8/common/mfqe.c \
+ vp8/common/modecont.c \
+ vp8/common/postproc.c \
+ vp8/common/quant_common.c \
+ vp8/common/reconinter.c \
+ vp8/common/reconintra.c \
+ vp8/common/reconintra4x4.c \
+ vp8/common/rtcd.c \
+ vp8/common/sad_c.c \
+ vp8/common/setupintrarecon.c \
+ vp8/common/swapyv12buffer.c \
+ vp8/common/treecoder.c \
+ vp8/common/variance_c.c \
+ vp8/common/x86/filter_x86.c \
+ vp8/common/x86/idct_blk_mmx.c \
+ vp8/common/x86/idct_blk_sse2.c \
+ vp8/common/x86/loopfilter_x86.c \
+ vp8/common/x86/postproc_x86.c \
+ vp8/common/x86/recon_wrapper_sse2.c \
+ vp8/common/x86/variance_mmx.c \
+ vp8/common/x86/variance_sse2.c \
+ vp8/common/x86/variance_ssse3.c \
+ vp8/common/x86/vp8_asm_stubs.c \
+ vp8/decoder/dboolhuff.c \
+ vp8/decoder/decodemv.c \
+ vp8/decoder/decodframe.c \
+ vp8/decoder/detokenize.c \
+ vp8/decoder/onyxd_if.c \
+ vp8/decoder/threading.c \
+ vp8/vp8_dx_iface.c \
+ vp9/common/generic/vp9_systemdependent.c \
+ vp9/common/vp9_alloccommon.c \
+ vp9/common/vp9_common_data.c \
+ vp9/common/vp9_convolve.c \
+ vp9/common/vp9_debugmodes.c \
+ vp9/common/vp9_entropy.c \
+ vp9/common/vp9_entropymode.c \
+ vp9/common/vp9_entropymv.c \
+ vp9/common/vp9_extend.c \
+ vp9/common/vp9_filter.c \
+ vp9/common/vp9_findnearmv.c \
+ vp9/common/vp9_idct.c \
+ vp9/common/vp9_loopfilter.c \
+ vp9/common/vp9_loopfilter_filters.c \
+ vp9/common/vp9_mvref_common.c \
+ vp9/common/vp9_pred_common.c \
+ vp9/common/vp9_quant_common.c \
+ vp9/common/vp9_reconinter.c \
+ vp9/common/vp9_reconintra.c \
+ vp9/common/vp9_rtcd.c \
+ vp9/common/vp9_scale.c \
+ vp9/common/vp9_scan.c \
+ vp9/common/vp9_seg_common.c \
+ vp9/common/vp9_tile_common.c \
+ vp9/common/vp9_treecoder.c \
+ vp9/common/x86/vp9_asm_stubs.c \
+ vp9/common/x86/vp9_idct_intrin_sse2.c \
+ vp9/common/x86/vp9_loopfilter_intrin_sse2.c \
+ vp9/decoder/vp9_dboolhuff.c \
+ vp9/decoder/vp9_decodemv.c \
+ vp9/decoder/vp9_decodframe.c \
+ vp9/decoder/vp9_detokenize.c \
+ vp9/decoder/vp9_dsubexp.c \
+ vp9/decoder/vp9_onyxd_if.c \
+ vp9/decoder/vp9_thread.c \
+ vp9/vp9_dx_iface.c \
+ vpx/src/vpx_codec.c \
+ vpx/src/vpx_decoder.c \
+ vpx/src/vpx_encoder.c \
+ vpx/src/vpx_image.c \
+ vpx_mem/vpx_mem.c \
+ vpx_ports/x86_cpuid.c \
+ vpx_scale/generic/gen_scalers.c \
+ vpx_scale/generic/vpx_scale.c \
+ vpx_scale/generic/yv12config.c \
+ vpx_scale/generic/yv12extend.c \
+ vpx_scale/vpx_scale_asm_offsets.c \
+ vpx_scale/vpx_scale_rtcd.c \
+ $(NULL)
+
+vpx_source_h = \
+ vp8/common/alloccommon.h \
+ vp8/common/blockd.h \
+ vp8/common/coefupdateprobs.h \
+ vp8/common/common.h \
+ vp8/common/default_coef_probs.h \
+ vp8/common/entropy.h \
+ vp8/common/entropymode.h \
+ vp8/common/entropymv.h \
+ vp8/common/extend.h \
+ vp8/common/filter.h \
+ vp8/common/findnearmv.h \
+ vp8/common/header.h \
+ vp8/common/invtrans.h \
+ vp8/common/loopfilter.h \
+ vp8/common/modecont.h \
+ vp8/common/mv.h \
+ vp8/common/onyxc_int.h \
+ vp8/common/onyxd.h \
+ vp8/common/postproc.h \
+ vp8/common/ppflags.h \
+ vp8/common/pragmas.h \
+ vp8/common/quant_common.h \
+ vp8/common/reconinter.h \
+ vp8/common/reconintra4x4.h \
+ vp8/common/setupintrarecon.h \
+ vp8/common/swapyv12buffer.h \
+ vp8/common/systemdependent.h \
+ vp8/common/threading.h \
+ vp8/common/treecoder.h \
+ vp8/common/variance.h \
+ vp8/common/vp8_entropymodedata.h \
+ vp8/common/x86/filter_x86.h \
+ vp8/decoder/dboolhuff.h \
+ vp8/decoder/decodemv.h \
+ vp8/decoder/decoderthreading.h \
+ vp8/decoder/detokenize.h \
+ vp8/decoder/onyxd_int.h \
+ vp8/decoder/treereader.h \
+ vp9/common/vp9_alloccommon.h \
+ vp9/common/vp9_blockd.h \
+ vp9/common/vp9_common.h \
+ vp9/common/vp9_common_data.h \
+ vp9/common/vp9_convolve.h \
+ vp9/common/vp9_default_coef_probs.h \
+ vp9/common/vp9_entropy.h \
+ vp9/common/vp9_entropymode.h \
+ vp9/common/vp9_entropymv.h \
+ vp9/common/vp9_enums.h \
+ vp9/common/vp9_extend.h \
+ vp9/common/vp9_filter.h \
+ vp9/common/vp9_findnearmv.h \
+ vp9/common/vp9_idct.h \
+ vp9/common/vp9_loopfilter.h \
+ vp9/common/vp9_mv.h \
+ vp9/common/vp9_mvref_common.h \
+ vp9/common/vp9_onyxc_int.h \
+ vp9/common/vp9_ppflags.h \
+ vp9/common/vp9_pred_common.h \
+ vp9/common/vp9_quant_common.h \
+ vp9/common/vp9_reconinter.h \
+ vp9/common/vp9_reconintra.h \
+ vp9/common/vp9_scale.h \
+ vp9/common/vp9_scan.h \
+ vp9/common/vp9_seg_common.h \
+ vp9/common/vp9_systemdependent.h \
+ vp9/common/vp9_tile_common.h \
+ vp9/common/vp9_treecoder.h \
+ vp9/decoder/vp9_dboolhuff.h \
+ vp9/decoder/vp9_decodemv.h \
+ vp9/decoder/vp9_decodframe.h \
+ vp9/decoder/vp9_detokenize.h \
+ vp9/decoder/vp9_dsubexp.h \
+ vp9/decoder/vp9_onyxd.h \
+ vp9/decoder/vp9_onyxd_int.h \
+ vp9/decoder/vp9_read_bit_buffer.h \
+ vp9/decoder/vp9_thread.h \
+ vp9/decoder/vp9_thread.h \
+ vp9/decoder/vp9_treereader.h \
+ vp9/vp9_iface_common.h \
+ vpx/internal/vpx_codec_internal.h \
+ vpx/vp8.h \
+ vpx/vp8dx.h \
+ vpx/vpx_codec.h \
+ vpx/vpx_decoder.h \
+ vpx/vpx_encoder.h \
+ vpx/vpx_image.h \
+ vpx/vpx_integer.h \
+ vpx_mem/include/vpx_mem_intrnl.h \
+ vpx_mem/vpx_mem.h \
+ vpx_ports/asm_offsets.h \
+ vpx_ports/emmintrin_compat.h \
+ vpx_ports/mem.h \
+ vpx_ports/vpx_once.h \
+ vpx_ports/vpx_timer.h \
+ vpx_ports/x86.h \
+ vpx_scale/vpx_scale.h \
+ vpx_scale/yv12config.h \
+ $(NULL)
+
+vpx_source_asm = \
+ third_party/x86inc/x86inc.asm \
+ vp8/common/x86/dequantize_mmx.asm \
+ vp8/common/x86/idctllm_mmx.asm \
+ vp8/common/x86/idctllm_sse2.asm \
+ vp8/common/x86/iwalsh_mmx.asm \
+ vp8/common/x86/iwalsh_sse2.asm \
+ vp8/common/x86/loopfilter_block_sse2.asm \
+ vp8/common/x86/loopfilter_mmx.asm \
+ vp8/common/x86/loopfilter_sse2.asm \
+ vp8/common/x86/mfqe_sse2.asm \
+ vp8/common/x86/postproc_mmx.asm \
+ vp8/common/x86/postproc_sse2.asm \
+ vp8/common/x86/recon_mmx.asm \
+ vp8/common/x86/recon_sse2.asm \
+ vp8/common/x86/sad_mmx.asm \
+ vp8/common/x86/sad_sse2.asm \
+ vp8/common/x86/sad_sse3.asm \
+ vp8/common/x86/sad_sse4.asm \
+ vp8/common/x86/sad_ssse3.asm \
+ vp8/common/x86/subpixel_mmx.asm \
+ vp8/common/x86/subpixel_sse2.asm \
+ vp8/common/x86/subpixel_ssse3.asm \
+ vp8/common/x86/variance_impl_mmx.asm \
+ vp8/common/x86/variance_impl_sse2.asm \
+ vp8/common/x86/variance_impl_ssse3.asm \
+ vp9/common/x86/vp9_copy_sse2.asm \
+ vp9/common/x86/vp9_intrapred_sse2.asm \
+ vp9/common/x86/vp9_intrapred_ssse3.asm \
+ vp9/common/x86/vp9_loopfilter_mmx.asm \
+ vp9/common/x86/vp9_subpixel_8t_sse2.asm \
+ vp9/common/x86/vp9_subpixel_8t_ssse3.asm \
+ vpx_ports/emms.asm \
+ vpx_ports/x86_abi_support.asm \
+ $(NULL)
--- /dev/null
+Subproject commit 2e88f2f2ec777259bda1714e72f1ecd2519bceb5
$(GST_LIBS) \
$(NULL)
+add_source_c =
+add_source_h =
gen_source_c = parserutils.c nalutils.c
gen_source_h = parserutils.h nalutils.h
if USE_LOCAL_CODEC_PARSERS_VP8
gen_source_c += gstvp8parser.c
gen_source_h += gstvp8parser.h gstvp8rangedecoder.h vp8utils.h
+#gen_source_c += dboolhuff.c gstvp8rangedecoder.c vp8utils.c
+#gen_source_h += dboolhuff.h
+add_source_c += gstvaapilibvpx.c
-gen_source_c += dboolhuff.c gstvp8rangedecoder.c vp8utils.c
-gen_source_h += dboolhuff.h
+libgstvaapi_codecparsers_cflags += \
+ -I$(top_srcdir)/ext/libvpx \
+ -I$(top_srcdir)/ext/libvpx/upstream \
+ -I$(top_builddir)/ext/libvpx/upstream
+
+libgstvaapi_codecparsers_libs += \
+ $(top_builddir)/ext/libvpx/libgstcodecparsers_vpx.la
endif
GENFILES = \
nodist_libgstvaapi_codecparsers_la_SOURCES = \
$(gen_source_c) \
+ $(add_source_c) \
$(NULL)
libgstvaapi_codecparsers_la_CFLAGS = \
$(LN_S) -f $< $@
$(gen_source_h): %.h: $(local_codecparsers_srcdir)/%.h
$(LN_S) -f $< $@
+$(top_builddir)/ext/libvpx/libgstcodecparsers_vpx.la:
+ $(MAKE) -C $(top_builddir)/ext/libvpx
+
+EXTRA_DIST = \
+ $(add_source_c) \
+ $(NULL)
DISTCLEANFILES = $(GENFILES) .timestamp.symlinks
--- /dev/null
+/*
+ * gstvaapilibvpx.c - libvpx wrapper for gstreamer-vaapi
+ *
+ * Copyright (C) 2014 Intel Corporation
+ * Author: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include "gstvp8rangedecoder.h"
+#include "vp8utils.h"
+#include "gstlibvpx.h"
+
+#define BOOL_DECODER_CAST(rd) \
+ ((vp8_bool_decoder *)(&(rd)->_gst_reserved[0]))
+
+#define BOOL_DECODER_STATE_CAST(s) \
+ ((vp8_bool_decoder_state *)(s))
+
+gboolean
+gst_vp8_range_decoder_init (GstVp8RangeDecoder * rd, const guchar * buf,
+ guint buf_size)
+{
+ vp8_bool_decoder *const bd = BOOL_DECODER_CAST (rd);
+
+ g_return_val_if_fail (sizeof (rd->_gst_reserved) >= sizeof (*bd), FALSE);
+
+ rd->buf = buf;
+ rd->buf_size = buf_size;
+ return vp8_bool_decoder_init (bd, buf, buf_size);
+}
+
+gint
+gst_vp8_range_decoder_read (GstVp8RangeDecoder * rd, guint8 prob)
+{
+ return vp8_bool_decoder_read (BOOL_DECODER_CAST (rd), prob);
+}
+
+gint
+gst_vp8_range_decoder_read_literal (GstVp8RangeDecoder * rd, gint bits)
+{
+ return vp8_bool_decoder_read_literal (BOOL_DECODER_CAST (rd), bits);
+}
+
+guint
+gst_vp8_range_decoder_get_pos (GstVp8RangeDecoder * rd)
+{
+ return vp8_bool_decoder_get_pos (BOOL_DECODER_CAST (rd));
+}
+
+void
+gst_vp8_range_decoder_get_state (GstVp8RangeDecoder * rd,
+ GstVp8RangeDecoderState * state)
+{
+ vp8_bool_decoder_get_state (BOOL_DECODER_CAST (rd),
+ BOOL_DECODER_STATE_CAST (state));
+}
+
+void
+gst_vp8_token_update_probs_init (GstVp8TokenProbs * probs)
+{
+ vp8_init_token_update_probs (probs->prob);
+}
+
+void
+gst_vp8_token_probs_init_defaults (GstVp8TokenProbs * probs)
+{
+ vp8_init_default_token_probs (probs->prob);
+}
+
+void
+gst_vp8_mv_update_probs_init (GstVp8MvProbs * probs)
+{
+ vp8_init_mv_update_probs (probs->prob);
+}
+
+void
+gst_vp8_mv_probs_init_defaults (GstVp8MvProbs * probs)
+{
+ vp8_init_default_mv_probs (probs->prob);
+}
+
+void
+gst_vp8_mode_probs_init_defaults (GstVp8ModeProbs * probs, gboolean key_frame)
+{
+ if (key_frame) {
+ vp8_init_default_intra_mode_probs (probs->y_prob, probs->uv_prob);
+ } else {
+ vp8_init_default_inter_mode_probs (probs->y_prob, probs->uv_prob);
+ }
+}