Compare commits
	
		
			1 Commits
		
	
	
		
			sandbox/Ji
			...
			sandbox/jk
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					976752507a | 
							
								
								
									
										291
									
								
								build/make/rtcd.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										291
									
								
								build/make/rtcd.sh
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,291 @@
 | 
				
			|||||||
 | 
					#!/bin/sh
 | 
				
			||||||
 | 
					self=$0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					usage() {
 | 
				
			||||||
 | 
					  cat <<EOF >&2
 | 
				
			||||||
 | 
					Usage: $self [options] FILE
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Reads the Run Time CPU Detections definitions from FILE and generates a
 | 
				
			||||||
 | 
					C header file on stdout.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Options:
 | 
				
			||||||
 | 
					  --arch=ARCH   Architecture to generate defs for (required)
 | 
				
			||||||
 | 
					  --disable-EXT Disable support for EXT extensions
 | 
				
			||||||
 | 
					  --sym=SYMBOL  Unique symbol to use for RTCD initialization function
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					EOF
 | 
				
			||||||
 | 
					  exit 1
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					die() {
 | 
				
			||||||
 | 
					  echo "$@" >&2
 | 
				
			||||||
 | 
					  exit 1
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					die_argument_required() {
 | 
				
			||||||
 | 
					  die "Option $opt requires argument"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					for opt; do
 | 
				
			||||||
 | 
					  optval="${opt#*=}"
 | 
				
			||||||
 | 
					  case "$opt" in
 | 
				
			||||||
 | 
					    --arch) die_argument_required;;
 | 
				
			||||||
 | 
					    --arch=*) arch=${optval};;
 | 
				
			||||||
 | 
					    --disable-*) eval "disable_${opt#--disable-}=true";;
 | 
				
			||||||
 | 
					    --sym) die_argument_required;;
 | 
				
			||||||
 | 
					    --sym=*) symbol=${optval};;
 | 
				
			||||||
 | 
					    --rtcd=*) CONFIG_RUNTIME_CPU_DETECT=${optval};;
 | 
				
			||||||
 | 
					    -h|--help)
 | 
				
			||||||
 | 
					      usage
 | 
				
			||||||
 | 
					      ;;
 | 
				
			||||||
 | 
					    -*)
 | 
				
			||||||
 | 
					      die "Unrecognized option: ${opt%%=*}"
 | 
				
			||||||
 | 
					      ;;
 | 
				
			||||||
 | 
					    *)
 | 
				
			||||||
 | 
					      defs_file="$defs_file $opt"
 | 
				
			||||||
 | 
					      ;;
 | 
				
			||||||
 | 
					  esac
 | 
				
			||||||
 | 
					  shift
 | 
				
			||||||
 | 
					done
 | 
				
			||||||
 | 
					for f in $defs_file; do [ -f "$f" ] || usage; done
 | 
				
			||||||
 | 
					[ -n "$arch" ] || usage
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Routines for the RTCD DSL to call
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					prototype() {
 | 
				
			||||||
 | 
					  local rtyp="$1"
 | 
				
			||||||
 | 
					  local fn="$2"
 | 
				
			||||||
 | 
					  local args="$3"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  eval "${2}_rtyp='$1'"
 | 
				
			||||||
 | 
					  eval "${2}_args='$3'"
 | 
				
			||||||
 | 
					  ALL_FUNCS="$ALL_FUNCS $fn"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					specialize() {
 | 
				
			||||||
 | 
					  local fn="$1"
 | 
				
			||||||
 | 
					  shift
 | 
				
			||||||
 | 
					  for opt in c "$@"; do
 | 
				
			||||||
 | 
					    eval "${fn}_${opt}=${fn}_${opt}"
 | 
				
			||||||
 | 
					  done
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					require() {
 | 
				
			||||||
 | 
					  for fn in $ALL_FUNCS; do
 | 
				
			||||||
 | 
					    for opt in "$@"; do
 | 
				
			||||||
 | 
					      local ofn=$(eval "echo \$${fn}_${opt}")
 | 
				
			||||||
 | 
					      [ -z "$ofn" ] && continue
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      # if we already have a default, then we can undefine it, as we know
 | 
				
			||||||
 | 
					      # we can do better.
 | 
				
			||||||
 | 
					      local best=$(eval "echo \$${fn}_default")
 | 
				
			||||||
 | 
					      [ -n "$best" ] && eval "unset $best"
 | 
				
			||||||
 | 
					      eval "${fn}_default=${fn}_${opt}"
 | 
				
			||||||
 | 
					    done
 | 
				
			||||||
 | 
					  done
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					forward_decls() {
 | 
				
			||||||
 | 
					  ALL_FORWARD_DECLS="$ALL_FORWARD_DECLS $1"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Include the user's directives
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					for f in $defs_file; do
 | 
				
			||||||
 | 
					  . $f
 | 
				
			||||||
 | 
					done
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Process the directives according to the command line
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					process_forward_decls() {
 | 
				
			||||||
 | 
					  for fn in $ALL_FORWARD_DECLS; do
 | 
				
			||||||
 | 
					    eval $fn
 | 
				
			||||||
 | 
					  done
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					determine_indirection() {
 | 
				
			||||||
 | 
					  [ "$CONFIG_RUNTIME_CPU_DETECT" = "yes" ] || require $ALL_ARCHS
 | 
				
			||||||
 | 
					  for fn in $ALL_FUNCS; do
 | 
				
			||||||
 | 
					    local n=""
 | 
				
			||||||
 | 
					    local rtyp=$(eval "echo \$${fn}_rtyp")
 | 
				
			||||||
 | 
					    local args=$(eval "echo \$${fn}_args")
 | 
				
			||||||
 | 
					    local dfn=$(eval "echo \$${fn}_default")
 | 
				
			||||||
 | 
					    dfn=$(eval "echo \$${dfn}")
 | 
				
			||||||
 | 
					    for opt in "$@"; do
 | 
				
			||||||
 | 
					      local ofn=$(eval "echo \$${fn}_${opt}")
 | 
				
			||||||
 | 
					      [ -z "$ofn" ] && continue
 | 
				
			||||||
 | 
					      n="${n}x"
 | 
				
			||||||
 | 
					    done
 | 
				
			||||||
 | 
					    if [ "$n" = "x" ]; then
 | 
				
			||||||
 | 
					      eval "${fn}_indirect=false"
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					      eval "${fn}_indirect=true"
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    echo
 | 
				
			||||||
 | 
					  done
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					declare_function_pointers() {
 | 
				
			||||||
 | 
					  for fn in $ALL_FUNCS; do
 | 
				
			||||||
 | 
					    local n=""
 | 
				
			||||||
 | 
					    local rtyp=$(eval "echo \$${fn}_rtyp")
 | 
				
			||||||
 | 
					    local args=$(eval "echo \$${fn}_args")
 | 
				
			||||||
 | 
					    local dfn=$(eval "echo \$${fn}_default")
 | 
				
			||||||
 | 
					    dfn=$(eval "echo \$${dfn}")
 | 
				
			||||||
 | 
					    for opt in "$@"; do
 | 
				
			||||||
 | 
					      local ofn=$(eval "echo \$${fn}_${opt}")
 | 
				
			||||||
 | 
					      [ -z "$ofn" ] && continue
 | 
				
			||||||
 | 
					      n="${n}x"
 | 
				
			||||||
 | 
					      echo "$rtyp ${ofn}($args);"
 | 
				
			||||||
 | 
					    done
 | 
				
			||||||
 | 
					    if [ "$n" = "x" ]; then
 | 
				
			||||||
 | 
					      echo "#define ${fn} ${dfn}"
 | 
				
			||||||
 | 
					    else
 | 
				
			||||||
 | 
					      echo "RTCD_EXTERN $rtyp (*${fn})($args);"
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					    echo
 | 
				
			||||||
 | 
					  done
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					set_function_pointers() {
 | 
				
			||||||
 | 
					  for fn in $ALL_FUNCS; do
 | 
				
			||||||
 | 
					    local n=""
 | 
				
			||||||
 | 
					    local rtyp=$(eval "echo \$${fn}_rtyp")
 | 
				
			||||||
 | 
					    local args=$(eval "echo \$${fn}_args")
 | 
				
			||||||
 | 
					    local dfn=$(eval "echo \$${fn}_default")
 | 
				
			||||||
 | 
					    dfn=$(eval "echo \$${dfn}")
 | 
				
			||||||
 | 
					    if $(eval "echo \$${fn}_indirect"); then
 | 
				
			||||||
 | 
					      echo "    $fn = $dfn;"
 | 
				
			||||||
 | 
					      for opt in "$@"; do
 | 
				
			||||||
 | 
					        local ofn=$(eval "echo \$${fn}_${opt}")
 | 
				
			||||||
 | 
					        [ -z "$ofn" ] && continue
 | 
				
			||||||
 | 
					        [ "$ofn" = "$dfn" ] && continue;
 | 
				
			||||||
 | 
					        echo "    if (have_${opt}) $fn = $ofn;"
 | 
				
			||||||
 | 
					      done
 | 
				
			||||||
 | 
					      echo
 | 
				
			||||||
 | 
					    fi
 | 
				
			||||||
 | 
					  done
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					filter() {
 | 
				
			||||||
 | 
					  local filtered
 | 
				
			||||||
 | 
					  for opt in "$@"; do
 | 
				
			||||||
 | 
					    [ -z $(eval "echo \$disable_${opt}") ] && filtered="$filtered $opt"
 | 
				
			||||||
 | 
					  done
 | 
				
			||||||
 | 
					  echo $filtered
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Helper functions for generating the arch specific RTCD files
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					common_top() {
 | 
				
			||||||
 | 
					  local outfile_basename=$(basename ${outfile:-rtcd.h})
 | 
				
			||||||
 | 
					  local include_guard=$(echo -n $outfile_basename | tr [a-z] [A-Z] | tr -c [A-Z] _)
 | 
				
			||||||
 | 
					  cat <<EOF
 | 
				
			||||||
 | 
					#ifndef ${include_guard}
 | 
				
			||||||
 | 
					#define ${include_guard}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef RTCD_C
 | 
				
			||||||
 | 
					#define RTCD_EXTERN
 | 
				
			||||||
 | 
					#else
 | 
				
			||||||
 | 
					#define RTCD_EXTERN extern
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$(process_forward_decls)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$(declare_function_pointers c $ALL_ARCHS)
 | 
				
			||||||
 | 
					EOF
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					common_bottom() {
 | 
				
			||||||
 | 
					  cat <<EOF
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					EOF
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					x86() {
 | 
				
			||||||
 | 
					  determine_indirection c $ALL_ARCHS
 | 
				
			||||||
 | 
					  cat <<EOF
 | 
				
			||||||
 | 
					$(common_top)
 | 
				
			||||||
 | 
					void ${symbol:-rtcd}(void);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef RTCD_C
 | 
				
			||||||
 | 
					#include "vpx_ports/x86.h"
 | 
				
			||||||
 | 
					void ${symbol:-rtcd}(void)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    int flags = x86_simd_caps();
 | 
				
			||||||
 | 
					EOF
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  # Write out the helper variable for each enabled extension
 | 
				
			||||||
 | 
					  for opt in $ALL_ARCHS; do
 | 
				
			||||||
 | 
					    local uc=$(echo -n $opt | tr [a-z] [A-Z])
 | 
				
			||||||
 | 
					    echo "    int have_${opt} = flags & HAS_${uc};"
 | 
				
			||||||
 | 
					  done
 | 
				
			||||||
 | 
					  cat <<EOF
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$(set_function_pointers c $ALL_ARCHS)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					$(common_bottom)
 | 
				
			||||||
 | 
					EOF
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					arm() {
 | 
				
			||||||
 | 
					  determine_indirection c $ALL_ARCHS
 | 
				
			||||||
 | 
					  cat <<EOF
 | 
				
			||||||
 | 
					$(common_top)
 | 
				
			||||||
 | 
					#include "vpx_config.h"
 | 
				
			||||||
 | 
					#include "vp8/decoder/onyxd_int.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void ${symbol:-rtcd}(VP8D_COMP *pbi);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#ifdef RTCD_C
 | 
				
			||||||
 | 
					void ${symbol:-rtcd}(VP8D_COMP *pbi)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					#if CONFIG_RUNTIME_CPU_DETECT
 | 
				
			||||||
 | 
					    int flags = pbi->common.rtcd.flags;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    int have_v5te = flags & HAS_EDSP;
 | 
				
			||||||
 | 
					    int have_v6 = flags & HAS_MEDIA;
 | 
				
			||||||
 | 
					    int have_neon = flags & HAS_NEON;
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$(set_function_pointers c $ALL_ARCHS)
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					$(common_bottom)
 | 
				
			||||||
 | 
					EOF
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Main Driver
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					require c
 | 
				
			||||||
 | 
					case $arch in
 | 
				
			||||||
 | 
					  x86)
 | 
				
			||||||
 | 
					    ALL_ARCHS=$(filter mmx sse sse2 sse3 sse4_1)
 | 
				
			||||||
 | 
					    x86
 | 
				
			||||||
 | 
					    ;;
 | 
				
			||||||
 | 
					  x86_64)
 | 
				
			||||||
 | 
					    ALL_ARCHS=$(filter mmx sse sse2 sse3 sse4_1)
 | 
				
			||||||
 | 
					    require $(filter mmx sse sse2)
 | 
				
			||||||
 | 
					    x86
 | 
				
			||||||
 | 
					    ;;
 | 
				
			||||||
 | 
					  armv5te)
 | 
				
			||||||
 | 
					    ALL_ARCHS=$(filter v5te)
 | 
				
			||||||
 | 
					    arm
 | 
				
			||||||
 | 
					    ;;
 | 
				
			||||||
 | 
					  armv6)
 | 
				
			||||||
 | 
					    ALL_ARCHS=$(filter v5te v6)
 | 
				
			||||||
 | 
					    arm
 | 
				
			||||||
 | 
					    ;;
 | 
				
			||||||
 | 
					  armv7)
 | 
				
			||||||
 | 
					    ALL_ARCHS=$(filter v5te v6 neon)
 | 
				
			||||||
 | 
					    arm
 | 
				
			||||||
 | 
					    ;;
 | 
				
			||||||
 | 
					  *)
 | 
				
			||||||
 | 
					    die "Unrecognized architecture: $arch"
 | 
				
			||||||
 | 
					esac
 | 
				
			||||||
							
								
								
									
										9
									
								
								libs.mk
									
									
									
									
									
								
							
							
						
						
									
										9
									
								
								libs.mk
									
									
									
									
									
								
							@@ -322,6 +322,15 @@ endif
 | 
				
			|||||||
$(shell $(SRC_PATH_BARE)/build/make/version.sh "$(SRC_PATH_BARE)" $(BUILD_PFX)vpx_version.h)
 | 
					$(shell $(SRC_PATH_BARE)/build/make/version.sh "$(SRC_PATH_BARE)" $(BUILD_PFX)vpx_version.h)
 | 
				
			||||||
CLEAN-OBJS += $(BUILD_PFX)vpx_version.h
 | 
					CLEAN-OBJS += $(BUILD_PFX)vpx_version.h
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# Rule to generate runtime cpu detection files
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					$(OBJS-yes:.o=.d): vpx_rtcd.h
 | 
				
			||||||
 | 
					vpx_rtcd.h: $(sort $(filter %rtcd_defs.sh,$(CODEC_SRCS)))
 | 
				
			||||||
 | 
						$(SRC_PATH_BARE)/build/make/rtcd.sh --arch=$(TGT_ISA) --sym=vpx_rtcd \
 | 
				
			||||||
 | 
					      --rtcd=$(CONFIG_RUNTIME_CPU_DETECT) $^ > $@
 | 
				
			||||||
 | 
					CLEAN-OBJS += $(BUILD_PFX)vpx_rtcd.h
 | 
				
			||||||
 | 
					
 | 
				
			||||||
CODEC_DOC_SRCS += vpx/vpx_codec.h \
 | 
					CODEC_DOC_SRCS += vpx/vpx_codec.h \
 | 
				
			||||||
                  vpx/vpx_decoder.h \
 | 
					                  vpx/vpx_decoder.h \
 | 
				
			||||||
                  vpx/vpx_encoder.h \
 | 
					                  vpx/vpx_encoder.h \
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -182,7 +182,7 @@ typedef struct
 | 
				
			|||||||
} LOWER_RES_INFO;
 | 
					} LOWER_RES_INFO;
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
typedef struct
 | 
					typedef struct blockd
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    short *qcoeff;
 | 
					    short *qcoeff;
 | 
				
			||||||
    short *dqcoeff;
 | 
					    short *dqcoeff;
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										12
									
								
								vp8/common/rtcd.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								vp8/common/rtcd.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,12 @@
 | 
				
			|||||||
 | 
					/*
 | 
				
			||||||
 | 
					 *  Copyright (c) 2011 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 "vpx_config.h"
 | 
				
			||||||
 | 
					#define RTCD_C
 | 
				
			||||||
 | 
					#include "vpx_rtcd.h"
 | 
				
			||||||
@@ -1,50 +0,0 @@
 | 
				
			|||||||
/*
 | 
					 | 
				
			||||||
 *  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 "vpx_config.h"
 | 
					 | 
				
			||||||
#include "vpx_ports/arm.h"
 | 
					 | 
				
			||||||
#include "vp8/common/blockd.h"
 | 
					 | 
				
			||||||
#include "vp8/common/pragmas.h"
 | 
					 | 
				
			||||||
#include "vp8/decoder/dequantize.h"
 | 
					 | 
				
			||||||
#include "vp8/decoder/onyxd_int.h"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void vp8_arch_arm_decode_init(VP8D_COMP *pbi)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
#if CONFIG_RUNTIME_CPU_DETECT
 | 
					 | 
				
			||||||
    int flags = pbi->common.rtcd.flags;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#if HAVE_ARMV5TE
 | 
					 | 
				
			||||||
    if (flags & HAS_EDSP)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#if HAVE_ARMV6
 | 
					 | 
				
			||||||
    if (flags & HAS_MEDIA)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        pbi->dequant.block               = vp8_dequantize_b_v6;
 | 
					 | 
				
			||||||
        pbi->dequant.idct_add            = vp8_dequant_idct_add_v6;
 | 
					 | 
				
			||||||
        pbi->dequant.idct_add_y_block    = vp8_dequant_idct_add_y_block_v6;
 | 
					 | 
				
			||||||
        pbi->dequant.idct_add_uv_block   = vp8_dequant_idct_add_uv_block_v6;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#if HAVE_ARMV7
 | 
					 | 
				
			||||||
    if (flags & HAS_NEON)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        pbi->dequant.block               = vp8_dequantize_b_neon;
 | 
					 | 
				
			||||||
        pbi->dequant.idct_add            = vp8_dequant_idct_add_neon;
 | 
					 | 
				
			||||||
        pbi->dequant.idct_add_y_block    = vp8_dequant_idct_add_y_block_neon;
 | 
					 | 
				
			||||||
        pbi->dequant.idct_add_uv_block   = vp8_dequant_idct_add_uv_block_neon;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@@ -10,7 +10,6 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#include "vpx_config.h"
 | 
					#include "vpx_config.h"
 | 
				
			||||||
#include "vp8/common/idct.h"
 | 
					#include "vp8/common/idct.h"
 | 
				
			||||||
#include "vp8/decoder/dequantize.h"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void vp8_dequant_idct_add_y_block_v6(short *q, short *dq,
 | 
					void vp8_dequant_idct_add_y_block_v6(short *q, short *dq,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -10,9 +10,7 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "vpx_config.h"
 | 
					#include "vpx_config.h"
 | 
				
			||||||
#include "vp8/decoder/dequantize.h"
 | 
					#include "vp8/common/blockd.h"
 | 
				
			||||||
#include "vp8/common/idct.h"
 | 
					 | 
				
			||||||
#include "vpx_mem/vpx_mem.h"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if HAVE_ARMV7
 | 
					#if HAVE_ARMV7
 | 
				
			||||||
extern void vp8_dequantize_b_loop_neon(short *Q, short *DQC, short *DQ);
 | 
					extern void vp8_dequantize_b_loop_neon(short *Q, short *DQC, short *DQ);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -10,7 +10,6 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#include "vpx_config.h"
 | 
					#include "vpx_config.h"
 | 
				
			||||||
#include "vp8/common/idct.h"
 | 
					#include "vp8/common/idct.h"
 | 
				
			||||||
#include "vp8/decoder/dequantize.h"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* place these declarations here because we don't want to maintain them
 | 
					/* place these declarations here because we don't want to maintain them
 | 
				
			||||||
 * outside of this scope
 | 
					 * outside of this scope
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -9,13 +9,14 @@
 | 
				
			|||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "vpx_config.h"
 | 
				
			||||||
 | 
					#include "vpx_rtcd.h"
 | 
				
			||||||
#include "onyxd_int.h"
 | 
					#include "onyxd_int.h"
 | 
				
			||||||
#include "vp8/common/header.h"
 | 
					#include "vp8/common/header.h"
 | 
				
			||||||
#include "vp8/common/reconintra.h"
 | 
					#include "vp8/common/reconintra.h"
 | 
				
			||||||
#include "vp8/common/reconintra4x4.h"
 | 
					#include "vp8/common/reconintra4x4.h"
 | 
				
			||||||
#include "vp8/common/recon.h"
 | 
					#include "vp8/common/recon.h"
 | 
				
			||||||
#include "vp8/common/reconinter.h"
 | 
					#include "vp8/common/reconinter.h"
 | 
				
			||||||
#include "dequantize.h"
 | 
					 | 
				
			||||||
#include "detokenize.h"
 | 
					#include "detokenize.h"
 | 
				
			||||||
#include "vp8/common/invtrans.h"
 | 
					#include "vp8/common/invtrans.h"
 | 
				
			||||||
#include "vp8/common/alloccommon.h"
 | 
					#include "vp8/common/alloccommon.h"
 | 
				
			||||||
@@ -32,7 +33,6 @@
 | 
				
			|||||||
#endif
 | 
					#endif
 | 
				
			||||||
#include "vpx_mem/vpx_mem.h"
 | 
					#include "vpx_mem/vpx_mem.h"
 | 
				
			||||||
#include "vp8/common/idct.h"
 | 
					#include "vp8/common/idct.h"
 | 
				
			||||||
#include "dequantize.h"
 | 
					 | 
				
			||||||
#include "vp8/common/threading.h"
 | 
					#include "vp8/common/threading.h"
 | 
				
			||||||
#include "decoderthreading.h"
 | 
					#include "decoderthreading.h"
 | 
				
			||||||
#include "dboolhuff.h"
 | 
					#include "dboolhuff.h"
 | 
				
			||||||
@@ -218,7 +218,7 @@ static void decode_macroblock(VP8D_COMP *pbi, MACROBLOCKD *xd,
 | 
				
			|||||||
            {
 | 
					            {
 | 
				
			||||||
                if (xd->eobs[i] > 1)
 | 
					                if (xd->eobs[i] > 1)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    DEQUANT_INVOKE(&pbi->dequant, idct_add)
 | 
					                    vp8_dequant_idct_add
 | 
				
			||||||
                        (b->qcoeff, b->dequant,
 | 
					                        (b->qcoeff, b->dequant,
 | 
				
			||||||
                        *(b->base_dst) + b->dst, b->dst_stride);
 | 
					                        *(b->base_dst) + b->dst, b->dst_stride);
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
@@ -247,7 +247,7 @@ static void decode_macroblock(VP8D_COMP *pbi, MACROBLOCKD *xd,
 | 
				
			|||||||
            /* do 2nd order transform on the dc block */
 | 
					            /* do 2nd order transform on the dc block */
 | 
				
			||||||
            if (xd->eobs[24] > 1)
 | 
					            if (xd->eobs[24] > 1)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                DEQUANT_INVOKE(&pbi->dequant, block)(b);
 | 
					                vp8_dequantize_b(b);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                IDCT_INVOKE(RTCD_VTABLE(idct), iwalsh16)(&b->dqcoeff[0],
 | 
					                IDCT_INVOKE(RTCD_VTABLE(idct), iwalsh16)(&b->dqcoeff[0],
 | 
				
			||||||
                    xd->qcoeff);
 | 
					                    xd->qcoeff);
 | 
				
			||||||
@@ -272,7 +272,7 @@ static void decode_macroblock(VP8D_COMP *pbi, MACROBLOCKD *xd,
 | 
				
			|||||||
            DQC[0] = 1;
 | 
					            DQC[0] = 1;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        DEQUANT_INVOKE (&pbi->dequant, idct_add_y_block)
 | 
					        vp8_dequant_idct_add_y_block
 | 
				
			||||||
                        (xd->qcoeff, xd->block[0].dequant,
 | 
					                        (xd->qcoeff, xd->block[0].dequant,
 | 
				
			||||||
                         xd->dst.y_buffer,
 | 
					                         xd->dst.y_buffer,
 | 
				
			||||||
                         xd->dst.y_stride, xd->eobs);
 | 
					                         xd->dst.y_stride, xd->eobs);
 | 
				
			||||||
@@ -281,7 +281,7 @@ static void decode_macroblock(VP8D_COMP *pbi, MACROBLOCKD *xd,
 | 
				
			|||||||
        DQC[0] = dc_dequant_temp;
 | 
					        DQC[0] = dc_dequant_temp;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    DEQUANT_INVOKE (&pbi->dequant, idct_add_uv_block)
 | 
					    vp8_dequant_idct_add_uv_block
 | 
				
			||||||
                    (xd->qcoeff+16*16, xd->block[16].dequant,
 | 
					                    (xd->qcoeff+16*16, xd->block[16].dequant,
 | 
				
			||||||
                     xd->dst.u_buffer, xd->dst.v_buffer,
 | 
					                     xd->dst.u_buffer, xd->dst.v_buffer,
 | 
				
			||||||
                     xd->dst.uv_stride, xd->eobs+16);
 | 
					                     xd->dst.uv_stride, xd->eobs+16);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -10,7 +10,8 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "vpx_config.h"
 | 
					#include "vpx_config.h"
 | 
				
			||||||
#include "dequantize.h"
 | 
					#include "vpx_rtcd.h"
 | 
				
			||||||
 | 
					#include "vp8/common/blockd.h"
 | 
				
			||||||
#include "vp8/common/idct.h"
 | 
					#include "vp8/common/idct.h"
 | 
				
			||||||
#include "vpx_mem/vpx_mem.h"
 | 
					#include "vpx_mem/vpx_mem.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,85 +0,0 @@
 | 
				
			|||||||
/*
 | 
					 | 
				
			||||||
 *  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.
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#ifndef DEQUANTIZE_H
 | 
					 | 
				
			||||||
#define DEQUANTIZE_H
 | 
					 | 
				
			||||||
#include "vp8/common/blockd.h"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define prototype_dequant_block(sym) \
 | 
					 | 
				
			||||||
    void sym(BLOCKD *x)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define prototype_dequant_idct_add(sym) \
 | 
					 | 
				
			||||||
    void sym(short *input, short *dq, \
 | 
					 | 
				
			||||||
             unsigned char *output, \
 | 
					 | 
				
			||||||
             int stride)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define prototype_dequant_idct_add_y_block(sym) \
 | 
					 | 
				
			||||||
    void sym(short *q, short *dq, \
 | 
					 | 
				
			||||||
             unsigned char *dst, \
 | 
					 | 
				
			||||||
             int stride, char *eobs)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#define prototype_dequant_idct_add_uv_block(sym) \
 | 
					 | 
				
			||||||
    void sym(short *q, short *dq, \
 | 
					 | 
				
			||||||
             unsigned char *dst_u, \
 | 
					 | 
				
			||||||
             unsigned char *dst_v, int stride, char *eobs)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#if ARCH_X86 || ARCH_X86_64
 | 
					 | 
				
			||||||
#include "x86/dequantize_x86.h"
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#if ARCH_ARM
 | 
					 | 
				
			||||||
#include "arm/dequantize_arm.h"
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#ifndef vp8_dequant_block
 | 
					 | 
				
			||||||
#define vp8_dequant_block vp8_dequantize_b_c
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
extern prototype_dequant_block(vp8_dequant_block);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#ifndef vp8_dequant_idct_add
 | 
					 | 
				
			||||||
#define vp8_dequant_idct_add vp8_dequant_idct_add_c
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
extern prototype_dequant_idct_add(vp8_dequant_idct_add);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#ifndef vp8_dequant_idct_add_y_block
 | 
					 | 
				
			||||||
#define vp8_dequant_idct_add_y_block vp8_dequant_idct_add_y_block_c
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
extern prototype_dequant_idct_add_y_block(vp8_dequant_idct_add_y_block);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#ifndef vp8_dequant_idct_add_uv_block
 | 
					 | 
				
			||||||
#define vp8_dequant_idct_add_uv_block vp8_dequant_idct_add_uv_block_c
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
extern prototype_dequant_idct_add_uv_block(vp8_dequant_idct_add_uv_block);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
typedef prototype_dequant_block((*vp8_dequant_block_fn_t));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
typedef prototype_dequant_idct_add((*vp8_dequant_idct_add_fn_t));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
typedef prototype_dequant_idct_add_y_block((*vp8_dequant_idct_add_y_block_fn_t));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
typedef prototype_dequant_idct_add_uv_block((*vp8_dequant_idct_add_uv_block_fn_t));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
typedef struct
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    vp8_dequant_block_fn_t               block;
 | 
					 | 
				
			||||||
    vp8_dequant_idct_add_fn_t            idct_add;
 | 
					 | 
				
			||||||
    vp8_dequant_idct_add_y_block_fn_t    idct_add_y_block;
 | 
					 | 
				
			||||||
    vp8_dequant_idct_add_uv_block_fn_t   idct_add_uv_block;
 | 
					 | 
				
			||||||
} vp8_dequant_rtcd_vtable_t;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#if CONFIG_RUNTIME_CPU_DETECT
 | 
					 | 
				
			||||||
#define DEQUANT_INVOKE(ctx,fn) (ctx)->fn
 | 
					 | 
				
			||||||
#else
 | 
					 | 
				
			||||||
#define DEQUANT_INVOKE(ctx,fn) vp8_dequant_##fn
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
@@ -10,28 +10,16 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "vpx_config.h"
 | 
					#include "vpx_config.h"
 | 
				
			||||||
#include "vp8/decoder/dequantize.h"
 | 
					#include "vpx_rtcd.h"
 | 
				
			||||||
#include "vp8/decoder/onyxd_int.h"
 | 
					#include "vp8/decoder/onyxd_int.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
extern void vp8_arch_x86_decode_init(VP8D_COMP *pbi);
 | 
					 | 
				
			||||||
extern void vp8_arch_arm_decode_init(VP8D_COMP *pbi);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
void vp8_dmachine_specific_config(VP8D_COMP *pbi)
 | 
					void vp8_dmachine_specific_config(VP8D_COMP *pbi)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    /* Pure C: */
 | 
					    /* Pure C: */
 | 
				
			||||||
#if CONFIG_RUNTIME_CPU_DETECT
 | 
					#if CONFIG_RUNTIME_CPU_DETECT
 | 
				
			||||||
    pbi->mb.rtcd                     = &pbi->common.rtcd;
 | 
					    pbi->mb.rtcd                     = &pbi->common.rtcd;
 | 
				
			||||||
    pbi->dequant.block               = vp8_dequantize_b_c;
 | 
					 | 
				
			||||||
    pbi->dequant.idct_add            = vp8_dequant_idct_add_c;
 | 
					 | 
				
			||||||
    pbi->dequant.idct_add_y_block    = vp8_dequant_idct_add_y_block_c;
 | 
					 | 
				
			||||||
    pbi->dequant.idct_add_uv_block   = vp8_dequant_idct_add_uv_block_c;
 | 
					 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if ARCH_X86 || ARCH_X86_64
 | 
					    /* Move this to common once we use it from more than one place. */
 | 
				
			||||||
    vp8_arch_x86_decode_init(pbi);
 | 
					    vpx_rtcd();
 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#if ARCH_ARM
 | 
					 | 
				
			||||||
    vp8_arch_arm_decode_init(pbi);
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -10,7 +10,6 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#include "vpx_config.h"
 | 
					#include "vpx_config.h"
 | 
				
			||||||
#include "vp8/common/idct.h"
 | 
					#include "vp8/common/idct.h"
 | 
				
			||||||
#include "dequantize.h"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
void vp8_dequant_idct_add_c(short *input, short *dq,
 | 
					void vp8_dequant_idct_add_c(short *input, short *dq,
 | 
				
			||||||
                            unsigned char *dest, int stride);
 | 
					                            unsigned char *dest, int stride);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -16,7 +16,6 @@
 | 
				
			|||||||
#include "treereader.h"
 | 
					#include "treereader.h"
 | 
				
			||||||
#include "vp8/common/onyxc_int.h"
 | 
					#include "vp8/common/onyxc_int.h"
 | 
				
			||||||
#include "vp8/common/threading.h"
 | 
					#include "vp8/common/threading.h"
 | 
				
			||||||
#include "dequantize.h"
 | 
					 | 
				
			||||||
#if CONFIG_ERROR_CONCEALMENT
 | 
					#if CONFIG_ERROR_CONCEALMENT
 | 
				
			||||||
#include "ec_types.h"
 | 
					#include "ec_types.h"
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
@@ -93,10 +92,6 @@ typedef struct VP8Decompressor
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    DATARATE dr[16];
 | 
					    DATARATE dr[16];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if CONFIG_RUNTIME_CPU_DETECT
 | 
					 | 
				
			||||||
    vp8_dequant_rtcd_vtable_t        dequant;
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    vp8_prob prob_intra;
 | 
					    vp8_prob prob_intra;
 | 
				
			||||||
    vp8_prob prob_last;
 | 
					    vp8_prob prob_last;
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										18
									
								
								vp8/decoder/rtcd_defs.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								vp8/decoder/rtcd_defs.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,18 @@
 | 
				
			|||||||
 | 
					decoder_forward_decls() {
 | 
				
			||||||
 | 
					cat <<EOF
 | 
				
			||||||
 | 
					struct blockd;
 | 
				
			||||||
 | 
					EOF
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					forward_decls decoder_forward_decls
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					prototype void vp8_dequantize_b "struct blockd*"
 | 
				
			||||||
 | 
					specialize vp8_dequantize_b mmx v6 neon
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					prototype void vp8_dequant_idct_add "short *input, short *dq, unsigned char *output, int stride"
 | 
				
			||||||
 | 
					specialize vp8_dequant_idct_add mmx v6 neon
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					prototype void vp8_dequant_idct_add_y_block "short *q, short *dq, unsigned char *dst, int stride, char *eobs"
 | 
				
			||||||
 | 
					specialize vp8_dequant_idct_add_y_block mmx sse2 v6 neon
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					prototype void vp8_dequant_idct_add_uv_block "short *q, short *dq, unsigned char *dst_u, unsigned char *dst_v, int stride, char *eobs"
 | 
				
			||||||
 | 
					specialize vp8_dequant_idct_add_uv_block mmx sse2 v6 neon
 | 
				
			||||||
@@ -9,6 +9,8 @@
 | 
				
			|||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include "vpx_config.h"
 | 
				
			||||||
 | 
					#include "vpx_rtcd.h"
 | 
				
			||||||
#if !defined(WIN32) && CONFIG_OS_SUPPORT == 1
 | 
					#if !defined(WIN32) && CONFIG_OS_SUPPORT == 1
 | 
				
			||||||
# include <unistd.h>
 | 
					# include <unistd.h>
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
@@ -189,7 +191,7 @@ static void decode_macroblock(VP8D_COMP *pbi, MACROBLOCKD *xd, int mb_row, int m
 | 
				
			|||||||
            {
 | 
					            {
 | 
				
			||||||
                if (xd->eobs[i] > 1)
 | 
					                if (xd->eobs[i] > 1)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    DEQUANT_INVOKE(&pbi->dequant, idct_add)
 | 
					                    vp8_dequant_idct_add
 | 
				
			||||||
                        (b->qcoeff, b->dequant,
 | 
					                        (b->qcoeff, b->dequant,
 | 
				
			||||||
                        *(b->base_dst) + b->dst, b->dst_stride);
 | 
					                        *(b->base_dst) + b->dst, b->dst_stride);
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
@@ -217,7 +219,7 @@ static void decode_macroblock(VP8D_COMP *pbi, MACROBLOCKD *xd, int mb_row, int m
 | 
				
			|||||||
            /* do 2nd order transform on the dc block */
 | 
					            /* do 2nd order transform on the dc block */
 | 
				
			||||||
            if (xd->eobs[24] > 1)
 | 
					            if (xd->eobs[24] > 1)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                DEQUANT_INVOKE(&pbi->dequant, block)(b);
 | 
					                vp8_dequantize_b(b);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                IDCT_INVOKE(RTCD_VTABLE(idct), iwalsh16)(&b->dqcoeff[0],
 | 
					                IDCT_INVOKE(RTCD_VTABLE(idct), iwalsh16)(&b->dqcoeff[0],
 | 
				
			||||||
                    xd->qcoeff);
 | 
					                    xd->qcoeff);
 | 
				
			||||||
@@ -248,13 +250,13 @@ static void decode_macroblock(VP8D_COMP *pbi, MACROBLOCKD *xd, int mb_row, int m
 | 
				
			|||||||
            DQC = local_dequant;
 | 
					            DQC = local_dequant;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        DEQUANT_INVOKE (&pbi->dequant, idct_add_y_block)
 | 
					        vp8_dequant_idct_add_y_block
 | 
				
			||||||
                        (xd->qcoeff, DQC,
 | 
					                        (xd->qcoeff, DQC,
 | 
				
			||||||
                         xd->dst.y_buffer,
 | 
					                         xd->dst.y_buffer,
 | 
				
			||||||
                         xd->dst.y_stride, xd->eobs);
 | 
					                         xd->dst.y_stride, xd->eobs);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    DEQUANT_INVOKE (&pbi->dequant, idct_add_uv_block)
 | 
					    vp8_dequant_idct_add_uv_block
 | 
				
			||||||
                    (xd->qcoeff+16*16, xd->block[16].dequant,
 | 
					                    (xd->qcoeff+16*16, xd->block[16].dequant,
 | 
				
			||||||
                     xd->dst.u_buffer, xd->dst.v_buffer,
 | 
					                     xd->dst.u_buffer, xd->dst.v_buffer,
 | 
				
			||||||
                     xd->dst.uv_stride, xd->eobs+16);
 | 
					                     xd->dst.uv_stride, xd->eobs+16);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,58 +0,0 @@
 | 
				
			|||||||
/*
 | 
					 | 
				
			||||||
 *  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.
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#ifndef DEQUANTIZE_X86_H
 | 
					 | 
				
			||||||
#define DEQUANTIZE_X86_H
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/* Note:
 | 
					 | 
				
			||||||
 *
 | 
					 | 
				
			||||||
 * This platform is commonly built for runtime CPU detection. If you modify
 | 
					 | 
				
			||||||
 * any of the function mappings present in this file, be sure to also update
 | 
					 | 
				
			||||||
 * them in the function pointer initialization code
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
#if HAVE_MMX
 | 
					 | 
				
			||||||
extern prototype_dequant_block(vp8_dequantize_b_mmx);
 | 
					 | 
				
			||||||
extern prototype_dequant_idct_add(vp8_dequant_idct_add_mmx);
 | 
					 | 
				
			||||||
extern prototype_dequant_idct_add_y_block(vp8_dequant_idct_add_y_block_mmx);
 | 
					 | 
				
			||||||
extern prototype_dequant_idct_add_uv_block(vp8_dequant_idct_add_uv_block_mmx);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#if !CONFIG_RUNTIME_CPU_DETECT
 | 
					 | 
				
			||||||
#undef  vp8_dequant_block
 | 
					 | 
				
			||||||
#define vp8_dequant_block vp8_dequantize_b_mmx
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#undef  vp8_dequant_idct_add
 | 
					 | 
				
			||||||
#define vp8_dequant_idct_add vp8_dequant_idct_add_mmx
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#undef vp8_dequant_idct_add_y_block
 | 
					 | 
				
			||||||
#define vp8_dequant_idct_add_y_block vp8_dequant_idct_add_y_block_mmx
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#undef vp8_dequant_idct_add_uv_block
 | 
					 | 
				
			||||||
#define vp8_dequant_idct_add_uv_block vp8_dequant_idct_add_uv_block_mmx
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#if HAVE_SSE2
 | 
					 | 
				
			||||||
extern prototype_dequant_idct_add_y_block(vp8_dequant_idct_add_y_block_sse2);
 | 
					 | 
				
			||||||
extern prototype_dequant_idct_add_uv_block(vp8_dequant_idct_add_uv_block_sse2);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#if !CONFIG_RUNTIME_CPU_DETECT
 | 
					 | 
				
			||||||
#undef vp8_dequant_idct_add_y_block
 | 
					 | 
				
			||||||
#define vp8_dequant_idct_add_y_block vp8_dequant_idct_add_y_block_sse2
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#undef vp8_dequant_idct_add_uv_block
 | 
					 | 
				
			||||||
#define vp8_dequant_idct_add_uv_block vp8_dequant_idct_add_uv_block_sse2
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
@@ -9,8 +9,8 @@
 | 
				
			|||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "vpx_config.h"
 | 
					#include "vpx_config.h"
 | 
				
			||||||
 | 
					#include "vpx_rtcd.h"
 | 
				
			||||||
#include "vp8/common/idct.h"
 | 
					#include "vp8/common/idct.h"
 | 
				
			||||||
#include "vp8/decoder/dequantize.h"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
void vp8_dequant_idct_add_y_block_mmx
 | 
					void vp8_dequant_idct_add_y_block_mmx
 | 
				
			||||||
            (short *q, short *dq,
 | 
					            (short *q, short *dq,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -10,7 +10,6 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#include "vpx_config.h"
 | 
					#include "vpx_config.h"
 | 
				
			||||||
#include "vp8/common/idct.h"
 | 
					#include "vp8/common/idct.h"
 | 
				
			||||||
#include "vp8/decoder/dequantize.h"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
void vp8_idct_dequant_0_2x_sse2
 | 
					void vp8_idct_dequant_0_2x_sse2
 | 
				
			||||||
            (short *q, short *dq ,
 | 
					            (short *q, short *dq ,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -10,8 +10,8 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "vpx_config.h"
 | 
					#include "vpx_config.h"
 | 
				
			||||||
#include "vpx_ports/x86.h"
 | 
					#include "vpx_rtcd.h"
 | 
				
			||||||
#include "vp8/decoder/onyxd_int.h"
 | 
					#include "vp8/common/blockd.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if HAVE_MMX
 | 
					#if HAVE_MMX
 | 
				
			||||||
@@ -25,35 +25,3 @@ void vp8_dequantize_b_mmx(BLOCKD *d)
 | 
				
			|||||||
    vp8_dequantize_b_impl_mmx(sq, dq, q);
 | 
					    vp8_dequantize_b_impl_mmx(sq, dq, q);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					 | 
				
			||||||
void vp8_arch_x86_decode_init(VP8D_COMP *pbi)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
#if CONFIG_RUNTIME_CPU_DETECT
 | 
					 | 
				
			||||||
    int flags = x86_simd_caps();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /* Note:
 | 
					 | 
				
			||||||
     *
 | 
					 | 
				
			||||||
     * This platform can be built without runtime CPU detection as well. If
 | 
					 | 
				
			||||||
     * you modify any of the function mappings present in this file, be sure
 | 
					 | 
				
			||||||
     * to also update them in static mapings (<arch>/filename_<arch>.h)
 | 
					 | 
				
			||||||
     */
 | 
					 | 
				
			||||||
    /* Override default functions with fastest ones for this CPU. */
 | 
					 | 
				
			||||||
#if HAVE_MMX
 | 
					 | 
				
			||||||
    if (flags & HAS_MMX)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        pbi->dequant.block               = vp8_dequantize_b_mmx;
 | 
					 | 
				
			||||||
        pbi->dequant.idct_add            = vp8_dequant_idct_add_mmx;
 | 
					 | 
				
			||||||
        pbi->dequant.idct_add_y_block    = vp8_dequant_idct_add_y_block_mmx;
 | 
					 | 
				
			||||||
        pbi->dequant.idct_add_uv_block   = vp8_dequant_idct_add_uv_block_mmx;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
#if HAVE_SSE2
 | 
					 | 
				
			||||||
    if (flags & HAS_SSE2)
 | 
					 | 
				
			||||||
    {
 | 
					 | 
				
			||||||
        pbi->dequant.idct_add_y_block    = vp8_dequant_idct_add_y_block_sse2;
 | 
					 | 
				
			||||||
        pbi->dequant.idct_add_uv_block   = vp8_dequant_idct_add_uv_block_sse2;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#endif
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
@@ -51,6 +51,7 @@ VP8_COMMON_SRCS-yes += common/recon.h
 | 
				
			|||||||
VP8_COMMON_SRCS-yes += common/reconinter.h
 | 
					VP8_COMMON_SRCS-yes += common/reconinter.h
 | 
				
			||||||
VP8_COMMON_SRCS-yes += common/reconintra.h
 | 
					VP8_COMMON_SRCS-yes += common/reconintra.h
 | 
				
			||||||
VP8_COMMON_SRCS-yes += common/reconintra4x4.h
 | 
					VP8_COMMON_SRCS-yes += common/reconintra4x4.h
 | 
				
			||||||
 | 
					VP8_COMMON_SRCS-yes += common/rtcd.c
 | 
				
			||||||
VP8_COMMON_SRCS-yes += common/setupintrarecon.h
 | 
					VP8_COMMON_SRCS-yes += common/setupintrarecon.h
 | 
				
			||||||
VP8_COMMON_SRCS-yes += common/subpixel.h
 | 
					VP8_COMMON_SRCS-yes += common/subpixel.h
 | 
				
			||||||
VP8_COMMON_SRCS-yes += common/swapyv12buffer.h
 | 
					VP8_COMMON_SRCS-yes += common/swapyv12buffer.h
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -61,7 +61,6 @@ VP8_DX_SRCS-yes += decoder/generic/dsystemdependent.c
 | 
				
			|||||||
VP8_DX_SRCS-yes += decoder/dboolhuff.h
 | 
					VP8_DX_SRCS-yes += decoder/dboolhuff.h
 | 
				
			||||||
VP8_DX_SRCS-yes += decoder/decodemv.h
 | 
					VP8_DX_SRCS-yes += decoder/decodemv.h
 | 
				
			||||||
VP8_DX_SRCS-yes += decoder/decoderthreading.h
 | 
					VP8_DX_SRCS-yes += decoder/decoderthreading.h
 | 
				
			||||||
VP8_DX_SRCS-yes += decoder/dequantize.h
 | 
					 | 
				
			||||||
VP8_DX_SRCS-yes += decoder/detokenize.h
 | 
					VP8_DX_SRCS-yes += decoder/detokenize.h
 | 
				
			||||||
VP8_DX_SRCS-yes += decoder/onyxd_int.h
 | 
					VP8_DX_SRCS-yes += decoder/onyxd_int.h
 | 
				
			||||||
VP8_DX_SRCS-yes += decoder/treereader.h
 | 
					VP8_DX_SRCS-yes += decoder/treereader.h
 | 
				
			||||||
@@ -70,10 +69,10 @@ VP8_DX_SRCS-$(CONFIG_MULTITHREAD) += decoder/threading.c
 | 
				
			|||||||
VP8_DX_SRCS-yes += decoder/idct_blk.c
 | 
					VP8_DX_SRCS-yes += decoder/idct_blk.c
 | 
				
			||||||
VP8_DX_SRCS-$(CONFIG_MULTITHREAD) += decoder/reconintra_mt.h
 | 
					VP8_DX_SRCS-$(CONFIG_MULTITHREAD) += decoder/reconintra_mt.h
 | 
				
			||||||
VP8_DX_SRCS-$(CONFIG_MULTITHREAD) += decoder/reconintra_mt.c
 | 
					VP8_DX_SRCS-$(CONFIG_MULTITHREAD) += decoder/reconintra_mt.c
 | 
				
			||||||
 | 
					VP8_DX_SRCS-yes += decoder/rtcd_defs.sh
 | 
				
			||||||
 | 
					
 | 
				
			||||||
VP8_DX_SRCS-yes := $(filter-out $(VP8_DX_SRCS_REMOVE-yes),$(VP8_DX_SRCS-yes))
 | 
					VP8_DX_SRCS-yes := $(filter-out $(VP8_DX_SRCS_REMOVE-yes),$(VP8_DX_SRCS-yes))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
VP8_DX_SRCS-$(ARCH_X86)$(ARCH_X86_64) += decoder/x86/dequantize_x86.h
 | 
					 | 
				
			||||||
VP8_DX_SRCS-$(ARCH_X86)$(ARCH_X86_64) += decoder/x86/x86_dsystemdependent.c
 | 
					VP8_DX_SRCS-$(ARCH_X86)$(ARCH_X86_64) += decoder/x86/x86_dsystemdependent.c
 | 
				
			||||||
VP8_DX_SRCS-$(HAVE_MMX) += decoder/x86/dequantize_mmx.asm
 | 
					VP8_DX_SRCS-$(HAVE_MMX) += decoder/x86/dequantize_mmx.asm
 | 
				
			||||||
VP8_DX_SRCS-$(HAVE_MMX) += decoder/x86/idct_blk_mmx.c
 | 
					VP8_DX_SRCS-$(HAVE_MMX) += decoder/x86/idct_blk_mmx.c
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -11,7 +11,6 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#VP8_DX_SRCS list is modified according to different platforms.
 | 
					#VP8_DX_SRCS list is modified according to different platforms.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
VP8_DX_SRCS-$(ARCH_ARM)  += decoder/arm/arm_dsystemdependent.c
 | 
					 | 
				
			||||||
VP8_DX_SRCS-$(ARCH_ARM)  += decoder/arm/dequantize_arm.c
 | 
					VP8_DX_SRCS-$(ARCH_ARM)  += decoder/arm/dequantize_arm.c
 | 
				
			||||||
VP8_DX_SRCS-$(ARCH_ARM)  += decoder/arm/dequantize_arm.h
 | 
					VP8_DX_SRCS-$(ARCH_ARM)  += decoder/arm/dequantize_arm.h
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user