mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-19 14:56:36 +00:00
vp8: use range decoder from libvpx.
Add libvpx submodule that tracks the upstream version 1.3.0. This is needed to build a libgstcodecparsers_vpx.so library with all symbols placed into the GSTREAMER namespace.
This commit is contained in:
parent
c9299bf18b
commit
b36eade7f3
12 changed files with 756 additions and 2 deletions
3
.gitmodules
vendored
3
.gitmodules
vendored
|
@ -4,3 +4,6 @@
|
|||
[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
|
||||
|
|
|
@ -26,6 +26,7 @@ else
|
|||
submodule_init="yes"
|
||||
fi
|
||||
done
|
||||
[ -f ext/libvpx/upstream/configure ] || submodule_init="yes"
|
||||
if test "$submodule_init" = "yes"; then
|
||||
$GIT submodule init
|
||||
fi
|
||||
|
|
|
@ -95,6 +95,12 @@ AC_ARG_VAR([GIT], [Path to git program, if any])
|
|||
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
|
||||
|
@ -834,6 +840,7 @@ debian.upstream/libgstvaapi-x11.install.in
|
|||
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
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
SUBDIRS = libvpx
|
||||
|
||||
EXTRA_DIST =
|
||||
|
||||
codecparsers_srcdir = \
|
||||
|
|
141
ext/libvpx/Makefile.am
Normal file
141
ext/libvpx/Makefile.am
Normal file
|
@ -0,0 +1,141 @@
|
|||
# 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
|
119
ext/libvpx/gstlibvpx.c
Normal file
119
ext/libvpx/gstlibvpx.c
Normal file
|
@ -0,0 +1,119 @@
|
|||
/*
|
||||
* 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));
|
||||
}
|
65
ext/libvpx/gstlibvpx.h
Normal file
65
ext/libvpx/gstlibvpx.h
Normal file
|
@ -0,0 +1,65 @@
|
|||
/*
|
||||
* 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 */
|
16
ext/libvpx/libgstcodecparsers_vpx.vers
Normal file
16
ext/libvpx/libgstcodecparsers_vpx.vers
Normal file
|
@ -0,0 +1,16 @@
|
|||
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:
|
||||
*;
|
||||
};
|
278
ext/libvpx/sources.frag
Normal file
278
ext/libvpx/sources.frag
Normal file
|
@ -0,0 +1,278 @@
|
|||
# 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)
|
1
ext/libvpx/upstream
Submodule
1
ext/libvpx/upstream
Submodule
|
@ -0,0 +1 @@
|
|||
Subproject commit 2e88f2f2ec777259bda1714e72f1ecd2519bceb5
|
|
@ -18,6 +18,8 @@ libgstvaapi_codecparsers_libs = \
|
|||
$(GST_LIBS) \
|
||||
$(NULL)
|
||||
|
||||
add_source_c =
|
||||
add_source_h =
|
||||
gen_source_c = parserutils.c nalutils.c
|
||||
gen_source_h = parserutils.h nalutils.h
|
||||
|
||||
|
@ -43,9 +45,17 @@ endif
|
|||
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 = \
|
||||
|
@ -57,6 +67,7 @@ nodist_EXTRA_libgstvaapi_codecparsers_la_SOURCES = dummy.c
|
|||
|
||||
nodist_libgstvaapi_codecparsers_la_SOURCES = \
|
||||
$(gen_source_c) \
|
||||
$(add_source_c) \
|
||||
$(NULL)
|
||||
|
||||
libgstvaapi_codecparsers_la_CFLAGS = \
|
||||
|
@ -80,6 +91,12 @@ $(gen_source_c): %.c: $(local_codecparsers_srcdir)/%.c $(gen_source_h)
|
|||
$(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
|
||||
|
||||
|
|
104
gst-libs/gst/codecparsers/gstvaapilibvpx.c
Normal file
104
gst-libs/gst/codecparsers/gstvaapilibvpx.c
Normal file
|
@ -0,0 +1,104 @@
|
|||
/*
|
||||
* 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);
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue