зеркало из https://github.com/mozilla/gecko-dev.git
Merge inbound to mozilla-central. a=merge
This commit is contained in:
Коммит
a23c3959b6
|
@ -906,9 +906,9 @@ OSFileConstantsService::DefineOSFileConstants(JSContext* aCx,
|
|||
// On other platforms, libxul is a library "xul" with regular
|
||||
// library prefix/suffix.
|
||||
nsAutoString libxul;
|
||||
libxul.AppendLiteral(DLL_PREFIX);
|
||||
libxul.AppendLiteral(MOZ_DLL_PREFIX);
|
||||
libxul.AppendLiteral("xul");
|
||||
libxul.AppendLiteral(DLL_SUFFIX);
|
||||
libxul.AppendLiteral(MOZ_DLL_SUFFIX);
|
||||
#endif // defined(XP_MACOSX)
|
||||
|
||||
if (!SetStringProperty(aCx, objPath, "libxul", libxul)) {
|
||||
|
@ -953,14 +953,14 @@ OSFileConstantsService::DefineOSFileConstants(JSContext* aCx,
|
|||
nsAutoString libsqlite3;
|
||||
#if defined(ANDROID)
|
||||
// On Android, we use the system's libsqlite3
|
||||
libsqlite3.AppendLiteral(DLL_PREFIX);
|
||||
libsqlite3.AppendLiteral(MOZ_DLL_PREFIX);
|
||||
libsqlite3.AppendLiteral("sqlite3");
|
||||
libsqlite3.AppendLiteral(DLL_SUFFIX);
|
||||
libsqlite3.AppendLiteral(MOZ_DLL_SUFFIX);
|
||||
#elif defined(XP_WIN)
|
||||
// On Windows, for some reason, this is part of nss3.dll
|
||||
libsqlite3.AppendLiteral(DLL_PREFIX);
|
||||
libsqlite3.AppendLiteral(MOZ_DLL_PREFIX);
|
||||
libsqlite3.AppendLiteral("nss3");
|
||||
libsqlite3.AppendLiteral(DLL_SUFFIX);
|
||||
libsqlite3.AppendLiteral(MOZ_DLL_SUFFIX);
|
||||
#else
|
||||
// On other platforms, we link sqlite3 into libxul
|
||||
libsqlite3 = libxul;
|
||||
|
|
|
@ -95,8 +95,5 @@ LOCAL_INCLUDES += [
|
|||
'/xpcom/base',
|
||||
]
|
||||
|
||||
DEFINES['DLL_PREFIX'] = '"%s"' % CONFIG['DLL_PREFIX']
|
||||
DEFINES['DLL_SUFFIX'] = '"%s"' % CONFIG['DLL_SUFFIX']
|
||||
|
||||
MOCHITEST_CHROME_MANIFESTS += ['tests/chrome.ini']
|
||||
MOCHITEST_MANIFESTS += ['tests/mochitest.ini']
|
||||
|
|
|
@ -1316,7 +1316,7 @@ gfxAlphaBoxBlur::BlurInsetBox(gfxContext* aDestinationCtx,
|
|||
DrawMirroredBoxShadow(destDrawTarget, minBlur.get(), destBlur);
|
||||
} else {
|
||||
Rect srcBlur(Point(0, 0), Size(minBlur->GetSize()));
|
||||
MOZ_ASSERT(srcBlur.Size() == destBlur.Size());
|
||||
MOZ_ASSERT(RoundedOut(srcBlur).Size() == RoundedOut(destBlur).Size());
|
||||
destDrawTarget->DrawSurface(minBlur, destBlur, srcBlur);
|
||||
}
|
||||
} else {
|
||||
|
|
|
@ -223,8 +223,7 @@ include('/ipc/chromium/chromium-config.mozbuild')
|
|||
|
||||
FINAL_LIBRARY = 'xul'
|
||||
|
||||
for var in ('MOZ_CHILD_PROCESS_NAME', 'MOZ_CHILD_PROCESS_BUNDLE',
|
||||
'DLL_PREFIX', 'DLL_SUFFIX'):
|
||||
for var in ('MOZ_CHILD_PROCESS_NAME', 'MOZ_CHILD_PROCESS_BUNDLE'):
|
||||
DEFINES[var] = '"%s"' % CONFIG[var]
|
||||
|
||||
if CONFIG['MOZ_SANDBOX'] and CONFIG['OS_ARCH'] == 'WINNT':
|
||||
|
|
|
@ -76,9 +76,9 @@ Library::Name(JSContext* cx, unsigned argc, Value* vp)
|
|||
}
|
||||
|
||||
AutoString resultString;
|
||||
AppendString(cx, resultString, DLL_PREFIX);
|
||||
AppendString(cx, resultString, MOZ_DLL_PREFIX);
|
||||
AppendString(cx, resultString, str);
|
||||
AppendString(cx, resultString, DLL_SUFFIX);
|
||||
AppendString(cx, resultString, MOZ_DLL_SUFFIX);
|
||||
if (!resultString)
|
||||
return false;
|
||||
auto resultStr = resultString.finish();
|
||||
|
|
|
@ -741,8 +741,6 @@ DEFINES['EXPORT_JS_API'] = True
|
|||
|
||||
if CONFIG['JS_HAS_CTYPES']:
|
||||
DEFINES['JS_HAS_CTYPES'] = True
|
||||
for var in ('DLL_PREFIX', 'DLL_SUFFIX'):
|
||||
DEFINES[var] = '"%s"' % CONFIG[var]
|
||||
|
||||
if CONFIG['MOZ_LINKER']:
|
||||
DEFINES['MOZ_LINKER'] = True
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
#include "AccessibleCaretLogger.h"
|
||||
#include "mozilla/FloatingPoint.h"
|
||||
#include "mozilla/Preferences.h"
|
||||
#include "mozilla/StaticPrefs.h"
|
||||
#include "mozilla/ToString.h"
|
||||
#include "nsCanvasFrame.h"
|
||||
#include "nsCaret.h"
|
||||
|
@ -30,10 +30,6 @@ using namespace dom;
|
|||
|
||||
NS_IMPL_ISUPPORTS(AccessibleCaret::DummyTouchListener, nsIDOMEventListener)
|
||||
|
||||
float AccessibleCaret::sWidth = 0.0f;
|
||||
float AccessibleCaret::sHeight = 0.0f;
|
||||
float AccessibleCaret::sMarginLeft = 0.0f;
|
||||
|
||||
NS_NAMED_LITERAL_STRING(AccessibleCaret::sTextOverlayElementId, "text-overlay");
|
||||
NS_NAMED_LITERAL_STRING(AccessibleCaret::sCaretImageElementId, "image");
|
||||
|
||||
|
@ -78,14 +74,6 @@ AccessibleCaret::AccessibleCaret(nsIPresShell* aPresShell)
|
|||
MOZ_ASSERT(mPresShell->GetDocument());
|
||||
InjectCaretElement(mPresShell->GetDocument());
|
||||
}
|
||||
|
||||
static bool prefsAdded = false;
|
||||
if (!prefsAdded) {
|
||||
Preferences::AddFloatVarCache(&sWidth, "layout.accessiblecaret.width");
|
||||
Preferences::AddFloatVarCache(&sHeight, "layout.accessiblecaret.height");
|
||||
Preferences::AddFloatVarCache(&sMarginLeft, "layout.accessiblecaret.margin-left");
|
||||
prefsAdded = true;
|
||||
}
|
||||
}
|
||||
|
||||
AccessibleCaret::~AccessibleCaret()
|
||||
|
@ -316,11 +304,12 @@ AccessibleCaret::SetCaretElementStyle(const nsRect& aRect, float aZoomLevel)
|
|||
nsPresContext::AppUnitsToIntCSSPixels(position.y));
|
||||
// We can't use AppendPrintf here, because it does locale-specific
|
||||
// formatting of floating-point values.
|
||||
styleStr.AppendFloat(sWidth/aZoomLevel);
|
||||
styleStr.AppendFloat(StaticPrefs::layout_accessiblecaret_width() / aZoomLevel);
|
||||
styleStr.AppendLiteral("px; height: ");
|
||||
styleStr.AppendFloat(sHeight/aZoomLevel);
|
||||
styleStr.AppendFloat(StaticPrefs::layout_accessiblecaret_height() / aZoomLevel);
|
||||
styleStr.AppendLiteral("px; margin-left: ");
|
||||
styleStr.AppendFloat(sMarginLeft/aZoomLevel);
|
||||
styleStr.AppendFloat(
|
||||
StaticPrefs::layout_accessiblecaret_margin_left() / aZoomLevel);
|
||||
styleStr.AppendLiteral("px");
|
||||
|
||||
CaretElement().SetAttr(kNameSpaceID_None, nsGkAtoms::style, styleStr, true);
|
||||
|
|
|
@ -229,9 +229,6 @@ protected:
|
|||
RefPtr<DummyTouchListener> mDummyTouchListener{new DummyTouchListener()};
|
||||
|
||||
// Static class variables
|
||||
static float sWidth;
|
||||
static float sHeight;
|
||||
static float sMarginLeft;
|
||||
static const nsLiteralString sTextOverlayElementId;
|
||||
static const nsLiteralString sCaretImageElementId;
|
||||
|
||||
|
|
|
@ -12,9 +12,9 @@
|
|||
#include "gfxPrefs.h"
|
||||
#include "mozilla/AutoRestore.h"
|
||||
#include "mozilla/MouseEvents.h"
|
||||
#include "mozilla/StaticPrefs.h"
|
||||
#include "mozilla/TextEvents.h"
|
||||
#include "mozilla/TouchEvents.h"
|
||||
#include "mozilla/Preferences.h"
|
||||
#include "mozilla/dom/MouseEventBinding.h"
|
||||
#include "mozilla/dom/Selection.h"
|
||||
#include "nsCanvasFrame.h"
|
||||
|
@ -363,17 +363,9 @@ MOZ_IMPL_STATE_CLASS_GETTER(PressNoCaretState)
|
|||
MOZ_IMPL_STATE_CLASS_GETTER(ScrollState)
|
||||
MOZ_IMPL_STATE_CLASS_GETTER(LongTapState)
|
||||
|
||||
bool AccessibleCaretEventHub::sUseLongTapInjector = false;
|
||||
|
||||
AccessibleCaretEventHub::AccessibleCaretEventHub(nsIPresShell* aPresShell)
|
||||
: mPresShell(aPresShell)
|
||||
{
|
||||
static bool prefsAdded = false;
|
||||
if (!prefsAdded) {
|
||||
Preferences::AddBoolVarCache(
|
||||
&sUseLongTapInjector, "layout.accessiblecaret.use_long_tap_injector");
|
||||
prefsAdded = true;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -416,7 +408,7 @@ AccessibleCaretEventHub::Init()
|
|||
|
||||
mDocShell = static_cast<nsDocShell*>(docShell);
|
||||
|
||||
if (sUseLongTapInjector) {
|
||||
if (StaticPrefs::layout_accessiblecaret_use_long_tap_injector()) {
|
||||
mLongTapInjectorTimer = NS_NewTimer();
|
||||
}
|
||||
|
||||
|
|
|
@ -179,9 +179,6 @@ protected:
|
|||
// Flag to avoid calling Reflow() callback recursively.
|
||||
bool mIsInReflowCallback = false;
|
||||
|
||||
// Simulate long tap if the platform does not support eMouseLongTap events.
|
||||
static bool sUseLongTapInjector;
|
||||
|
||||
static const int32_t kMoveStartToleranceInPixel = 5;
|
||||
static const int32_t kInvalidTouchId = -1;
|
||||
static const int32_t kDefaultTouchId = 0; // For mouse event
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
#include "mozilla/dom/TreeWalker.h"
|
||||
#include "mozilla/IMEStateManager.h"
|
||||
#include "mozilla/IntegerPrintfMacros.h"
|
||||
#include "mozilla/Preferences.h"
|
||||
#include "mozilla/StaticPrefs.h"
|
||||
#include "nsCaret.h"
|
||||
#include "nsContainerFrame.h"
|
||||
#include "nsContentUtils.h"
|
||||
|
@ -72,22 +72,6 @@ std::ostream& operator<<(std::ostream& aStream,
|
|||
}
|
||||
#undef AC_PROCESS_ENUM_TO_STREAM
|
||||
|
||||
/* static */ bool
|
||||
AccessibleCaretManager::sCaretShownWhenLongTappingOnEmptyContent = false;
|
||||
/* static */ bool
|
||||
AccessibleCaretManager::sCaretsAlwaysTilt = false;
|
||||
/* static */ int32_t
|
||||
AccessibleCaretManager::sCaretsScriptUpdates =
|
||||
AccessibleCaretManager::kScriptAlwaysHide;
|
||||
/* static */ bool
|
||||
AccessibleCaretManager::sCaretsAllowDraggingAcrossOtherCaret = true;
|
||||
/* static */ bool
|
||||
AccessibleCaretManager::sHapticFeedback = false;
|
||||
/* static */ bool
|
||||
AccessibleCaretManager::sExtendSelectionForPhoneNumber = false;
|
||||
/* static */ bool
|
||||
AccessibleCaretManager::sHideCaretsForMouseInput = true;
|
||||
|
||||
AccessibleCaretManager::AccessibleCaretManager(nsIPresShell* aPresShell)
|
||||
: mPresShell(aPresShell)
|
||||
{
|
||||
|
@ -97,25 +81,6 @@ AccessibleCaretManager::AccessibleCaretManager(nsIPresShell* aPresShell)
|
|||
|
||||
mFirstCaret = MakeUnique<AccessibleCaret>(mPresShell);
|
||||
mSecondCaret = MakeUnique<AccessibleCaret>(mPresShell);
|
||||
|
||||
static bool addedPrefs = false;
|
||||
if (!addedPrefs) {
|
||||
Preferences::AddBoolVarCache(&sCaretShownWhenLongTappingOnEmptyContent,
|
||||
"layout.accessiblecaret.caret_shown_when_long_tapping_on_empty_content");
|
||||
Preferences::AddBoolVarCache(&sCaretsAlwaysTilt,
|
||||
"layout.accessiblecaret.always_tilt");
|
||||
Preferences::AddIntVarCache(&sCaretsScriptUpdates,
|
||||
"layout.accessiblecaret.script_change_update_mode");
|
||||
Preferences::AddBoolVarCache(&sCaretsAllowDraggingAcrossOtherCaret,
|
||||
"layout.accessiblecaret.allow_dragging_across_other_caret", true);
|
||||
Preferences::AddBoolVarCache(&sHapticFeedback,
|
||||
"layout.accessiblecaret.hapticfeedback");
|
||||
Preferences::AddBoolVarCache(&sExtendSelectionForPhoneNumber,
|
||||
"layout.accessiblecaret.extend_selection_for_phone_number");
|
||||
Preferences::AddBoolVarCache(&sHideCaretsForMouseInput,
|
||||
"layout.accessiblecaret.hide_carets_for_mouse_input");
|
||||
addedPrefs = true;
|
||||
}
|
||||
}
|
||||
|
||||
AccessibleCaretManager::~AccessibleCaretManager()
|
||||
|
@ -153,8 +118,10 @@ AccessibleCaretManager::OnSelectionChanged(nsIDocument* aDoc,
|
|||
|
||||
// Move the cursor by JavaScript or unknown internal call.
|
||||
if (aReason == nsISelectionListener::NO_REASON) {
|
||||
if (sCaretsScriptUpdates == kScriptAlwaysShow ||
|
||||
(sCaretsScriptUpdates == kScriptUpdateVisible &&
|
||||
auto mode = static_cast<ScriptUpdateMode>(
|
||||
StaticPrefs::layout_accessiblecaret_script_change_update_mode());
|
||||
if (mode == kScriptAlwaysShow ||
|
||||
(mode == kScriptUpdateVisible &&
|
||||
(mFirstCaret->IsLogicallyVisible() ||
|
||||
mSecondCaret->IsLogicallyVisible()))) {
|
||||
UpdateCarets();
|
||||
|
@ -186,7 +153,7 @@ AccessibleCaretManager::OnSelectionChanged(nsIDocument* aDoc,
|
|||
}
|
||||
|
||||
// For mouse input we don't want to show the carets.
|
||||
if (sHideCaretsForMouseInput &&
|
||||
if (StaticPrefs::layout_accessiblecaret_hide_carets_for_mouse_input() &&
|
||||
mLastInputSource == MouseEvent_Binding::MOZ_SOURCE_MOUSE) {
|
||||
HideCarets();
|
||||
return NS_OK;
|
||||
|
@ -194,7 +161,7 @@ AccessibleCaretManager::OnSelectionChanged(nsIDocument* aDoc,
|
|||
|
||||
// When we want to hide the carets for mouse input, hide them for select
|
||||
// all action fired by keyboard as well.
|
||||
if (sHideCaretsForMouseInput &&
|
||||
if (StaticPrefs::layout_accessiblecaret_hide_carets_for_mouse_input() &&
|
||||
mLastInputSource == MouseEvent_Binding::MOZ_SOURCE_KEYBOARD &&
|
||||
(aReason & nsISelectionListener::SELECTALL_REASON)) {
|
||||
HideCarets();
|
||||
|
@ -296,7 +263,7 @@ AccessibleCaretManager::UpdateCaretsForCursorMode(const UpdateCaretsHintSet& aHi
|
|||
if (aHints == UpdateCaretsHint::Default) {
|
||||
if (HasNonEmptyTextContent(GetEditingHostForFrame(frame))) {
|
||||
mFirstCaret->SetAppearance(Appearance::Normal);
|
||||
} else if (sCaretShownWhenLongTappingOnEmptyContent) {
|
||||
} else if (StaticPrefs::layout_accessiblecaret_caret_shown_when_long_tapping_on_empty_content()) {
|
||||
if (mFirstCaret->IsLogicallyVisible()) {
|
||||
// Possible cases are: 1) SelectWordOrShortcut() sets the
|
||||
// appearance to Normal. 2) When the caret is out of viewport and
|
||||
|
@ -392,7 +359,7 @@ AccessibleCaretManager::UpdateCaretsForSelectionMode(const UpdateCaretsHintSet&
|
|||
if (aHints == UpdateCaretsHint::Default) {
|
||||
// Only check for tilt carets with default update hint. Otherwise we might
|
||||
// override the appearance set by the caller.
|
||||
if (sCaretsAlwaysTilt) {
|
||||
if (StaticPrefs::layout_accessiblecaret_always_tilt()) {
|
||||
UpdateCaretsForAlwaysTilt(startFrame, endFrame);
|
||||
} else {
|
||||
UpdateCaretsForOverlappingTilt();
|
||||
|
@ -455,7 +422,7 @@ AccessibleCaretManager::UpdateCaretsForAlwaysTilt(nsIFrame* aStartFrame,
|
|||
void
|
||||
AccessibleCaretManager::ProvideHapticFeedback()
|
||||
{
|
||||
if (sHapticFeedback) {
|
||||
if (StaticPrefs::layout_accessiblecaret_hapticfeedback()) {
|
||||
nsCOMPtr<nsIHapticFeedback> haptic =
|
||||
do_GetService("@mozilla.org/widget/hapticfeedback;1");
|
||||
haptic->PerformSimpleAction(haptic->LongPress);
|
||||
|
@ -592,7 +559,7 @@ AccessibleCaretManager::SelectWordOrShortcut(const nsPoint& aPoint)
|
|||
!HasNonEmptyTextContent(newFocusEditingHost)) {
|
||||
ChangeFocusToOrClearOldFocus(focusableFrame);
|
||||
|
||||
if (sCaretShownWhenLongTappingOnEmptyContent) {
|
||||
if (StaticPrefs::layout_accessiblecaret_caret_shown_when_long_tapping_on_empty_content()) {
|
||||
mFirstCaret->SetAppearance(Appearance::Normal);
|
||||
}
|
||||
// We need to update carets to get correct information before dispatching
|
||||
|
@ -670,7 +637,7 @@ AccessibleCaretManager::OnScrollEnd()
|
|||
}
|
||||
|
||||
// For mouse input we don't want to show the carets.
|
||||
if (sHideCaretsForMouseInput &&
|
||||
if (StaticPrefs::layout_accessiblecaret_hide_carets_for_mouse_input() &&
|
||||
mLastInputSource == MouseEvent_Binding::MOZ_SOURCE_MOUSE) {
|
||||
AC_LOG("%s: HideCarets()", __FUNCTION__);
|
||||
HideCarets();
|
||||
|
@ -880,7 +847,7 @@ AccessibleCaretManager::SelectWord(nsIFrame* aFrame, const nsPoint& aPoint) cons
|
|||
ClearMaintainedSelection();
|
||||
|
||||
// Smart-select phone numbers if possible.
|
||||
if (sExtendSelectionForPhoneNumber) {
|
||||
if (StaticPrefs::layout_accessiblecaret_extend_selection_for_phone_number()) {
|
||||
SelectMoreIfPhoneNumber();
|
||||
}
|
||||
|
||||
|
@ -1157,7 +1124,7 @@ AccessibleCaretManager::RestrictCaretDraggingOffsets(
|
|||
aOffsets.secondaryOffset = limit.mContentOffset;
|
||||
};
|
||||
|
||||
if (!sCaretsAllowDraggingAcrossOtherCaret) {
|
||||
if (!StaticPrefs::layout_accessiblecaret_allow_dragging_across_other_caret()) {
|
||||
if ((mActiveCaret == mFirstCaret.get() && cmpToLimit == 1) ||
|
||||
(mActiveCaret == mSecondCaret.get() && cmpToLimit == -1)) {
|
||||
// The active caret's position is past the limit, which we don't allow
|
||||
|
@ -1323,7 +1290,7 @@ AccessibleCaretManager::AdjustDragBoundary(const nsPoint& aPoint) const
|
|||
}
|
||||
|
||||
if (GetCaretMode() == CaretMode::Selection &&
|
||||
!sCaretsAllowDraggingAcrossOtherCaret) {
|
||||
!StaticPrefs::layout_accessiblecaret_allow_dragging_across_other_caret()) {
|
||||
// Bug 1068474: Adjust the Y-coordinate so that the carets won't be in tilt
|
||||
// mode when a caret is being dragged surpass the other caret.
|
||||
//
|
||||
|
|
|
@ -331,20 +331,6 @@ protected:
|
|||
// AppUnit.h.
|
||||
static const int32_t kBoundaryAppUnits = 61;
|
||||
|
||||
// Preference to allow smarter selection of phone numbers,
|
||||
// when user long presses text to start.
|
||||
static bool sExtendSelectionForPhoneNumber;
|
||||
|
||||
// Preference to show caret in cursor mode when long tapping on an empty
|
||||
// content. This also changes the default update behavior in cursor mode,
|
||||
// which is based on the emptiness of the content, into something more
|
||||
// heuristic. See UpdateCaretsForCursorMode() for the details.
|
||||
static bool sCaretShownWhenLongTappingOnEmptyContent;
|
||||
|
||||
// Preference to make carets always tilt in selection mode. By default, the
|
||||
// carets become tilt only when they are overlapping.
|
||||
static bool sCaretsAlwaysTilt;
|
||||
|
||||
enum ScriptUpdateMode : int32_t {
|
||||
// By default, always hide carets for selection changes due to JS calls.
|
||||
kScriptAlwaysHide,
|
||||
|
@ -354,22 +340,6 @@ protected:
|
|||
// Always show carets for selection changes due to JS calls.
|
||||
kScriptAlwaysShow
|
||||
};
|
||||
|
||||
// Preference to indicate how to update carets for selection changes due to
|
||||
// JS calls, as one of the ScriptUpdateMode constants.
|
||||
static int32_t sCaretsScriptUpdates;
|
||||
|
||||
// Preference to allow one caret to be dragged across the other caret without
|
||||
// any limitation. When set to false, one caret cannot be dragged across the
|
||||
// other one.
|
||||
static bool sCaretsAllowDraggingAcrossOtherCaret;
|
||||
|
||||
// AccessibleCaret pref for haptic feedback behaviour on longPress.
|
||||
static bool sHapticFeedback;
|
||||
|
||||
// Preference to keep carets hidden when the selection is being manipulated
|
||||
// by mouse input (as opposed to touch/pen/etc.).
|
||||
static bool sHideCaretsForMouseInput;
|
||||
};
|
||||
|
||||
std::ostream& operator<<(std::ostream& aStream,
|
||||
|
|
|
@ -23,6 +23,7 @@
|
|||
#include "mozilla/Logging.h"
|
||||
#include "mozilla/MouseEvents.h"
|
||||
#include "mozilla/Sprintf.h"
|
||||
#include "mozilla/StaticPrefs.h"
|
||||
#include "mozilla/TextEvents.h"
|
||||
#include "mozilla/TimeStamp.h"
|
||||
#include "mozilla/TouchEvents.h"
|
||||
|
@ -725,25 +726,18 @@ nsIPresShell::FrameSelection()
|
|||
|
||||
static bool sSynthMouseMove = true;
|
||||
static uint32_t sNextPresShellId;
|
||||
static bool sAccessibleCaretEnabled = false;
|
||||
static bool sAccessibleCaretOnTouch = false;
|
||||
|
||||
/* static */ bool
|
||||
PresShell::AccessibleCaretEnabled(nsIDocShell* aDocShell)
|
||||
{
|
||||
static bool initialized = false;
|
||||
if (!initialized) {
|
||||
Preferences::AddBoolVarCache(&sAccessibleCaretEnabled, "layout.accessiblecaret.enabled");
|
||||
Preferences::AddBoolVarCache(&sAccessibleCaretOnTouch, "layout.accessiblecaret.enabled_on_touch");
|
||||
initialized = true;
|
||||
}
|
||||
// If the pref forces it on, then enable it.
|
||||
if (sAccessibleCaretEnabled) {
|
||||
if (StaticPrefs::layout_accessiblecaret_enabled()) {
|
||||
return true;
|
||||
}
|
||||
// If the touch pref is on, and touch events are enabled (this depends
|
||||
// on the specific device running), then enable it.
|
||||
if (sAccessibleCaretOnTouch && dom::TouchEvent::PrefEnabled(aDocShell)) {
|
||||
if (StaticPrefs::layout_accessiblecaret_enabled_on_touch() &&
|
||||
dom::TouchEvent::PrefEnabled(aDocShell)) {
|
||||
return true;
|
||||
}
|
||||
// Otherwise, disabled.
|
||||
|
|
|
@ -11,7 +11,8 @@
|
|||
|
||||
#include "AccessibleCaret.h"
|
||||
#include "AccessibleCaretManager.h"
|
||||
#include "mozilla/AutoRestore.h"
|
||||
#include "mozilla/Preferences.h"
|
||||
#include "mozilla/StaticPrefs.h"
|
||||
|
||||
using ::testing::DefaultValue;
|
||||
using ::testing::Eq;
|
||||
|
@ -53,8 +54,6 @@ public:
|
|||
using CaretMode = AccessibleCaretManager::CaretMode;
|
||||
using AccessibleCaretManager::UpdateCarets;
|
||||
using AccessibleCaretManager::HideCarets;
|
||||
using AccessibleCaretManager::sCaretShownWhenLongTappingOnEmptyContent;
|
||||
using AccessibleCaretManager::sCaretsAlwaysTilt;
|
||||
|
||||
MockAccessibleCaretManager()
|
||||
: AccessibleCaretManager(nullptr)
|
||||
|
@ -434,9 +433,8 @@ TEST_F(AccessibleCaretManagerTester,
|
|||
MOZ_CAN_RUN_SCRIPT
|
||||
{
|
||||
// Simulate Firefox Android preference.
|
||||
AutoRestore<bool> saveCaretsAlwaysTilt(
|
||||
MockAccessibleCaretManager::sCaretsAlwaysTilt);
|
||||
MockAccessibleCaretManager::sCaretsAlwaysTilt = true;
|
||||
bool oldPref = StaticPrefs::layout_accessiblecaret_always_tilt();
|
||||
Preferences::SetBool("layout.accessiblecaret.always_tilt", true);
|
||||
|
||||
EXPECT_CALL(mManager, GetCaretMode())
|
||||
.WillRepeatedly(Return(CaretMode::Selection));
|
||||
|
@ -534,6 +532,8 @@ MOZ_CAN_RUN_SCRIPT
|
|||
EXPECT_EQ(FirstCaretAppearance(), Appearance::Left);
|
||||
EXPECT_EQ(SecondCaretAppearance(), Appearance::Right);
|
||||
check.Call("scrollend2");
|
||||
|
||||
Preferences::SetBool("layout.accessiblecaret.always_tilt", oldPref);
|
||||
}
|
||||
|
||||
TEST_F(AccessibleCaretManagerTester, TestScrollInCursorModeWhenLogicallyVisible)
|
||||
|
@ -728,9 +728,8 @@ TEST_F(AccessibleCaretManagerTester,
|
|||
MOZ_CAN_RUN_SCRIPT
|
||||
{
|
||||
// Simulate Firefox Android preference.
|
||||
AutoRestore<bool> savesCaretShownWhenLongTappingOnEmptyContent(
|
||||
MockAccessibleCaretManager::sCaretShownWhenLongTappingOnEmptyContent);
|
||||
MockAccessibleCaretManager::sCaretShownWhenLongTappingOnEmptyContent = true;
|
||||
bool oldPref = StaticPrefs::layout_accessiblecaret_caret_shown_when_long_tapping_on_empty_content();
|
||||
Preferences::SetBool("layout.accessiblecaret.caret_shown_when_long_tapping_on_empty_content", true);
|
||||
|
||||
EXPECT_CALL(mManager, GetCaretMode())
|
||||
.WillRepeatedly(Return(CaretMode::Cursor));
|
||||
|
@ -816,6 +815,8 @@ MOZ_CAN_RUN_SCRIPT
|
|||
mManager.OnScrollEnd();
|
||||
EXPECT_EQ(FirstCaretAppearance(), Appearance::Normal);
|
||||
check.Call("longtap scrollend3");
|
||||
|
||||
Preferences::SetBool("layout.accessiblecaret.caret_shown_when_long_tapping_on_empty_content", oldPref);
|
||||
}
|
||||
|
||||
} // namespace mozilla
|
||||
|
|
|
@ -0,0 +1,23 @@
|
|||
<style>
|
||||
#a {
|
||||
grid-auto-rows: min-content;
|
||||
display: grid;
|
||||
}
|
||||
:not(html) {
|
||||
margin-bottom: -1vmin;
|
||||
column-width: 0;
|
||||
}
|
||||
</style>
|
||||
<script>
|
||||
function go() {
|
||||
a.appendChild(b);
|
||||
document.documentElement.style.display = "none"
|
||||
document.documentElement.getBoundingClientRect()
|
||||
document.documentElement.style.display = ""
|
||||
}
|
||||
</script>
|
||||
<a id="a">A</a>
|
||||
<ul>
|
||||
<li>
|
||||
<audio onloadstart="go()" src="">
|
||||
<keygen id="b">
|
|
@ -0,0 +1,20 @@
|
|||
<html>
|
||||
<head>
|
||||
<title>AddressSanitizer: SEGV /builds/worker/workspace/build/src/obj-firefox/dist/include/nsTArray.h in Length</title>
|
||||
<style class="">
|
||||
@namespace math url(http://www.w3.org/1998/Math/MathML);
|
||||
*>* {
|
||||
display: grid;
|
||||
max-block-size: calc(3*25px + 50%);
|
||||
-webkit-align-self: start;
|
||||
grid-template-rows: repeat(auto-fill, minmax(1ch, min-content)) minmax(min-content, 0);
|
||||
}
|
||||
|
||||
*,
|
||||
HTML {
|
||||
-moz-columns: 2 10px;
|
||||
page-break-inside: avoid !important;
|
||||
|
||||
</style>
|
||||
</head>
|
||||
</html>
|
|
@ -708,3 +708,5 @@ load 1483972.html
|
|||
load 1486457.html
|
||||
load 1489287.html
|
||||
load 1489863.html
|
||||
load 1489770.html
|
||||
load 1490032.html
|
|
@ -356,6 +356,9 @@ FRAME_STATE_BIT(GridContainer, 26, NS_STATE_GRID_HAS_COL_SUBGRID_ITEM)
|
|||
// The container contains one or more items subgridded in its block axis.
|
||||
FRAME_STATE_BIT(GridContainer, 27, NS_STATE_GRID_HAS_ROW_SUBGRID_ITEM)
|
||||
|
||||
// We've merged some OverflowList children since last reflow.
|
||||
FRAME_STATE_BIT(GridContainer, 28, NS_STATE_GRID_HAS_CHILD_NIFS)
|
||||
|
||||
// == Frame state bits that apply to SVG frames ===============================
|
||||
|
||||
FRAME_STATE_GROUP(SVG, nsSVGDisplayableFrame)
|
||||
|
|
|
@ -3604,7 +3604,8 @@ MeasuringReflow(nsIFrame* aChild,
|
|||
|
||||
ReflowOutput childSize(childRI);
|
||||
nsReflowStatus childStatus;
|
||||
const uint32_t flags = NS_FRAME_NO_MOVE_FRAME | NS_FRAME_NO_SIZE_VIEW;
|
||||
const uint32_t flags = NS_FRAME_NO_MOVE_FRAME | NS_FRAME_NO_SIZE_VIEW |
|
||||
NS_FRAME_NO_DELETE_NEXT_IN_FLOW_CHILD;
|
||||
parent->ReflowChild(aChild, pc, childSize, childRI, wm,
|
||||
LogicalPoint(wm), nsSize(), flags, childStatus);
|
||||
nsContainerFrame::FinishReflowChild(aChild, pc, childSize, &childRI, wm,
|
||||
|
@ -5477,13 +5478,13 @@ nsGridContainerFrame::ReflowRowsInFragmentainer(
|
|||
}
|
||||
|
||||
// aFragmentainer.mIsTopOfPage is propagated to the child reflow state.
|
||||
// When it's false the child can request BREAK_BEFORE. We intentionally
|
||||
// set it to false when the row is growable (as determined in CSS Grid
|
||||
// Fragmentation) and there is a non-zero space between it and the
|
||||
// When it's false the child may request InlineBreak::Before. We set it
|
||||
// to false when the row is growable (as determined in the CSS Grid
|
||||
// Fragmentation spec) and there is a non-zero space between it and the
|
||||
// fragmentainer end (that can be used to grow it). If the child reports
|
||||
// a forced break in this case, we grow this row to fill the fragment and
|
||||
// restart the loop. We also restart the loop with |aEndRow = row|
|
||||
// (but without growing any row) for a BREAK_BEFORE child if it spans
|
||||
// (but without growing any row) for a InlineBreak::Before child if it spans
|
||||
// beyond the last row in this fragment. This is to avoid fragmenting it.
|
||||
// We only restart the loop once.
|
||||
aFragmentainer.mIsTopOfPage = isRowTopOfPage && !rowCanGrow;
|
||||
|
@ -5503,7 +5504,7 @@ nsGridContainerFrame::ReflowRowsInFragmentainer(
|
|||
|
||||
if (childStatus.IsInlineBreakBefore()) {
|
||||
MOZ_ASSERT(!child->GetPrevInFlow(),
|
||||
"continuations should never report BREAK_BEFORE status");
|
||||
"continuations should never report InlineBreak::Before status");
|
||||
MOZ_ASSERT(!aFragmentainer.mIsTopOfPage,
|
||||
"got IsInlineBreakBefore() at top of page");
|
||||
if (!didGrowRow) {
|
||||
|
@ -5544,16 +5545,23 @@ nsGridContainerFrame::ReflowRowsInFragmentainer(
|
|||
aStatus.SetIncomplete();
|
||||
continue;
|
||||
}
|
||||
NS_ERROR("got BREAK_BEFORE at top-of-page");
|
||||
NS_ERROR("got InlineBreak::Before at top-of-page");
|
||||
childStatus.Reset();
|
||||
} else {
|
||||
NS_ERROR("got BREAK_BEFORE again after growing the row?");
|
||||
childStatus.SetIncomplete();
|
||||
// We got InlineBreak::Before again after growing the row - this can happen
|
||||
// if the child isn't splittable, e.g. some form controls.
|
||||
childStatus.Reset();
|
||||
if (child->GetNextInFlow()) {
|
||||
// The child already has a fragment, so we know it's splittable.
|
||||
childStatus.SetIncomplete();
|
||||
} // else, report that it's complete
|
||||
}
|
||||
} else if (childStatus.IsInlineBreakAfter()) {
|
||||
MOZ_ASSERT_UNREACHABLE("unexpected child reflow status");
|
||||
}
|
||||
|
||||
MOZ_ASSERT(!childStatus.IsInlineBreakBefore(),
|
||||
"should've handled InlineBreak::Before above");
|
||||
if (childStatus.IsIncomplete()) {
|
||||
incompleteItems.PutEntry(child);
|
||||
} else if (!childStatus.IsFullyComplete()) {
|
||||
|
@ -5881,6 +5889,31 @@ nsGridContainerFrame::Reflow(nsPresContext* aPresContext,
|
|||
}
|
||||
}
|
||||
|
||||
// Push any child next-in-flows in our principal list to OverflowList.
|
||||
if (HasAnyStateBits(NS_STATE_GRID_HAS_CHILD_NIFS)) {
|
||||
nsFrameList framesToPush;
|
||||
nsIFrame* firstChild = mFrames.FirstChild();
|
||||
// Note that we potentially modify our mFrames list as we go.
|
||||
for (auto child = firstChild; child; child = child->GetNextSibling()) {
|
||||
if (auto* childNIF = child->GetNextInFlow()) {
|
||||
if (childNIF->GetParent() == this) {
|
||||
for (auto c = child->GetNextSibling(); c; c = c->GetNextSibling()) {
|
||||
if (c == childNIF) {
|
||||
// child's next-in-flow is in our principal child list, push it.
|
||||
mFrames.RemoveFrame(childNIF);
|
||||
framesToPush.AppendFrame(nullptr, childNIF);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!framesToPush.IsEmpty()) {
|
||||
MergeSortedOverflow(framesToPush);
|
||||
}
|
||||
RemoveStateBits(NS_STATE_GRID_HAS_CHILD_NIFS);
|
||||
}
|
||||
|
||||
// Pull up any first-in-flow children we might have pushed.
|
||||
if (HasAnyStateBits(NS_STATE_GRID_DID_PUSH_ITEMS)) {
|
||||
RemoveStateBits(NS_STATE_GRID_DID_PUSH_ITEMS);
|
||||
|
@ -6546,10 +6579,14 @@ nsGridContainerFrame::DrainSelfOverflowList()
|
|||
{
|
||||
// Unlike nsContainerFrame::DrainSelfOverflowList we need to merge these lists
|
||||
// so that the resulting mFrames is in document content order.
|
||||
// NOTE: nsContainerFrame::AppendFrames/InsertFrames calls this method.
|
||||
// NOTE: nsContainerFrame::AppendFrames/InsertFrames calls this method and
|
||||
// there are also direct calls from the fctor (FindAppendPrevSibling).
|
||||
AutoFrameListPtr overflowFrames(PresContext(), StealOverflowFrames());
|
||||
if (overflowFrames) {
|
||||
::MergeSortedFrameLists(mFrames, *overflowFrames, GetContent());
|
||||
// We set a frame bit to push them again in Reflow() to avoid creating
|
||||
// multiple grid items per grid container fragment for the same content.
|
||||
AddStateBits(NS_STATE_GRID_HAS_CHILD_NIFS);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
diff --git a/media/libvpx/libvpx/configure b/media/libvpx/libvpx/configure
|
||||
index e5a74c6..12bab6c 100755
|
||||
--- a/media/libvpx/libvpx/configure
|
||||
+++ b/media/libvpx/libvpx/configure
|
||||
@@ -159,6 +159,7 @@ all_platforms="${all_platforms} x86_64-win64-vs11"
|
||||
all_platforms="${all_platforms} x86_64-win64-vs12"
|
||||
all_platforms="${all_platforms} x86_64-win64-vs14"
|
||||
all_platforms="${all_platforms} x86_64-win64-vs15"
|
||||
+all_platforms="${all_platforms} aarch64-win64-vs12"
|
||||
all_platforms="${all_platforms} generic-gnu"
|
||||
|
||||
# all_targets is a list of all targets that can be configured
|
|
@ -0,0 +1,167 @@
|
|||
// This file is generated. Do not edit.
|
||||
#ifndef VP8_RTCD_H_
|
||||
#define VP8_RTCD_H_
|
||||
|
||||
#ifdef RTCD_C
|
||||
#define RTCD_EXTERN
|
||||
#else
|
||||
#define RTCD_EXTERN extern
|
||||
#endif
|
||||
|
||||
/*
|
||||
* VP8
|
||||
*/
|
||||
|
||||
struct blockd;
|
||||
struct macroblockd;
|
||||
struct loop_filter_info;
|
||||
|
||||
/* Encoder forward decls */
|
||||
struct block;
|
||||
struct macroblock;
|
||||
struct variance_vtable;
|
||||
union int_mv;
|
||||
struct yv12_buffer_config;
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
void vp8_bilinear_predict16x16_c(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
|
||||
#define vp8_bilinear_predict16x16 vp8_bilinear_predict16x16_c
|
||||
|
||||
void vp8_bilinear_predict4x4_c(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
|
||||
#define vp8_bilinear_predict4x4 vp8_bilinear_predict4x4_c
|
||||
|
||||
void vp8_bilinear_predict8x4_c(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
|
||||
#define vp8_bilinear_predict8x4 vp8_bilinear_predict8x4_c
|
||||
|
||||
void vp8_bilinear_predict8x8_c(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
|
||||
#define vp8_bilinear_predict8x8 vp8_bilinear_predict8x8_c
|
||||
|
||||
int vp8_block_error_c(short *coeff, short *dqcoeff);
|
||||
#define vp8_block_error vp8_block_error_c
|
||||
|
||||
void vp8_copy_mem16x16_c(unsigned char *src, int src_pitch, unsigned char *dst, int dst_pitch);
|
||||
#define vp8_copy_mem16x16 vp8_copy_mem16x16_c
|
||||
|
||||
void vp8_copy_mem8x4_c(unsigned char *src, int src_pitch, unsigned char *dst, int dst_pitch);
|
||||
#define vp8_copy_mem8x4 vp8_copy_mem8x4_c
|
||||
|
||||
void vp8_copy_mem8x8_c(unsigned char *src, int src_pitch, unsigned char *dst, int dst_pitch);
|
||||
#define vp8_copy_mem8x8 vp8_copy_mem8x8_c
|
||||
|
||||
void vp8_dc_only_idct_add_c(short input, unsigned char *pred, int pred_stride, unsigned char *dst, int dst_stride);
|
||||
#define vp8_dc_only_idct_add vp8_dc_only_idct_add_c
|
||||
|
||||
int vp8_denoiser_filter_c(unsigned char *mc_running_avg_y, int mc_avg_y_stride, unsigned char *running_avg_y, int avg_y_stride, unsigned char *sig, int sig_stride, unsigned int motion_magnitude, int increase_denoising);
|
||||
#define vp8_denoiser_filter vp8_denoiser_filter_c
|
||||
|
||||
int vp8_denoiser_filter_uv_c(unsigned char *mc_running_avg, int mc_avg_stride, unsigned char *running_avg, int avg_stride, unsigned char *sig, int sig_stride, unsigned int motion_magnitude, int increase_denoising);
|
||||
#define vp8_denoiser_filter_uv vp8_denoiser_filter_uv_c
|
||||
|
||||
void vp8_dequant_idct_add_c(short *input, short *dq, unsigned char *output, int stride);
|
||||
#define vp8_dequant_idct_add vp8_dequant_idct_add_c
|
||||
|
||||
void vp8_dequant_idct_add_uv_block_c(short *q, short *dq, unsigned char *dst_u, unsigned char *dst_v, int stride, char *eobs);
|
||||
#define vp8_dequant_idct_add_uv_block vp8_dequant_idct_add_uv_block_c
|
||||
|
||||
void vp8_dequant_idct_add_y_block_c(short *q, short *dq, unsigned char *dst, int stride, char *eobs);
|
||||
#define vp8_dequant_idct_add_y_block vp8_dequant_idct_add_y_block_c
|
||||
|
||||
void vp8_dequantize_b_c(struct blockd*, short *dqc);
|
||||
#define vp8_dequantize_b vp8_dequantize_b_c
|
||||
|
||||
int vp8_diamond_search_sad_c(struct macroblock *x, struct block *b, struct blockd *d, union int_mv *ref_mv, union int_mv *best_mv, int search_param, int sad_per_bit, int *num00, struct variance_vtable *fn_ptr, int *mvcost[2], union int_mv *center_mv);
|
||||
#define vp8_diamond_search_sad vp8_diamond_search_sad_c
|
||||
|
||||
void vp8_fast_quantize_b_c(struct block *, struct blockd *);
|
||||
#define vp8_fast_quantize_b vp8_fast_quantize_b_c
|
||||
|
||||
int vp8_full_search_sad_c(struct macroblock *x, struct block *b, struct blockd *d, union int_mv *ref_mv, int sad_per_bit, int distance, struct variance_vtable *fn_ptr, int *mvcost[2], union int_mv *center_mv);
|
||||
#define vp8_full_search_sad vp8_full_search_sad_c
|
||||
|
||||
void vp8_loop_filter_bh_c(unsigned char *y, unsigned char *u, unsigned char *v, int ystride, int uv_stride, struct loop_filter_info *lfi);
|
||||
#define vp8_loop_filter_bh vp8_loop_filter_bh_c
|
||||
|
||||
void vp8_loop_filter_bv_c(unsigned char *y, unsigned char *u, unsigned char *v, int ystride, int uv_stride, struct loop_filter_info *lfi);
|
||||
#define vp8_loop_filter_bv vp8_loop_filter_bv_c
|
||||
|
||||
void vp8_loop_filter_mbh_c(unsigned char *y, unsigned char *u, unsigned char *v, int ystride, int uv_stride, struct loop_filter_info *lfi);
|
||||
#define vp8_loop_filter_mbh vp8_loop_filter_mbh_c
|
||||
|
||||
void vp8_loop_filter_mbv_c(unsigned char *y, unsigned char *u, unsigned char *v, int ystride, int uv_stride, struct loop_filter_info *lfi);
|
||||
#define vp8_loop_filter_mbv vp8_loop_filter_mbv_c
|
||||
|
||||
void vp8_loop_filter_bhs_c(unsigned char *y, int ystride, const unsigned char *blimit);
|
||||
#define vp8_loop_filter_simple_bh vp8_loop_filter_bhs_c
|
||||
|
||||
void vp8_loop_filter_bvs_c(unsigned char *y, int ystride, const unsigned char *blimit);
|
||||
#define vp8_loop_filter_simple_bv vp8_loop_filter_bvs_c
|
||||
|
||||
void vp8_loop_filter_simple_horizontal_edge_c(unsigned char *y, int ystride, const unsigned char *blimit);
|
||||
#define vp8_loop_filter_simple_mbh vp8_loop_filter_simple_horizontal_edge_c
|
||||
|
||||
void vp8_loop_filter_simple_vertical_edge_c(unsigned char *y, int ystride, const unsigned char *blimit);
|
||||
#define vp8_loop_filter_simple_mbv vp8_loop_filter_simple_vertical_edge_c
|
||||
|
||||
int vp8_mbblock_error_c(struct macroblock *mb, int dc);
|
||||
#define vp8_mbblock_error vp8_mbblock_error_c
|
||||
|
||||
int vp8_mbuverror_c(struct macroblock *mb);
|
||||
#define vp8_mbuverror vp8_mbuverror_c
|
||||
|
||||
int vp8_refining_search_sad_c(struct macroblock *x, struct block *b, struct blockd *d, union int_mv *ref_mv, int sad_per_bit, int distance, struct variance_vtable *fn_ptr, int *mvcost[2], union int_mv *center_mv);
|
||||
#define vp8_refining_search_sad vp8_refining_search_sad_c
|
||||
|
||||
void vp8_regular_quantize_b_c(struct block *, struct blockd *);
|
||||
#define vp8_regular_quantize_b vp8_regular_quantize_b_c
|
||||
|
||||
void vp8_short_fdct4x4_c(short *input, short *output, int pitch);
|
||||
#define vp8_short_fdct4x4 vp8_short_fdct4x4_c
|
||||
|
||||
void vp8_short_fdct8x4_c(short *input, short *output, int pitch);
|
||||
#define vp8_short_fdct8x4 vp8_short_fdct8x4_c
|
||||
|
||||
void vp8_short_idct4x4llm_c(short *input, unsigned char *pred, int pitch, unsigned char *dst, int dst_stride);
|
||||
#define vp8_short_idct4x4llm vp8_short_idct4x4llm_c
|
||||
|
||||
void vp8_short_inv_walsh4x4_c(short *input, short *output);
|
||||
#define vp8_short_inv_walsh4x4 vp8_short_inv_walsh4x4_c
|
||||
|
||||
void vp8_short_inv_walsh4x4_1_c(short *input, short *output);
|
||||
#define vp8_short_inv_walsh4x4_1 vp8_short_inv_walsh4x4_1_c
|
||||
|
||||
void vp8_short_walsh4x4_c(short *input, short *output, int pitch);
|
||||
#define vp8_short_walsh4x4 vp8_short_walsh4x4_c
|
||||
|
||||
void vp8_sixtap_predict16x16_c(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
|
||||
#define vp8_sixtap_predict16x16 vp8_sixtap_predict16x16_c
|
||||
|
||||
void vp8_sixtap_predict4x4_c(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
|
||||
#define vp8_sixtap_predict4x4 vp8_sixtap_predict4x4_c
|
||||
|
||||
void vp8_sixtap_predict8x4_c(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
|
||||
#define vp8_sixtap_predict8x4 vp8_sixtap_predict8x4_c
|
||||
|
||||
void vp8_sixtap_predict8x8_c(unsigned char *src, int src_pitch, int xofst, int yofst, unsigned char *dst, int dst_pitch);
|
||||
#define vp8_sixtap_predict8x8 vp8_sixtap_predict8x8_c
|
||||
|
||||
void vp8_temporal_filter_apply_c(unsigned char *frame1, unsigned int stride, unsigned char *frame2, unsigned int block_size, int strength, int filter_weight, unsigned int *accumulator, unsigned short *count);
|
||||
#define vp8_temporal_filter_apply vp8_temporal_filter_apply_c
|
||||
|
||||
void vp8_rtcd(void);
|
||||
|
||||
#include "vpx_config.h"
|
||||
|
||||
#ifdef RTCD_C
|
||||
static void setup_rtcd_internal(void)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
} // extern "C"
|
||||
#endif
|
||||
|
||||
#endif
|
|
@ -0,0 +1,93 @@
|
|||
// This file is generated. Do not edit.
|
||||
#ifndef VP9_RTCD_H_
|
||||
#define VP9_RTCD_H_
|
||||
|
||||
#ifdef RTCD_C
|
||||
#define RTCD_EXTERN
|
||||
#else
|
||||
#define RTCD_EXTERN extern
|
||||
#endif
|
||||
|
||||
/*
|
||||
* VP9
|
||||
*/
|
||||
|
||||
#include "vpx/vpx_integer.h"
|
||||
#include "vp9/common/vp9_common.h"
|
||||
#include "vp9/common/vp9_enums.h"
|
||||
#include "vp9/common/vp9_filter.h"
|
||||
|
||||
struct macroblockd;
|
||||
|
||||
/* Encoder forward decls */
|
||||
struct macroblock;
|
||||
struct vp9_variance_vtable;
|
||||
struct search_site_config;
|
||||
struct mv;
|
||||
union int_mv;
|
||||
struct yv12_buffer_config;
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
int64_t vp9_block_error_c(const tran_low_t *coeff, const tran_low_t *dqcoeff, intptr_t block_size, int64_t *ssz);
|
||||
#define vp9_block_error vp9_block_error_c
|
||||
|
||||
int64_t vp9_block_error_fp_c(const tran_low_t *coeff, const tran_low_t *dqcoeff, int block_size);
|
||||
#define vp9_block_error_fp vp9_block_error_fp_c
|
||||
|
||||
int vp9_diamond_search_sad_c(const struct macroblock *x, const struct search_site_config *cfg, struct mv *ref_mv, struct mv *best_mv, int search_param, int sad_per_bit, int *num00, const struct vp9_variance_vtable *fn_ptr, const struct mv *center_mv);
|
||||
#define vp9_diamond_search_sad vp9_diamond_search_sad_c
|
||||
|
||||
void vp9_fdct8x8_quant_c(const int16_t *input, int stride, tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *round_ptr, const int16_t *quant_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
|
||||
#define vp9_fdct8x8_quant vp9_fdct8x8_quant_c
|
||||
|
||||
void vp9_fht16x16_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
|
||||
#define vp9_fht16x16 vp9_fht16x16_c
|
||||
|
||||
void vp9_fht4x4_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
|
||||
#define vp9_fht4x4 vp9_fht4x4_c
|
||||
|
||||
void vp9_fht8x8_c(const int16_t *input, tran_low_t *output, int stride, int tx_type);
|
||||
#define vp9_fht8x8 vp9_fht8x8_c
|
||||
|
||||
void vp9_fwht4x4_c(const int16_t *input, tran_low_t *output, int stride);
|
||||
#define vp9_fwht4x4 vp9_fwht4x4_c
|
||||
|
||||
void vp9_iht16x16_256_add_c(const tran_low_t *input, uint8_t *output, int pitch, int tx_type);
|
||||
#define vp9_iht16x16_256_add vp9_iht16x16_256_add_c
|
||||
|
||||
void vp9_iht4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int stride, int tx_type);
|
||||
#define vp9_iht4x4_16_add vp9_iht4x4_16_add_c
|
||||
|
||||
void vp9_iht8x8_64_add_c(const tran_low_t *input, uint8_t *dest, int stride, int tx_type);
|
||||
#define vp9_iht8x8_64_add vp9_iht8x8_64_add_c
|
||||
|
||||
void vp9_quantize_fp_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *round_ptr, const int16_t *quant_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
|
||||
#define vp9_quantize_fp vp9_quantize_fp_c
|
||||
|
||||
void vp9_quantize_fp_32x32_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *round_ptr, const int16_t *quant_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
|
||||
#define vp9_quantize_fp_32x32 vp9_quantize_fp_32x32_c
|
||||
|
||||
void vp9_scale_and_extend_frame_c(const struct yv12_buffer_config *src, struct yv12_buffer_config *dst, INTERP_FILTER filter_type, int phase_scaler);
|
||||
#define vp9_scale_and_extend_frame vp9_scale_and_extend_frame_c
|
||||
|
||||
void vp9_temporal_filter_apply_c(const uint8_t *frame1, unsigned int stride, const uint8_t *frame2, unsigned int block_width, unsigned int block_height, int strength, int filter_weight, uint32_t *accumulator, uint16_t *count);
|
||||
#define vp9_temporal_filter_apply vp9_temporal_filter_apply_c
|
||||
|
||||
void vp9_rtcd(void);
|
||||
|
||||
#include "vpx_config.h"
|
||||
|
||||
#ifdef RTCD_C
|
||||
static void setup_rtcd_internal(void)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
} // extern "C"
|
||||
#endif
|
||||
|
||||
#endif
|
|
@ -0,0 +1,86 @@
|
|||
@ This file was created from a .asm file
|
||||
@ using the ads2gas.pl script.
|
||||
.equ DO1STROUNDING, 0
|
||||
.equ ARCH_ARM , 0
|
||||
.equ ARCH_MIPS , 0
|
||||
.equ ARCH_X86 , 0
|
||||
.equ ARCH_X86_64 , 0
|
||||
.equ ARCH_PPC , 0
|
||||
.equ HAVE_NEON , 0
|
||||
.equ HAVE_NEON_ASM , 0
|
||||
.equ HAVE_MIPS32 , 0
|
||||
.equ HAVE_DSPR2 , 0
|
||||
.equ HAVE_MSA , 0
|
||||
.equ HAVE_MIPS64 , 0
|
||||
.equ HAVE_MMX , 0
|
||||
.equ HAVE_SSE , 0
|
||||
.equ HAVE_SSE2 , 0
|
||||
.equ HAVE_SSE3 , 0
|
||||
.equ HAVE_SSSE3 , 0
|
||||
.equ HAVE_SSE4_1 , 0
|
||||
.equ HAVE_AVX , 0
|
||||
.equ HAVE_AVX2 , 0
|
||||
.equ HAVE_AVX512 , 0
|
||||
.equ HAVE_VSX , 0
|
||||
.equ HAVE_MMI , 0
|
||||
.equ HAVE_VPX_PORTS , 1
|
||||
.equ HAVE_PTHREAD_H , 0
|
||||
.equ CONFIG_DEPENDENCY_TRACKING , 1
|
||||
.equ CONFIG_EXTERNAL_BUILD , 1
|
||||
.equ CONFIG_INSTALL_DOCS , 0
|
||||
.equ CONFIG_INSTALL_BINS , 1
|
||||
.equ CONFIG_INSTALL_LIBS , 1
|
||||
.equ CONFIG_INSTALL_SRCS , 0
|
||||
.equ CONFIG_DEBUG , 0
|
||||
.equ CONFIG_GPROF , 0
|
||||
.equ CONFIG_GCOV , 0
|
||||
.equ CONFIG_RVCT , 0
|
||||
.equ CONFIG_GCC , 0
|
||||
.equ CONFIG_MSVS , 1
|
||||
.equ CONFIG_PIC , 1
|
||||
.equ CONFIG_BIG_ENDIAN , 0
|
||||
.equ CONFIG_CODEC_SRCS , 0
|
||||
.equ CONFIG_DEBUG_LIBS , 0
|
||||
.equ CONFIG_DEQUANT_TOKENS , 0
|
||||
.equ CONFIG_DC_RECON , 0
|
||||
.equ CONFIG_RUNTIME_CPU_DETECT , 0
|
||||
.equ CONFIG_POSTPROC , 0
|
||||
.equ CONFIG_VP9_POSTPROC , 0
|
||||
.equ CONFIG_MULTITHREAD , 1
|
||||
.equ CONFIG_INTERNAL_STATS , 0
|
||||
.equ CONFIG_VP8_ENCODER , 1
|
||||
.equ CONFIG_VP8_DECODER , 1
|
||||
.equ CONFIG_VP9_ENCODER , 1
|
||||
.equ CONFIG_VP9_DECODER , 1
|
||||
.equ CONFIG_VP8 , 1
|
||||
.equ CONFIG_VP9 , 1
|
||||
.equ CONFIG_ENCODERS , 1
|
||||
.equ CONFIG_DECODERS , 1
|
||||
.equ CONFIG_STATIC_MSVCRT , 0
|
||||
.equ CONFIG_SPATIAL_RESAMPLING , 1
|
||||
.equ CONFIG_REALTIME_ONLY , 0
|
||||
.equ CONFIG_ONTHEFLY_BITPACKING , 0
|
||||
.equ CONFIG_ERROR_CONCEALMENT , 0
|
||||
.equ CONFIG_SHARED , 0
|
||||
.equ CONFIG_STATIC , 1
|
||||
.equ CONFIG_SMALL , 0
|
||||
.equ CONFIG_POSTPROC_VISUALIZER , 0
|
||||
.equ CONFIG_OS_SUPPORT , 1
|
||||
.equ CONFIG_UNIT_TESTS , 0
|
||||
.equ CONFIG_WEBM_IO , 1
|
||||
.equ CONFIG_LIBYUV , 1
|
||||
.equ CONFIG_DECODE_PERF_TESTS , 0
|
||||
.equ CONFIG_ENCODE_PERF_TESTS , 0
|
||||
.equ CONFIG_MULTI_RES_ENCODING , 1
|
||||
.equ CONFIG_TEMPORAL_DENOISING , 1
|
||||
.equ CONFIG_VP9_TEMPORAL_DENOISING , 0
|
||||
.equ CONFIG_COEFFICIENT_RANGE_CHECKING , 0
|
||||
.equ CONFIG_VP9_HIGHBITDEPTH , 0
|
||||
.equ CONFIG_BETTER_HW_COMPATIBILITY , 0
|
||||
.equ CONFIG_EXPERIMENTAL , 0
|
||||
.equ CONFIG_SIZE_LIMIT , 1
|
||||
.equ CONFIG_ALWAYS_ADJUST_BPM , 0
|
||||
.equ CONFIG_SPATIAL_SVC , 0
|
||||
.equ CONFIG_FP_MB_STATS , 0
|
||||
.equ CONFIG_EMULATE_HARDWARE , 0
|
||||
.section .note.GNU-stack,"",%progbits
|
|
@ -0,0 +1,10 @@
|
|||
/* 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/vpx_codec.h"
|
||||
static const char* const cfg = "--target=aarch64-win64-vs12 --enable-external-build --disable-examples --disable-install-docs --disable-unit-tests --enable-multi-res-encoding --size-limit=8192x4608 --enable-pic --disable-avx512";
|
||||
const char *vpx_codec_build_config(void) {return cfg;}
|
|
@ -0,0 +1,97 @@
|
|||
/* 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. */
|
||||
/* This file automatically generated by configure. Do not edit! */
|
||||
#ifndef VPX_CONFIG_H
|
||||
#define VPX_CONFIG_H
|
||||
#define RESTRICT
|
||||
#define INLINE __inline
|
||||
#define ARCH_ARM 0
|
||||
#define ARCH_MIPS 0
|
||||
#define ARCH_X86 0
|
||||
#define ARCH_X86_64 0
|
||||
#define ARCH_PPC 0
|
||||
#define HAVE_NEON 0
|
||||
#define HAVE_NEON_ASM 0
|
||||
#define HAVE_MIPS32 0
|
||||
#define HAVE_DSPR2 0
|
||||
#define HAVE_MSA 0
|
||||
#define HAVE_MIPS64 0
|
||||
#define HAVE_MMX 0
|
||||
#define HAVE_SSE 0
|
||||
#define HAVE_SSE2 0
|
||||
#define HAVE_SSE3 0
|
||||
#define HAVE_SSSE3 0
|
||||
#define HAVE_SSE4_1 0
|
||||
#define HAVE_AVX 0
|
||||
#define HAVE_AVX2 0
|
||||
#define HAVE_AVX512 0
|
||||
#define HAVE_VSX 0
|
||||
#define HAVE_MMI 0
|
||||
#define HAVE_VPX_PORTS 1
|
||||
#define HAVE_PTHREAD_H 0
|
||||
#define CONFIG_DEPENDENCY_TRACKING 1
|
||||
#define CONFIG_EXTERNAL_BUILD 1
|
||||
#define CONFIG_INSTALL_DOCS 0
|
||||
#define CONFIG_INSTALL_BINS 1
|
||||
#define CONFIG_INSTALL_LIBS 1
|
||||
#define CONFIG_INSTALL_SRCS 0
|
||||
#define CONFIG_DEBUG 0
|
||||
#define CONFIG_GPROF 0
|
||||
#define CONFIG_GCOV 0
|
||||
#define CONFIG_RVCT 0
|
||||
#define CONFIG_GCC 0
|
||||
#define CONFIG_MSVS 1
|
||||
#define CONFIG_PIC 1
|
||||
#define CONFIG_BIG_ENDIAN 0
|
||||
#define CONFIG_CODEC_SRCS 0
|
||||
#define CONFIG_DEBUG_LIBS 0
|
||||
#define CONFIG_DEQUANT_TOKENS 0
|
||||
#define CONFIG_DC_RECON 0
|
||||
#define CONFIG_RUNTIME_CPU_DETECT 0
|
||||
#define CONFIG_POSTPROC 0
|
||||
#define CONFIG_VP9_POSTPROC 0
|
||||
#define CONFIG_MULTITHREAD 1
|
||||
#define CONFIG_INTERNAL_STATS 0
|
||||
#define CONFIG_VP8_ENCODER 1
|
||||
#define CONFIG_VP8_DECODER 1
|
||||
#define CONFIG_VP9_ENCODER 1
|
||||
#define CONFIG_VP9_DECODER 1
|
||||
#define CONFIG_VP8 1
|
||||
#define CONFIG_VP9 1
|
||||
#define CONFIG_ENCODERS 1
|
||||
#define CONFIG_DECODERS 1
|
||||
#define CONFIG_STATIC_MSVCRT 0
|
||||
#define CONFIG_SPATIAL_RESAMPLING 1
|
||||
#define CONFIG_REALTIME_ONLY 0
|
||||
#define CONFIG_ONTHEFLY_BITPACKING 0
|
||||
#define CONFIG_ERROR_CONCEALMENT 0
|
||||
#define CONFIG_SHARED 0
|
||||
#define CONFIG_STATIC 1
|
||||
#define CONFIG_SMALL 0
|
||||
#define CONFIG_POSTPROC_VISUALIZER 0
|
||||
#define CONFIG_OS_SUPPORT 1
|
||||
#define CONFIG_UNIT_TESTS 0
|
||||
#define CONFIG_WEBM_IO 1
|
||||
#define CONFIG_LIBYUV 1
|
||||
#define CONFIG_DECODE_PERF_TESTS 0
|
||||
#define CONFIG_ENCODE_PERF_TESTS 0
|
||||
#define CONFIG_MULTI_RES_ENCODING 1
|
||||
#define CONFIG_TEMPORAL_DENOISING 1
|
||||
#define CONFIG_VP9_TEMPORAL_DENOISING 0
|
||||
#define CONFIG_COEFFICIENT_RANGE_CHECKING 0
|
||||
#define CONFIG_VP9_HIGHBITDEPTH 0
|
||||
#define CONFIG_BETTER_HW_COMPATIBILITY 0
|
||||
#define CONFIG_EXPERIMENTAL 0
|
||||
#define CONFIG_SIZE_LIMIT 1
|
||||
#define CONFIG_ALWAYS_ADJUST_BPM 0
|
||||
#define CONFIG_SPATIAL_SVC 0
|
||||
#define CONFIG_FP_MB_STATS 0
|
||||
#define CONFIG_EMULATE_HARDWARE 0
|
||||
#define DECODE_WIDTH_LIMIT 8192
|
||||
#define DECODE_HEIGHT_LIMIT 4608
|
||||
#endif /* VPX_CONFIG_H */
|
|
@ -0,0 +1,686 @@
|
|||
// This file is generated. Do not edit.
|
||||
#ifndef VPX_DSP_RTCD_H_
|
||||
#define VPX_DSP_RTCD_H_
|
||||
|
||||
#ifdef RTCD_C
|
||||
#define RTCD_EXTERN
|
||||
#else
|
||||
#define RTCD_EXTERN extern
|
||||
#endif
|
||||
|
||||
/*
|
||||
* DSP
|
||||
*/
|
||||
|
||||
#include "vpx/vpx_integer.h"
|
||||
#include "vpx_dsp/vpx_dsp_common.h"
|
||||
#include "vpx_dsp/vpx_filter.h"
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
unsigned int vpx_avg_4x4_c(const uint8_t *, int p);
|
||||
#define vpx_avg_4x4 vpx_avg_4x4_c
|
||||
|
||||
unsigned int vpx_avg_8x8_c(const uint8_t *, int p);
|
||||
#define vpx_avg_8x8 vpx_avg_8x8_c
|
||||
|
||||
void vpx_comp_avg_pred_c(uint8_t *comp_pred, const uint8_t *pred, int width, int height, const uint8_t *ref, int ref_stride);
|
||||
#define vpx_comp_avg_pred vpx_comp_avg_pred_c
|
||||
|
||||
void vpx_convolve8_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h);
|
||||
#define vpx_convolve8 vpx_convolve8_c
|
||||
|
||||
void vpx_convolve8_avg_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h);
|
||||
#define vpx_convolve8_avg vpx_convolve8_avg_c
|
||||
|
||||
void vpx_convolve8_avg_horiz_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h);
|
||||
#define vpx_convolve8_avg_horiz vpx_convolve8_avg_horiz_c
|
||||
|
||||
void vpx_convolve8_avg_vert_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h);
|
||||
#define vpx_convolve8_avg_vert vpx_convolve8_avg_vert_c
|
||||
|
||||
void vpx_convolve8_horiz_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h);
|
||||
#define vpx_convolve8_horiz vpx_convolve8_horiz_c
|
||||
|
||||
void vpx_convolve8_vert_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h);
|
||||
#define vpx_convolve8_vert vpx_convolve8_vert_c
|
||||
|
||||
void vpx_convolve_avg_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h);
|
||||
#define vpx_convolve_avg vpx_convolve_avg_c
|
||||
|
||||
void vpx_convolve_copy_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h);
|
||||
#define vpx_convolve_copy vpx_convolve_copy_c
|
||||
|
||||
void vpx_d117_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
|
||||
#define vpx_d117_predictor_16x16 vpx_d117_predictor_16x16_c
|
||||
|
||||
void vpx_d117_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
|
||||
#define vpx_d117_predictor_32x32 vpx_d117_predictor_32x32_c
|
||||
|
||||
void vpx_d117_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
|
||||
#define vpx_d117_predictor_4x4 vpx_d117_predictor_4x4_c
|
||||
|
||||
void vpx_d117_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
|
||||
#define vpx_d117_predictor_8x8 vpx_d117_predictor_8x8_c
|
||||
|
||||
void vpx_d135_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
|
||||
#define vpx_d135_predictor_16x16 vpx_d135_predictor_16x16_c
|
||||
|
||||
void vpx_d135_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
|
||||
#define vpx_d135_predictor_32x32 vpx_d135_predictor_32x32_c
|
||||
|
||||
void vpx_d135_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
|
||||
#define vpx_d135_predictor_4x4 vpx_d135_predictor_4x4_c
|
||||
|
||||
void vpx_d135_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
|
||||
#define vpx_d135_predictor_8x8 vpx_d135_predictor_8x8_c
|
||||
|
||||
void vpx_d153_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
|
||||
#define vpx_d153_predictor_16x16 vpx_d153_predictor_16x16_c
|
||||
|
||||
void vpx_d153_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
|
||||
#define vpx_d153_predictor_32x32 vpx_d153_predictor_32x32_c
|
||||
|
||||
void vpx_d153_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
|
||||
#define vpx_d153_predictor_4x4 vpx_d153_predictor_4x4_c
|
||||
|
||||
void vpx_d153_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
|
||||
#define vpx_d153_predictor_8x8 vpx_d153_predictor_8x8_c
|
||||
|
||||
void vpx_d207_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
|
||||
#define vpx_d207_predictor_16x16 vpx_d207_predictor_16x16_c
|
||||
|
||||
void vpx_d207_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
|
||||
#define vpx_d207_predictor_32x32 vpx_d207_predictor_32x32_c
|
||||
|
||||
void vpx_d207_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
|
||||
#define vpx_d207_predictor_4x4 vpx_d207_predictor_4x4_c
|
||||
|
||||
void vpx_d207_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
|
||||
#define vpx_d207_predictor_8x8 vpx_d207_predictor_8x8_c
|
||||
|
||||
void vpx_d45_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
|
||||
#define vpx_d45_predictor_16x16 vpx_d45_predictor_16x16_c
|
||||
|
||||
void vpx_d45_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
|
||||
#define vpx_d45_predictor_32x32 vpx_d45_predictor_32x32_c
|
||||
|
||||
void vpx_d45_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
|
||||
#define vpx_d45_predictor_4x4 vpx_d45_predictor_4x4_c
|
||||
|
||||
void vpx_d45_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
|
||||
#define vpx_d45_predictor_8x8 vpx_d45_predictor_8x8_c
|
||||
|
||||
void vpx_d45e_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
|
||||
#define vpx_d45e_predictor_4x4 vpx_d45e_predictor_4x4_c
|
||||
|
||||
void vpx_d63_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
|
||||
#define vpx_d63_predictor_16x16 vpx_d63_predictor_16x16_c
|
||||
|
||||
void vpx_d63_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
|
||||
#define vpx_d63_predictor_32x32 vpx_d63_predictor_32x32_c
|
||||
|
||||
void vpx_d63_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
|
||||
#define vpx_d63_predictor_4x4 vpx_d63_predictor_4x4_c
|
||||
|
||||
void vpx_d63_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
|
||||
#define vpx_d63_predictor_8x8 vpx_d63_predictor_8x8_c
|
||||
|
||||
void vpx_d63e_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
|
||||
#define vpx_d63e_predictor_4x4 vpx_d63e_predictor_4x4_c
|
||||
|
||||
void vpx_dc_128_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
|
||||
#define vpx_dc_128_predictor_16x16 vpx_dc_128_predictor_16x16_c
|
||||
|
||||
void vpx_dc_128_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
|
||||
#define vpx_dc_128_predictor_32x32 vpx_dc_128_predictor_32x32_c
|
||||
|
||||
void vpx_dc_128_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
|
||||
#define vpx_dc_128_predictor_4x4 vpx_dc_128_predictor_4x4_c
|
||||
|
||||
void vpx_dc_128_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
|
||||
#define vpx_dc_128_predictor_8x8 vpx_dc_128_predictor_8x8_c
|
||||
|
||||
void vpx_dc_left_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
|
||||
#define vpx_dc_left_predictor_16x16 vpx_dc_left_predictor_16x16_c
|
||||
|
||||
void vpx_dc_left_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
|
||||
#define vpx_dc_left_predictor_32x32 vpx_dc_left_predictor_32x32_c
|
||||
|
||||
void vpx_dc_left_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
|
||||
#define vpx_dc_left_predictor_4x4 vpx_dc_left_predictor_4x4_c
|
||||
|
||||
void vpx_dc_left_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
|
||||
#define vpx_dc_left_predictor_8x8 vpx_dc_left_predictor_8x8_c
|
||||
|
||||
void vpx_dc_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
|
||||
#define vpx_dc_predictor_16x16 vpx_dc_predictor_16x16_c
|
||||
|
||||
void vpx_dc_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
|
||||
#define vpx_dc_predictor_32x32 vpx_dc_predictor_32x32_c
|
||||
|
||||
void vpx_dc_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
|
||||
#define vpx_dc_predictor_4x4 vpx_dc_predictor_4x4_c
|
||||
|
||||
void vpx_dc_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
|
||||
#define vpx_dc_predictor_8x8 vpx_dc_predictor_8x8_c
|
||||
|
||||
void vpx_dc_top_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
|
||||
#define vpx_dc_top_predictor_16x16 vpx_dc_top_predictor_16x16_c
|
||||
|
||||
void vpx_dc_top_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
|
||||
#define vpx_dc_top_predictor_32x32 vpx_dc_top_predictor_32x32_c
|
||||
|
||||
void vpx_dc_top_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
|
||||
#define vpx_dc_top_predictor_4x4 vpx_dc_top_predictor_4x4_c
|
||||
|
||||
void vpx_dc_top_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
|
||||
#define vpx_dc_top_predictor_8x8 vpx_dc_top_predictor_8x8_c
|
||||
|
||||
void vpx_fdct16x16_c(const int16_t *input, tran_low_t *output, int stride);
|
||||
#define vpx_fdct16x16 vpx_fdct16x16_c
|
||||
|
||||
void vpx_fdct16x16_1_c(const int16_t *input, tran_low_t *output, int stride);
|
||||
#define vpx_fdct16x16_1 vpx_fdct16x16_1_c
|
||||
|
||||
void vpx_fdct32x32_c(const int16_t *input, tran_low_t *output, int stride);
|
||||
#define vpx_fdct32x32 vpx_fdct32x32_c
|
||||
|
||||
void vpx_fdct32x32_1_c(const int16_t *input, tran_low_t *output, int stride);
|
||||
#define vpx_fdct32x32_1 vpx_fdct32x32_1_c
|
||||
|
||||
void vpx_fdct32x32_rd_c(const int16_t *input, tran_low_t *output, int stride);
|
||||
#define vpx_fdct32x32_rd vpx_fdct32x32_rd_c
|
||||
|
||||
void vpx_fdct4x4_c(const int16_t *input, tran_low_t *output, int stride);
|
||||
#define vpx_fdct4x4 vpx_fdct4x4_c
|
||||
|
||||
void vpx_fdct4x4_1_c(const int16_t *input, tran_low_t *output, int stride);
|
||||
#define vpx_fdct4x4_1 vpx_fdct4x4_1_c
|
||||
|
||||
void vpx_fdct8x8_c(const int16_t *input, tran_low_t *output, int stride);
|
||||
#define vpx_fdct8x8 vpx_fdct8x8_c
|
||||
|
||||
void vpx_fdct8x8_1_c(const int16_t *input, tran_low_t *output, int stride);
|
||||
#define vpx_fdct8x8_1 vpx_fdct8x8_1_c
|
||||
|
||||
void vpx_get16x16var_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, int *sum);
|
||||
#define vpx_get16x16var vpx_get16x16var_c
|
||||
|
||||
unsigned int vpx_get4x4sse_cs_c(const unsigned char *src_ptr, int source_stride, const unsigned char *ref_ptr, int ref_stride);
|
||||
#define vpx_get4x4sse_cs vpx_get4x4sse_cs_c
|
||||
|
||||
void vpx_get8x8var_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, int *sum);
|
||||
#define vpx_get8x8var vpx_get8x8var_c
|
||||
|
||||
unsigned int vpx_get_mb_ss_c(const int16_t *);
|
||||
#define vpx_get_mb_ss vpx_get_mb_ss_c
|
||||
|
||||
void vpx_h_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
|
||||
#define vpx_h_predictor_16x16 vpx_h_predictor_16x16_c
|
||||
|
||||
void vpx_h_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
|
||||
#define vpx_h_predictor_32x32 vpx_h_predictor_32x32_c
|
||||
|
||||
void vpx_h_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
|
||||
#define vpx_h_predictor_4x4 vpx_h_predictor_4x4_c
|
||||
|
||||
void vpx_h_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
|
||||
#define vpx_h_predictor_8x8 vpx_h_predictor_8x8_c
|
||||
|
||||
void vpx_hadamard_16x16_c(const int16_t *src_diff, ptrdiff_t src_stride, int16_t *coeff);
|
||||
#define vpx_hadamard_16x16 vpx_hadamard_16x16_c
|
||||
|
||||
void vpx_hadamard_8x8_c(const int16_t *src_diff, ptrdiff_t src_stride, int16_t *coeff);
|
||||
#define vpx_hadamard_8x8 vpx_hadamard_8x8_c
|
||||
|
||||
void vpx_he_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
|
||||
#define vpx_he_predictor_4x4 vpx_he_predictor_4x4_c
|
||||
|
||||
void vpx_idct16x16_10_add_c(const tran_low_t *input, uint8_t *dest, int stride);
|
||||
#define vpx_idct16x16_10_add vpx_idct16x16_10_add_c
|
||||
|
||||
void vpx_idct16x16_1_add_c(const tran_low_t *input, uint8_t *dest, int stride);
|
||||
#define vpx_idct16x16_1_add vpx_idct16x16_1_add_c
|
||||
|
||||
void vpx_idct16x16_256_add_c(const tran_low_t *input, uint8_t *dest, int stride);
|
||||
#define vpx_idct16x16_256_add vpx_idct16x16_256_add_c
|
||||
|
||||
void vpx_idct16x16_38_add_c(const tran_low_t *input, uint8_t *dest, int stride);
|
||||
#define vpx_idct16x16_38_add vpx_idct16x16_38_add_c
|
||||
|
||||
void vpx_idct32x32_1024_add_c(const tran_low_t *input, uint8_t *dest, int stride);
|
||||
#define vpx_idct32x32_1024_add vpx_idct32x32_1024_add_c
|
||||
|
||||
void vpx_idct32x32_135_add_c(const tran_low_t *input, uint8_t *dest, int stride);
|
||||
#define vpx_idct32x32_135_add vpx_idct32x32_135_add_c
|
||||
|
||||
void vpx_idct32x32_1_add_c(const tran_low_t *input, uint8_t *dest, int stride);
|
||||
#define vpx_idct32x32_1_add vpx_idct32x32_1_add_c
|
||||
|
||||
void vpx_idct32x32_34_add_c(const tran_low_t *input, uint8_t *dest, int stride);
|
||||
#define vpx_idct32x32_34_add vpx_idct32x32_34_add_c
|
||||
|
||||
void vpx_idct4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int stride);
|
||||
#define vpx_idct4x4_16_add vpx_idct4x4_16_add_c
|
||||
|
||||
void vpx_idct4x4_1_add_c(const tran_low_t *input, uint8_t *dest, int stride);
|
||||
#define vpx_idct4x4_1_add vpx_idct4x4_1_add_c
|
||||
|
||||
void vpx_idct8x8_12_add_c(const tran_low_t *input, uint8_t *dest, int stride);
|
||||
#define vpx_idct8x8_12_add vpx_idct8x8_12_add_c
|
||||
|
||||
void vpx_idct8x8_1_add_c(const tran_low_t *input, uint8_t *dest, int stride);
|
||||
#define vpx_idct8x8_1_add vpx_idct8x8_1_add_c
|
||||
|
||||
void vpx_idct8x8_64_add_c(const tran_low_t *input, uint8_t *dest, int stride);
|
||||
#define vpx_idct8x8_64_add vpx_idct8x8_64_add_c
|
||||
|
||||
int16_t vpx_int_pro_col_c(const uint8_t *ref, const int width);
|
||||
#define vpx_int_pro_col vpx_int_pro_col_c
|
||||
|
||||
void vpx_int_pro_row_c(int16_t *hbuf, const uint8_t *ref, const int ref_stride, const int height);
|
||||
#define vpx_int_pro_row vpx_int_pro_row_c
|
||||
|
||||
void vpx_iwht4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int stride);
|
||||
#define vpx_iwht4x4_16_add vpx_iwht4x4_16_add_c
|
||||
|
||||
void vpx_iwht4x4_1_add_c(const tran_low_t *input, uint8_t *dest, int stride);
|
||||
#define vpx_iwht4x4_1_add vpx_iwht4x4_1_add_c
|
||||
|
||||
void vpx_lpf_horizontal_16_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
|
||||
#define vpx_lpf_horizontal_16 vpx_lpf_horizontal_16_c
|
||||
|
||||
void vpx_lpf_horizontal_16_dual_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
|
||||
#define vpx_lpf_horizontal_16_dual vpx_lpf_horizontal_16_dual_c
|
||||
|
||||
void vpx_lpf_horizontal_4_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
|
||||
#define vpx_lpf_horizontal_4 vpx_lpf_horizontal_4_c
|
||||
|
||||
void vpx_lpf_horizontal_4_dual_c(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1);
|
||||
#define vpx_lpf_horizontal_4_dual vpx_lpf_horizontal_4_dual_c
|
||||
|
||||
void vpx_lpf_horizontal_8_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
|
||||
#define vpx_lpf_horizontal_8 vpx_lpf_horizontal_8_c
|
||||
|
||||
void vpx_lpf_horizontal_8_dual_c(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1);
|
||||
#define vpx_lpf_horizontal_8_dual vpx_lpf_horizontal_8_dual_c
|
||||
|
||||
void vpx_lpf_vertical_16_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
|
||||
#define vpx_lpf_vertical_16 vpx_lpf_vertical_16_c
|
||||
|
||||
void vpx_lpf_vertical_16_dual_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
|
||||
#define vpx_lpf_vertical_16_dual vpx_lpf_vertical_16_dual_c
|
||||
|
||||
void vpx_lpf_vertical_4_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
|
||||
#define vpx_lpf_vertical_4 vpx_lpf_vertical_4_c
|
||||
|
||||
void vpx_lpf_vertical_4_dual_c(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1);
|
||||
#define vpx_lpf_vertical_4_dual vpx_lpf_vertical_4_dual_c
|
||||
|
||||
void vpx_lpf_vertical_8_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
|
||||
#define vpx_lpf_vertical_8 vpx_lpf_vertical_8_c
|
||||
|
||||
void vpx_lpf_vertical_8_dual_c(uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1);
|
||||
#define vpx_lpf_vertical_8_dual vpx_lpf_vertical_8_dual_c
|
||||
|
||||
void vpx_minmax_8x8_c(const uint8_t *s, int p, const uint8_t *d, int dp, int *min, int *max);
|
||||
#define vpx_minmax_8x8 vpx_minmax_8x8_c
|
||||
|
||||
unsigned int vpx_mse16x16_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse);
|
||||
#define vpx_mse16x16 vpx_mse16x16_c
|
||||
|
||||
unsigned int vpx_mse16x8_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse);
|
||||
#define vpx_mse16x8 vpx_mse16x8_c
|
||||
|
||||
unsigned int vpx_mse8x16_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse);
|
||||
#define vpx_mse8x16 vpx_mse8x16_c
|
||||
|
||||
unsigned int vpx_mse8x8_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int recon_stride, unsigned int *sse);
|
||||
#define vpx_mse8x8 vpx_mse8x8_c
|
||||
|
||||
void vpx_quantize_b_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
|
||||
#define vpx_quantize_b vpx_quantize_b_c
|
||||
|
||||
void vpx_quantize_b_32x32_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, int skip_block, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan);
|
||||
#define vpx_quantize_b_32x32 vpx_quantize_b_32x32_c
|
||||
|
||||
unsigned int vpx_sad16x16_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
|
||||
#define vpx_sad16x16 vpx_sad16x16_c
|
||||
|
||||
unsigned int vpx_sad16x16_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
|
||||
#define vpx_sad16x16_avg vpx_sad16x16_avg_c
|
||||
|
||||
void vpx_sad16x16x3_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
|
||||
#define vpx_sad16x16x3 vpx_sad16x16x3_c
|
||||
|
||||
void vpx_sad16x16x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
|
||||
#define vpx_sad16x16x4d vpx_sad16x16x4d_c
|
||||
|
||||
void vpx_sad16x16x8_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
|
||||
#define vpx_sad16x16x8 vpx_sad16x16x8_c
|
||||
|
||||
unsigned int vpx_sad16x32_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
|
||||
#define vpx_sad16x32 vpx_sad16x32_c
|
||||
|
||||
unsigned int vpx_sad16x32_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
|
||||
#define vpx_sad16x32_avg vpx_sad16x32_avg_c
|
||||
|
||||
void vpx_sad16x32x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
|
||||
#define vpx_sad16x32x4d vpx_sad16x32x4d_c
|
||||
|
||||
unsigned int vpx_sad16x8_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
|
||||
#define vpx_sad16x8 vpx_sad16x8_c
|
||||
|
||||
unsigned int vpx_sad16x8_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
|
||||
#define vpx_sad16x8_avg vpx_sad16x8_avg_c
|
||||
|
||||
void vpx_sad16x8x3_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
|
||||
#define vpx_sad16x8x3 vpx_sad16x8x3_c
|
||||
|
||||
void vpx_sad16x8x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
|
||||
#define vpx_sad16x8x4d vpx_sad16x8x4d_c
|
||||
|
||||
void vpx_sad16x8x8_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
|
||||
#define vpx_sad16x8x8 vpx_sad16x8x8_c
|
||||
|
||||
unsigned int vpx_sad32x16_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
|
||||
#define vpx_sad32x16 vpx_sad32x16_c
|
||||
|
||||
unsigned int vpx_sad32x16_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
|
||||
#define vpx_sad32x16_avg vpx_sad32x16_avg_c
|
||||
|
||||
void vpx_sad32x16x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
|
||||
#define vpx_sad32x16x4d vpx_sad32x16x4d_c
|
||||
|
||||
unsigned int vpx_sad32x32_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
|
||||
#define vpx_sad32x32 vpx_sad32x32_c
|
||||
|
||||
unsigned int vpx_sad32x32_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
|
||||
#define vpx_sad32x32_avg vpx_sad32x32_avg_c
|
||||
|
||||
void vpx_sad32x32x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
|
||||
#define vpx_sad32x32x4d vpx_sad32x32x4d_c
|
||||
|
||||
unsigned int vpx_sad32x64_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
|
||||
#define vpx_sad32x64 vpx_sad32x64_c
|
||||
|
||||
unsigned int vpx_sad32x64_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
|
||||
#define vpx_sad32x64_avg vpx_sad32x64_avg_c
|
||||
|
||||
void vpx_sad32x64x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
|
||||
#define vpx_sad32x64x4d vpx_sad32x64x4d_c
|
||||
|
||||
unsigned int vpx_sad4x4_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
|
||||
#define vpx_sad4x4 vpx_sad4x4_c
|
||||
|
||||
unsigned int vpx_sad4x4_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
|
||||
#define vpx_sad4x4_avg vpx_sad4x4_avg_c
|
||||
|
||||
void vpx_sad4x4x3_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
|
||||
#define vpx_sad4x4x3 vpx_sad4x4x3_c
|
||||
|
||||
void vpx_sad4x4x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
|
||||
#define vpx_sad4x4x4d vpx_sad4x4x4d_c
|
||||
|
||||
void vpx_sad4x4x8_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
|
||||
#define vpx_sad4x4x8 vpx_sad4x4x8_c
|
||||
|
||||
unsigned int vpx_sad4x8_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
|
||||
#define vpx_sad4x8 vpx_sad4x8_c
|
||||
|
||||
unsigned int vpx_sad4x8_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
|
||||
#define vpx_sad4x8_avg vpx_sad4x8_avg_c
|
||||
|
||||
void vpx_sad4x8x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
|
||||
#define vpx_sad4x8x4d vpx_sad4x8x4d_c
|
||||
|
||||
unsigned int vpx_sad64x32_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
|
||||
#define vpx_sad64x32 vpx_sad64x32_c
|
||||
|
||||
unsigned int vpx_sad64x32_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
|
||||
#define vpx_sad64x32_avg vpx_sad64x32_avg_c
|
||||
|
||||
void vpx_sad64x32x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
|
||||
#define vpx_sad64x32x4d vpx_sad64x32x4d_c
|
||||
|
||||
unsigned int vpx_sad64x64_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
|
||||
#define vpx_sad64x64 vpx_sad64x64_c
|
||||
|
||||
unsigned int vpx_sad64x64_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
|
||||
#define vpx_sad64x64_avg vpx_sad64x64_avg_c
|
||||
|
||||
void vpx_sad64x64x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
|
||||
#define vpx_sad64x64x4d vpx_sad64x64x4d_c
|
||||
|
||||
unsigned int vpx_sad8x16_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
|
||||
#define vpx_sad8x16 vpx_sad8x16_c
|
||||
|
||||
unsigned int vpx_sad8x16_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
|
||||
#define vpx_sad8x16_avg vpx_sad8x16_avg_c
|
||||
|
||||
void vpx_sad8x16x3_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
|
||||
#define vpx_sad8x16x3 vpx_sad8x16x3_c
|
||||
|
||||
void vpx_sad8x16x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
|
||||
#define vpx_sad8x16x4d vpx_sad8x16x4d_c
|
||||
|
||||
void vpx_sad8x16x8_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
|
||||
#define vpx_sad8x16x8 vpx_sad8x16x8_c
|
||||
|
||||
unsigned int vpx_sad8x4_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
|
||||
#define vpx_sad8x4 vpx_sad8x4_c
|
||||
|
||||
unsigned int vpx_sad8x4_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
|
||||
#define vpx_sad8x4_avg vpx_sad8x4_avg_c
|
||||
|
||||
void vpx_sad8x4x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
|
||||
#define vpx_sad8x4x4d vpx_sad8x4x4d_c
|
||||
|
||||
unsigned int vpx_sad8x8_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride);
|
||||
#define vpx_sad8x8 vpx_sad8x8_c
|
||||
|
||||
unsigned int vpx_sad8x8_avg_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred);
|
||||
#define vpx_sad8x8_avg vpx_sad8x8_avg_c
|
||||
|
||||
void vpx_sad8x8x3_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
|
||||
#define vpx_sad8x8x3 vpx_sad8x8x3_c
|
||||
|
||||
void vpx_sad8x8x4d_c(const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_ptr[], int ref_stride, uint32_t *sad_array);
|
||||
#define vpx_sad8x8x4d vpx_sad8x8x4d_c
|
||||
|
||||
void vpx_sad8x8x8_c(const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, uint32_t *sad_array);
|
||||
#define vpx_sad8x8x8 vpx_sad8x8x8_c
|
||||
|
||||
int vpx_satd_c(const int16_t *coeff, int length);
|
||||
#define vpx_satd vpx_satd_c
|
||||
|
||||
void vpx_scaled_2d_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h);
|
||||
#define vpx_scaled_2d vpx_scaled_2d_c
|
||||
|
||||
void vpx_scaled_avg_2d_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h);
|
||||
#define vpx_scaled_avg_2d vpx_scaled_avg_2d_c
|
||||
|
||||
void vpx_scaled_avg_horiz_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h);
|
||||
#define vpx_scaled_avg_horiz vpx_scaled_avg_horiz_c
|
||||
|
||||
void vpx_scaled_avg_vert_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h);
|
||||
#define vpx_scaled_avg_vert vpx_scaled_avg_vert_c
|
||||
|
||||
void vpx_scaled_horiz_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h);
|
||||
#define vpx_scaled_horiz vpx_scaled_horiz_c
|
||||
|
||||
void vpx_scaled_vert_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h);
|
||||
#define vpx_scaled_vert vpx_scaled_vert_c
|
||||
|
||||
uint32_t vpx_sub_pixel_avg_variance16x16_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
|
||||
#define vpx_sub_pixel_avg_variance16x16 vpx_sub_pixel_avg_variance16x16_c
|
||||
|
||||
uint32_t vpx_sub_pixel_avg_variance16x32_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
|
||||
#define vpx_sub_pixel_avg_variance16x32 vpx_sub_pixel_avg_variance16x32_c
|
||||
|
||||
uint32_t vpx_sub_pixel_avg_variance16x8_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
|
||||
#define vpx_sub_pixel_avg_variance16x8 vpx_sub_pixel_avg_variance16x8_c
|
||||
|
||||
uint32_t vpx_sub_pixel_avg_variance32x16_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
|
||||
#define vpx_sub_pixel_avg_variance32x16 vpx_sub_pixel_avg_variance32x16_c
|
||||
|
||||
uint32_t vpx_sub_pixel_avg_variance32x32_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
|
||||
#define vpx_sub_pixel_avg_variance32x32 vpx_sub_pixel_avg_variance32x32_c
|
||||
|
||||
uint32_t vpx_sub_pixel_avg_variance32x64_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
|
||||
#define vpx_sub_pixel_avg_variance32x64 vpx_sub_pixel_avg_variance32x64_c
|
||||
|
||||
uint32_t vpx_sub_pixel_avg_variance4x4_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
|
||||
#define vpx_sub_pixel_avg_variance4x4 vpx_sub_pixel_avg_variance4x4_c
|
||||
|
||||
uint32_t vpx_sub_pixel_avg_variance4x8_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
|
||||
#define vpx_sub_pixel_avg_variance4x8 vpx_sub_pixel_avg_variance4x8_c
|
||||
|
||||
uint32_t vpx_sub_pixel_avg_variance64x32_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
|
||||
#define vpx_sub_pixel_avg_variance64x32 vpx_sub_pixel_avg_variance64x32_c
|
||||
|
||||
uint32_t vpx_sub_pixel_avg_variance64x64_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
|
||||
#define vpx_sub_pixel_avg_variance64x64 vpx_sub_pixel_avg_variance64x64_c
|
||||
|
||||
uint32_t vpx_sub_pixel_avg_variance8x16_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
|
||||
#define vpx_sub_pixel_avg_variance8x16 vpx_sub_pixel_avg_variance8x16_c
|
||||
|
||||
uint32_t vpx_sub_pixel_avg_variance8x4_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
|
||||
#define vpx_sub_pixel_avg_variance8x4 vpx_sub_pixel_avg_variance8x4_c
|
||||
|
||||
uint32_t vpx_sub_pixel_avg_variance8x8_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred);
|
||||
#define vpx_sub_pixel_avg_variance8x8 vpx_sub_pixel_avg_variance8x8_c
|
||||
|
||||
uint32_t vpx_sub_pixel_variance16x16_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
|
||||
#define vpx_sub_pixel_variance16x16 vpx_sub_pixel_variance16x16_c
|
||||
|
||||
uint32_t vpx_sub_pixel_variance16x32_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
|
||||
#define vpx_sub_pixel_variance16x32 vpx_sub_pixel_variance16x32_c
|
||||
|
||||
uint32_t vpx_sub_pixel_variance16x8_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
|
||||
#define vpx_sub_pixel_variance16x8 vpx_sub_pixel_variance16x8_c
|
||||
|
||||
uint32_t vpx_sub_pixel_variance32x16_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
|
||||
#define vpx_sub_pixel_variance32x16 vpx_sub_pixel_variance32x16_c
|
||||
|
||||
uint32_t vpx_sub_pixel_variance32x32_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
|
||||
#define vpx_sub_pixel_variance32x32 vpx_sub_pixel_variance32x32_c
|
||||
|
||||
uint32_t vpx_sub_pixel_variance32x64_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
|
||||
#define vpx_sub_pixel_variance32x64 vpx_sub_pixel_variance32x64_c
|
||||
|
||||
uint32_t vpx_sub_pixel_variance4x4_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
|
||||
#define vpx_sub_pixel_variance4x4 vpx_sub_pixel_variance4x4_c
|
||||
|
||||
uint32_t vpx_sub_pixel_variance4x8_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
|
||||
#define vpx_sub_pixel_variance4x8 vpx_sub_pixel_variance4x8_c
|
||||
|
||||
uint32_t vpx_sub_pixel_variance64x32_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
|
||||
#define vpx_sub_pixel_variance64x32 vpx_sub_pixel_variance64x32_c
|
||||
|
||||
uint32_t vpx_sub_pixel_variance64x64_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
|
||||
#define vpx_sub_pixel_variance64x64 vpx_sub_pixel_variance64x64_c
|
||||
|
||||
uint32_t vpx_sub_pixel_variance8x16_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
|
||||
#define vpx_sub_pixel_variance8x16 vpx_sub_pixel_variance8x16_c
|
||||
|
||||
uint32_t vpx_sub_pixel_variance8x4_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
|
||||
#define vpx_sub_pixel_variance8x4 vpx_sub_pixel_variance8x4_c
|
||||
|
||||
uint32_t vpx_sub_pixel_variance8x8_c(const uint8_t *src_ptr, int source_stride, int xoffset, int yoffset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse);
|
||||
#define vpx_sub_pixel_variance8x8 vpx_sub_pixel_variance8x8_c
|
||||
|
||||
void vpx_subtract_block_c(int rows, int cols, int16_t *diff_ptr, ptrdiff_t diff_stride, const uint8_t *src_ptr, ptrdiff_t src_stride, const uint8_t *pred_ptr, ptrdiff_t pred_stride);
|
||||
#define vpx_subtract_block vpx_subtract_block_c
|
||||
|
||||
uint64_t vpx_sum_squares_2d_i16_c(const int16_t *src, int stride, int size);
|
||||
#define vpx_sum_squares_2d_i16 vpx_sum_squares_2d_i16_c
|
||||
|
||||
void vpx_tm_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
|
||||
#define vpx_tm_predictor_16x16 vpx_tm_predictor_16x16_c
|
||||
|
||||
void vpx_tm_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
|
||||
#define vpx_tm_predictor_32x32 vpx_tm_predictor_32x32_c
|
||||
|
||||
void vpx_tm_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
|
||||
#define vpx_tm_predictor_4x4 vpx_tm_predictor_4x4_c
|
||||
|
||||
void vpx_tm_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
|
||||
#define vpx_tm_predictor_8x8 vpx_tm_predictor_8x8_c
|
||||
|
||||
void vpx_v_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
|
||||
#define vpx_v_predictor_16x16 vpx_v_predictor_16x16_c
|
||||
|
||||
void vpx_v_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
|
||||
#define vpx_v_predictor_32x32 vpx_v_predictor_32x32_c
|
||||
|
||||
void vpx_v_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
|
||||
#define vpx_v_predictor_4x4 vpx_v_predictor_4x4_c
|
||||
|
||||
void vpx_v_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
|
||||
#define vpx_v_predictor_8x8 vpx_v_predictor_8x8_c
|
||||
|
||||
unsigned int vpx_variance16x16_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
#define vpx_variance16x16 vpx_variance16x16_c
|
||||
|
||||
unsigned int vpx_variance16x32_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
#define vpx_variance16x32 vpx_variance16x32_c
|
||||
|
||||
unsigned int vpx_variance16x8_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
#define vpx_variance16x8 vpx_variance16x8_c
|
||||
|
||||
unsigned int vpx_variance32x16_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
#define vpx_variance32x16 vpx_variance32x16_c
|
||||
|
||||
unsigned int vpx_variance32x32_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
#define vpx_variance32x32 vpx_variance32x32_c
|
||||
|
||||
unsigned int vpx_variance32x64_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
#define vpx_variance32x64 vpx_variance32x64_c
|
||||
|
||||
unsigned int vpx_variance4x4_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
#define vpx_variance4x4 vpx_variance4x4_c
|
||||
|
||||
unsigned int vpx_variance4x8_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
#define vpx_variance4x8 vpx_variance4x8_c
|
||||
|
||||
unsigned int vpx_variance64x32_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
#define vpx_variance64x32 vpx_variance64x32_c
|
||||
|
||||
unsigned int vpx_variance64x64_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
#define vpx_variance64x64 vpx_variance64x64_c
|
||||
|
||||
unsigned int vpx_variance8x16_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
#define vpx_variance8x16 vpx_variance8x16_c
|
||||
|
||||
unsigned int vpx_variance8x4_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
#define vpx_variance8x4 vpx_variance8x4_c
|
||||
|
||||
unsigned int vpx_variance8x8_c(const uint8_t *src_ptr, int source_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse);
|
||||
#define vpx_variance8x8 vpx_variance8x8_c
|
||||
|
||||
void vpx_ve_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
|
||||
#define vpx_ve_predictor_4x4 vpx_ve_predictor_4x4_c
|
||||
|
||||
int vpx_vector_var_c(const int16_t *ref, const int16_t *src, const int bwl);
|
||||
#define vpx_vector_var vpx_vector_var_c
|
||||
|
||||
void vpx_dsp_rtcd(void);
|
||||
|
||||
#include "vpx_config.h"
|
||||
|
||||
#ifdef RTCD_C
|
||||
static void setup_rtcd_internal(void)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
} // extern "C"
|
||||
#endif
|
||||
|
||||
#endif
|
|
@ -0,0 +1,70 @@
|
|||
// This file is generated. Do not edit.
|
||||
#ifndef VPX_SCALE_RTCD_H_
|
||||
#define VPX_SCALE_RTCD_H_
|
||||
|
||||
#ifdef RTCD_C
|
||||
#define RTCD_EXTERN
|
||||
#else
|
||||
#define RTCD_EXTERN extern
|
||||
#endif
|
||||
|
||||
struct yv12_buffer_config;
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
void vp8_horizontal_line_2_1_scale_c(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width);
|
||||
#define vp8_horizontal_line_2_1_scale vp8_horizontal_line_2_1_scale_c
|
||||
|
||||
void vp8_horizontal_line_5_3_scale_c(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width);
|
||||
#define vp8_horizontal_line_5_3_scale vp8_horizontal_line_5_3_scale_c
|
||||
|
||||
void vp8_horizontal_line_5_4_scale_c(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width);
|
||||
#define vp8_horizontal_line_5_4_scale vp8_horizontal_line_5_4_scale_c
|
||||
|
||||
void vp8_vertical_band_2_1_scale_c(unsigned char *source, unsigned int src_pitch, unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width);
|
||||
#define vp8_vertical_band_2_1_scale vp8_vertical_band_2_1_scale_c
|
||||
|
||||
void vp8_vertical_band_2_1_scale_i_c(unsigned char *source, unsigned int src_pitch, unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width);
|
||||
#define vp8_vertical_band_2_1_scale_i vp8_vertical_band_2_1_scale_i_c
|
||||
|
||||
void vp8_vertical_band_5_3_scale_c(unsigned char *source, unsigned int src_pitch, unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width);
|
||||
#define vp8_vertical_band_5_3_scale vp8_vertical_band_5_3_scale_c
|
||||
|
||||
void vp8_vertical_band_5_4_scale_c(unsigned char *source, unsigned int src_pitch, unsigned char *dest, unsigned int dest_pitch, unsigned int dest_width);
|
||||
#define vp8_vertical_band_5_4_scale vp8_vertical_band_5_4_scale_c
|
||||
|
||||
void vp8_yv12_copy_frame_c(const struct yv12_buffer_config *src_ybc, struct yv12_buffer_config *dst_ybc);
|
||||
#define vp8_yv12_copy_frame vp8_yv12_copy_frame_c
|
||||
|
||||
void vp8_yv12_extend_frame_borders_c(struct yv12_buffer_config *ybf);
|
||||
#define vp8_yv12_extend_frame_borders vp8_yv12_extend_frame_borders_c
|
||||
|
||||
void vpx_extend_frame_borders_c(struct yv12_buffer_config *ybf);
|
||||
#define vpx_extend_frame_borders vpx_extend_frame_borders_c
|
||||
|
||||
void vpx_extend_frame_inner_borders_c(struct yv12_buffer_config *ybf);
|
||||
#define vpx_extend_frame_inner_borders vpx_extend_frame_inner_borders_c
|
||||
|
||||
void vpx_yv12_copy_frame_c(const struct yv12_buffer_config *src_ybc, struct yv12_buffer_config *dst_ybc);
|
||||
#define vpx_yv12_copy_frame vpx_yv12_copy_frame_c
|
||||
|
||||
void vpx_yv12_copy_y_c(const struct yv12_buffer_config *src_ybc, struct yv12_buffer_config *dst_ybc);
|
||||
#define vpx_yv12_copy_y vpx_yv12_copy_y_c
|
||||
|
||||
void vpx_scale_rtcd(void);
|
||||
|
||||
#include "vpx_config.h"
|
||||
|
||||
#ifdef RTCD_C
|
||||
static void setup_rtcd_internal(void)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
} // extern "C"
|
||||
#endif
|
||||
|
||||
#endif
|
|
@ -204,6 +204,7 @@ gen_config_files mac/ia32 "--target=x86-darwin9-gcc ${all_platforms} ${x86_platf
|
|||
gen_config_files win/x64 "--target=x86_64-win64-vs12 ${all_platforms} ${x86_platforms}"
|
||||
gen_config_files win/ia32 "--target=x86-win32-gcc ${all_platforms} ${x86_platforms}"
|
||||
gen_config_files win/mingw32 "--target=x86-win32-gcc ${all_platforms} ${x86_platforms}"
|
||||
gen_config_files win/aarch64 "--target=aarch64-win64-vs12 ${all_platforms}"
|
||||
|
||||
gen_config_files linux/arm "--target=armv7-linux-gcc ${all_platforms} ${arm_platforms}"
|
||||
|
||||
|
@ -230,6 +231,7 @@ gen_rtcd_header mac/ia32 x86
|
|||
gen_rtcd_header win/x64 x86_64
|
||||
gen_rtcd_header win/ia32 x86
|
||||
gen_rtcd_header win/mingw32 x86
|
||||
gen_rtcd_header win/aarch64 aarch64
|
||||
|
||||
|
||||
gen_rtcd_header linux/arm armv7
|
||||
|
|
|
@ -159,6 +159,7 @@ all_platforms="${all_platforms} x86_64-win64-vs11"
|
|||
all_platforms="${all_platforms} x86_64-win64-vs12"
|
||||
all_platforms="${all_platforms} x86_64-win64-vs14"
|
||||
all_platforms="${all_platforms} x86_64-win64-vs15"
|
||||
all_platforms="${all_platforms} aarch64-win64-vs12"
|
||||
all_platforms="${all_platforms} generic-gnu"
|
||||
|
||||
# all_targets is a list of all targets that can be configured
|
||||
|
|
|
@ -75,6 +75,12 @@ elif CONFIG['CPU_ARCH'] == 'arm':
|
|||
ASFLAGS += [
|
||||
'-no-integrated-as',
|
||||
]
|
||||
elif CONFIG['CPU_ARCH'] == 'aarch64' and CONFIG['OS_TARGET'] == 'WINNT':
|
||||
# Generic C-only configuration
|
||||
EXPORTS.vpx += files['GENERIC_EXPORTS']
|
||||
SOURCES += files['GENERIC_SOURCES']
|
||||
ASFLAGS += [ '-I%s/media/libvpx/config/win/aarch64/' % TOPSRCDIR ]
|
||||
LOCAL_INCLUDES += [ '/media/libvpx/config/win/aarch64/' ]
|
||||
else:
|
||||
# Generic C-only configuration
|
||||
EXPORTS.vpx += files['GENERIC_EXPORTS']
|
||||
|
|
|
@ -43,6 +43,8 @@ def apply_patches():
|
|||
os.system("mv libvpx/vpx_dsp/x86/loopfilter_sse2.c libvpx/vpx_dsp/x86/loopfilter_intrin_sse2.c")
|
||||
# Cherrypick fix from upstream
|
||||
os.system("patch -p3 < bug1480092.patch")
|
||||
# AArch64 Windows support
|
||||
os.system("patch -p3 < aarch64-windows.patch")
|
||||
|
||||
|
||||
def update_readme(commit):
|
||||
|
|
|
@ -424,6 +424,7 @@ bool ScreenCapturerMac::Init() {
|
|||
ScreenConfigurationChanged();
|
||||
*/
|
||||
desktop_config_monitor_->Lock();
|
||||
desktop_config_ = desktop_config_monitor_->desktop_configuration();
|
||||
update_screen_configuration_ = true;
|
||||
desktop_config_monitor_->Unlock();
|
||||
return true;
|
||||
|
|
|
@ -446,6 +446,110 @@ VARCACHE_PREF(
|
|||
// Layout prefs
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
// Debug-only pref to force enable the AccessibleCaret. If you want to
|
||||
// control AccessibleCaret by mouse, you'll need to set
|
||||
// "layout.accessiblecaret.hide_carets_for_mouse_input" to false.
|
||||
VARCACHE_PREF(
|
||||
"layout.accessiblecaret.enabled",
|
||||
layout_accessiblecaret_enabled,
|
||||
bool, false
|
||||
)
|
||||
|
||||
// Enable the accessible caret on platforms/devices
|
||||
// that we detect have touch support. Note that this pref is an
|
||||
// additional way to enable the accessible carets, rather than
|
||||
// overriding the layout.accessiblecaret.enabled pref.
|
||||
VARCACHE_PREF(
|
||||
"layout.accessiblecaret.enabled_on_touch",
|
||||
layout_accessiblecaret_enabled_on_touch,
|
||||
bool, false
|
||||
)
|
||||
|
||||
// By default, carets become tilt only when they are overlapping.
|
||||
VARCACHE_PREF(
|
||||
"layout.accessiblecaret.always_tilt",
|
||||
layout_accessiblecaret_always_tilt,
|
||||
bool, false
|
||||
)
|
||||
|
||||
// Show caret in cursor mode when long tapping on an empty content. This
|
||||
// also changes the default update behavior in cursor mode, which is based
|
||||
// on the emptiness of the content, into something more heuristic. See
|
||||
// AccessibleCaretManager::UpdateCaretsForCursorMode() for the details.
|
||||
VARCACHE_PREF(
|
||||
"layout.accessiblecaret.caret_shown_when_long_tapping_on_empty_content",
|
||||
layout_accessiblecaret_caret_shown_when_long_tapping_on_empty_content,
|
||||
bool, false
|
||||
)
|
||||
|
||||
// 0 = by default, always hide carets for selection changes due to JS calls.
|
||||
// 1 = update any visible carets for selection changes due to JS calls,
|
||||
// but don't show carets if carets are hidden.
|
||||
// 2 = always show carets for selection changes due to JS calls.
|
||||
VARCACHE_PREF(
|
||||
"layout.accessiblecaret.script_change_update_mode",
|
||||
layout_accessiblecaret_script_change_update_mode,
|
||||
int32_t, 0
|
||||
)
|
||||
|
||||
// Allow one caret to be dragged across the other caret without any limitation.
|
||||
// This matches the built-in convention for all desktop platforms.
|
||||
VARCACHE_PREF(
|
||||
"layout.accessiblecaret.allow_dragging_across_other_caret",
|
||||
layout_accessiblecaret_allow_dragging_across_other_caret,
|
||||
bool, true
|
||||
)
|
||||
|
||||
// Optionally provide haptic feedback on long-press selection events.
|
||||
VARCACHE_PREF(
|
||||
"layout.accessiblecaret.hapticfeedback",
|
||||
layout_accessiblecaret_hapticfeedback,
|
||||
bool, false
|
||||
)
|
||||
|
||||
// Smart phone-number selection on long-press is not enabled by default.
|
||||
VARCACHE_PREF(
|
||||
"layout.accessiblecaret.extend_selection_for_phone_number",
|
||||
layout_accessiblecaret_extend_selection_for_phone_number,
|
||||
bool, false
|
||||
)
|
||||
|
||||
// Keep the accessible carets hidden when the user is using mouse input (as
|
||||
// opposed to touch/pen/etc.).
|
||||
VARCACHE_PREF(
|
||||
"layout.accessiblecaret.hide_carets_for_mouse_input",
|
||||
layout_accessiblecaret_hide_carets_for_mouse_input,
|
||||
bool, true
|
||||
)
|
||||
|
||||
// CSS attributes (width, height, margin-left) of the AccessibleCaret in CSS
|
||||
// pixels.
|
||||
VARCACHE_PREF(
|
||||
"layout.accessiblecaret.width",
|
||||
layout_accessiblecaret_width,
|
||||
float, 34.0f
|
||||
)
|
||||
|
||||
VARCACHE_PREF(
|
||||
"layout.accessiblecaret.height",
|
||||
layout_accessiblecaret_height,
|
||||
float, 36.0f
|
||||
)
|
||||
|
||||
VARCACHE_PREF(
|
||||
"layout.accessiblecaret.margin-left",
|
||||
layout_accessiblecaret_margin_left,
|
||||
float, -18.5f
|
||||
)
|
||||
|
||||
// Simulate long tap events to select words. Mainly used in manual testing
|
||||
// with mouse.
|
||||
VARCACHE_PREF(
|
||||
"layout.accessiblecaret.use_long_tap_injector",
|
||||
layout_accessiblecaret_use_long_tap_injector,
|
||||
bool, false
|
||||
)
|
||||
|
||||
// Is parallel CSS parsing enabled?
|
||||
VARCACHE_PREF(
|
||||
"layout.css.parsing.parallel",
|
||||
|
|
|
@ -5514,51 +5514,6 @@ pref("plugins.flashBlock.enabled", false);
|
|||
// Turn off Spatial navigation by default.
|
||||
pref("snav.enabled", false);
|
||||
|
||||
// Debug-only pref to force enable the AccessibleCaret. If you want to
|
||||
// control AccessibleCaret by mouse, you'll need to set
|
||||
// "layout.accessiblecaret.hide_carets_for_mouse_input" to false.
|
||||
pref("layout.accessiblecaret.enabled", false);
|
||||
|
||||
// Enable the accessible caret on platforms/devices
|
||||
// that we detect have touch support. Note that this pref is an
|
||||
// additional way to enable the accessible carets, rather than
|
||||
// overriding the layout.accessiblecaret.enabled pref.
|
||||
pref("layout.accessiblecaret.enabled_on_touch", true);
|
||||
|
||||
// CSS attributes of the AccessibleCaret in CSS pixels.
|
||||
pref("layout.accessiblecaret.width", "34.0");
|
||||
pref("layout.accessiblecaret.height", "36.0");
|
||||
pref("layout.accessiblecaret.margin-left", "-18.5");
|
||||
|
||||
// Show the caret when long tapping on an empty content.
|
||||
pref("layout.accessiblecaret.caret_shown_when_long_tapping_on_empty_content", false);
|
||||
|
||||
// Simulate long tap to select words on the platforms where APZ is not enabled
|
||||
// or long tap events does not fired by APZ.
|
||||
pref("layout.accessiblecaret.use_long_tap_injector", false);
|
||||
|
||||
// By default, carets become tilt only when they are overlapping.
|
||||
pref("layout.accessiblecaret.always_tilt", false);
|
||||
|
||||
// 0 = by default, always hide carets for selection changes due to JS calls.
|
||||
// 1 = update any visible carets for selection changes due to JS calls,
|
||||
// but don't show carets if carets are hidden.
|
||||
// 2 = always show carets for selection changes due to JS calls.
|
||||
pref("layout.accessiblecaret.script_change_update_mode", 0);
|
||||
|
||||
// Allow one caret to be dragged across the other caret without any limitation.
|
||||
// This matches the built-in convention for all desktop platforms.
|
||||
pref("layout.accessiblecaret.allow_dragging_across_other_caret", true);
|
||||
|
||||
// Optionally provide haptic feedback on longPress selection events.
|
||||
pref("layout.accessiblecaret.hapticfeedback", false);
|
||||
|
||||
// Smart phone-number selection on long-press is not enabled by default.
|
||||
pref("layout.accessiblecaret.extend_selection_for_phone_number", false);
|
||||
|
||||
// Keep the accessible carets hidden when the user is using mouse input.
|
||||
pref("layout.accessiblecaret.hide_carets_for_mouse_input", true);
|
||||
|
||||
// Wakelock is disabled by default.
|
||||
pref("dom.wakelock.enabled", false);
|
||||
|
||||
|
|
|
@ -237,6 +237,7 @@ set_config('OBJ_SUFFIX', library_name_info.obj.suffix)
|
|||
# Lots of compilation tests depend on this variable being present.
|
||||
add_old_configure_assignment('OBJ_SUFFIX', library_name_info.obj.suffix)
|
||||
set_config('IMPORT_LIB_SUFFIX', library_name_info.import_lib.suffix)
|
||||
set_define('MOZ_DLL_PREFIX', depends(library_name_info.dll.prefix)(lambda s: '"%s"' % s))
|
||||
set_define('MOZ_DLL_SUFFIX', depends(library_name_info.dll.suffix)(lambda s: '"%s"' % s))
|
||||
|
||||
# Depends on host_library_name_info, so needs to go here.
|
||||
|
|
|
@ -1188,7 +1188,7 @@ LoadLoadableRoots(const nsCString& dir)
|
|||
int unusedModType;
|
||||
Unused << SECMOD_DeleteModule(kRootModuleName, &unusedModType);
|
||||
// Some NSS command-line utilities will load a roots module under the name
|
||||
// "Root Certs" if there happens to be a `DLL_PREFIX "nssckbi" DLL_SUFFIX`
|
||||
// "Root Certs" if there happens to be a `MOZ_DLL_PREFIX "nssckbi" MOZ_DLL_SUFFIX`
|
||||
// file in the directory being operated on. In some cases this can cause us to
|
||||
// fail to load our roots module. In these cases, deleting the "Root Certs"
|
||||
// module allows us to load the correct one. See bug 1406396.
|
||||
|
@ -1199,7 +1199,7 @@ LoadLoadableRoots(const nsCString& dir)
|
|||
fullLibraryPath.Assign(dir);
|
||||
fullLibraryPath.AppendLiteral(FILE_PATH_SEPARATOR);
|
||||
}
|
||||
fullLibraryPath.Append(DLL_PREFIX "nssckbi" DLL_SUFFIX);
|
||||
fullLibraryPath.Append(MOZ_DLL_PREFIX "nssckbi" MOZ_DLL_SUFFIX);
|
||||
// Escape the \ and " characters.
|
||||
fullLibraryPath.ReplaceSubstring("\\", "\\\\");
|
||||
fullLibraryPath.ReplaceSubstring("\"", "\\\"");
|
||||
|
|
|
@ -44,9 +44,6 @@ if not CONFIG['NSS_NO_EV_CERTS']:
|
|||
'ExtendedValidation.cpp',
|
||||
]
|
||||
|
||||
for var in ('DLL_PREFIX', 'DLL_SUFFIX'):
|
||||
DEFINES[var] = '"%s"' % CONFIG[var]
|
||||
|
||||
LOCAL_INCLUDES += [
|
||||
'/security/manager/ssl',
|
||||
'/security/pkix/include',
|
||||
|
|
|
@ -105,11 +105,11 @@ PKCS11ModuleDB::AddModule(const nsAString& aModuleName,
|
|||
|
||||
// "Root Certs" is the name some NSS command-line utilities will give the
|
||||
// roots module if they decide to load it when there happens to be a
|
||||
// `DLL_PREFIX "nssckbi" DLL_SUFFIX` file in the directory being operated on.
|
||||
// This causes failures, so as a workaround, the PSM initialization code will
|
||||
// unconditionally remove any module named "Root Certs". We should prevent the
|
||||
// user from adding an unrelated module named "Root Certs" in the first place
|
||||
// so PSM doesn't delete it. See bug 1406396.
|
||||
// `MOZ_DLL_PREFIX "nssckbi" MOZ_DLL_SUFFIX` file in the directory being
|
||||
// operated on. This causes failures, so as a workaround, the PSM
|
||||
// initialization code will unconditionally remove any module named "Root
|
||||
// Certs". We should prevent the user from adding an unrelated module named
|
||||
// "Root Certs" in the first place so PSM doesn't delete it. See bug 1406396.
|
||||
if (aModuleName.EqualsLiteral("Root Certs")) {
|
||||
return NS_ERROR_ILLEGAL_VALUE;
|
||||
}
|
||||
|
|
|
@ -196,8 +196,6 @@ if CONFIG['NSS_DISABLE_DBM']:
|
|||
|
||||
DEFINES['SSL_DISABLE_DEPRECATED_CIPHER_SUITE_NAMES'] = 'True'
|
||||
DEFINES['NSS_ENABLE_ECC'] = 'True'
|
||||
for var in ('DLL_PREFIX', 'DLL_SUFFIX'):
|
||||
DEFINES[var] = '"%s"' % CONFIG[var]
|
||||
|
||||
if not CONFIG['MOZ_SYSTEM_NSS']:
|
||||
USE_LIBS += [
|
||||
|
|
|
@ -983,12 +983,12 @@ nsNSSComponent::CheckForSmartCardChanges()
|
|||
}
|
||||
|
||||
// Returns by reference the path to the directory containing the file that has
|
||||
// been loaded as DLL_PREFIX nss3 DLL_SUFFIX.
|
||||
// been loaded as MOZ_DLL_PREFIX nss3 MOZ_DLL_SUFFIX.
|
||||
static nsresult
|
||||
GetNSS3Directory(nsCString& result)
|
||||
{
|
||||
UniquePRString nss3Path(
|
||||
PR_GetLibraryFilePathname(DLL_PREFIX "nss3" DLL_SUFFIX,
|
||||
PR_GetLibraryFilePathname(MOZ_DLL_PREFIX "nss3" MOZ_DLL_SUFFIX,
|
||||
reinterpret_cast<PRFuncPtr>(NSS_Initialize)));
|
||||
if (!nss3Path) {
|
||||
MOZ_LOG(gPIPNSSLog, LogLevel::Debug, ("nss not loaded?"));
|
||||
|
@ -1068,7 +1068,7 @@ LoadLoadableRootsTask::LoadLoadableRoots()
|
|||
// but also ensure the library is at least the version we expect.
|
||||
Vector<nsCString> possibleCKBILocations;
|
||||
// First try in the directory where we've already loaded
|
||||
// DLL_PREFIX nss3 DLL_SUFFIX, since that's likely to be correct.
|
||||
// MOZ_DLL_PREFIX nss3 MOZ_DLL_SUFFIX, since that's likely to be correct.
|
||||
nsAutoCString nss3Dir;
|
||||
nsresult rv = GetNSS3Directory(nss3Dir);
|
||||
if (NS_SUCCEEDED(rv)) {
|
||||
|
|
|
@ -1,11 +1,15 @@
|
|||
job-defaults:
|
||||
max-run-time: 1800
|
||||
suite: raptor
|
||||
workdir: /home/cltbld
|
||||
workdir:
|
||||
by-test-platform:
|
||||
android-hw.*: /builds/worker
|
||||
default: /home/cltbld
|
||||
tier:
|
||||
by-test-platform:
|
||||
windows10-64-ccov/.*: 3
|
||||
linux64-ccov/.*: 3
|
||||
android-hw-g5.*: 3
|
||||
default: 2
|
||||
virtualization:
|
||||
by-test-platform:
|
||||
|
@ -23,6 +27,8 @@ job-defaults:
|
|||
- raptor/windows_vm_config.py
|
||||
linux64-ccov/opt:
|
||||
- raptor/linux64_config_taskcluster.py
|
||||
android-hw.*:
|
||||
- raptor/android_hw_config.py
|
||||
default:
|
||||
- raptor/linux_config.py
|
||||
|
||||
|
@ -57,6 +63,21 @@ raptor-speedometer-firefox:
|
|||
extra-options:
|
||||
- --test=raptor-speedometer
|
||||
|
||||
raptor-speedometer-geckoview:
|
||||
description: "Raptor Speedometer on Geckoview"
|
||||
try-name: raptor-speedometer-geckoview
|
||||
treeherder-symbol: Rap(sp)
|
||||
target: geckoview_example.apk
|
||||
run-on-projects:
|
||||
by-test-platform:
|
||||
android-hw.*: ['try', 'mozilla-central']
|
||||
max-run-time: 1500
|
||||
mozharness:
|
||||
extra-options:
|
||||
- --test=raptor-speedometer
|
||||
- --app=geckoview
|
||||
- --binary=org.mozilla.geckoview_example
|
||||
|
||||
raptor-speedometer-chrome:
|
||||
description: "Raptor Speedometer on Chrome"
|
||||
try-name: raptor-speedometer-chrome
|
||||
|
|
|
@ -348,12 +348,20 @@ android-em-7.0-x86/opt:
|
|||
|
||||
# android-hw test platforms execute on real devices attached to Autophone hosts.
|
||||
|
||||
# android-hw-g5-7-0 Motorola Moto G5 Android 7.0
|
||||
|
||||
android-hw-g5-7-0-arm7-api-16/opt:
|
||||
build-platform: android-api-16/opt
|
||||
test-sets:
|
||||
- android-hw-arm7-raptor
|
||||
|
||||
# android-hw-p2-8-0 Google Pixel 2 Android 8.0
|
||||
|
||||
android-hw-p2-8-0-arm7-api-16/opt:
|
||||
build-platform: android-api-16/opt
|
||||
test-sets:
|
||||
- android-hw-arm7-opt-unittests
|
||||
- android-hw-arm7-raptor
|
||||
|
||||
android-hw-p2-8-0-arm7-api-16/debug:
|
||||
build-platform: android-api-16/debug
|
||||
|
@ -364,3 +372,4 @@ android-hw-p2-8-0-android-aarch64/opt:
|
|||
build-platform: android-aarch64/opt
|
||||
test-sets:
|
||||
- android-hw-aarch64-opt-unittests
|
||||
- android-hw-aarch64-raptor
|
||||
|
|
|
@ -424,3 +424,10 @@ android-hw-arm7-debug-unittests:
|
|||
|
||||
android-hw-aarch64-opt-unittests:
|
||||
- jittest
|
||||
|
||||
# Coming soonish!
|
||||
android-hw-arm7-raptor:
|
||||
- raptor-speedometer-geckoview
|
||||
|
||||
android-hw-aarch64-raptor:
|
||||
- raptor-speedometer-geckoview
|
||||
|
|
|
@ -147,7 +147,9 @@ test_description_schema = Schema({
|
|||
basestring),
|
||||
|
||||
# base work directory used to set up the task.
|
||||
Optional('workdir'): basestring,
|
||||
Optional('workdir'): optionally_keyed_by(
|
||||
'test-platform',
|
||||
Any(basestring, 'default')),
|
||||
|
||||
# the name by which this test suite is addressed in try syntax; defaults to
|
||||
# the test-name. This will translate to the `unittest_try_name` or
|
||||
|
@ -694,6 +696,7 @@ def handle_keyed_by(config, tests):
|
|||
'mozharness.extra-options',
|
||||
'mozharness.requires-signed-builds',
|
||||
'mozharness.script',
|
||||
'workdir',
|
||||
'worker-type',
|
||||
'virtualization',
|
||||
]
|
||||
|
|
|
@ -0,0 +1,21 @@
|
|||
import os
|
||||
|
||||
config = {
|
||||
"log_name": "raptor",
|
||||
"title": os.uname()[1].lower().split('.')[0],
|
||||
"default_actions": [
|
||||
"clobber",
|
||||
"download-and-extract",
|
||||
"populate-webroot",
|
||||
"install-chrome",
|
||||
"create-virtualenv",
|
||||
"install",
|
||||
"run-tests",
|
||||
],
|
||||
"tooltool_cache": "/builds/tooltool_cache",
|
||||
"download_tooltool": True,
|
||||
"download_minidump_stackwalk": True,
|
||||
"minidump_stackwalk_path": "linux64-minidump_stackwalk",
|
||||
"tooltool_servers": ['https://tooltool.mozilla-releng.net/'],
|
||||
"minidump_tooltool_manifest_path": "config/tooltool-manifests/linux64/releng.manifest",
|
||||
}
|
|
@ -0,0 +1,230 @@
|
|||
#!/usr/bin/env python
|
||||
# ***** BEGIN LICENSE BLOCK *****
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||
# You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
# ***** END LICENSE BLOCK *****
|
||||
|
||||
import datetime
|
||||
import glob
|
||||
import os
|
||||
import subprocess
|
||||
import tempfile
|
||||
import time
|
||||
from mozharness.mozilla.automation import TBPL_RETRY, EXIT_STATUS_DICT
|
||||
|
||||
|
||||
class AndroidMixin:
|
||||
"""
|
||||
Mixin class used by Android test scripts.
|
||||
"""
|
||||
|
||||
def init(self):
|
||||
self.logcat_proc = None
|
||||
self.logcat_file = None
|
||||
|
||||
self.adb_path = self.query_exe('adb')
|
||||
self.sdk_level = None
|
||||
self.device_name = os.environ['DEVICE_NAME']
|
||||
self.device_serial = os.environ['DEVICE_SERIAL']
|
||||
self.device_ip = os.environ['DEVICE_IP']
|
||||
|
||||
def _retry(self, max_attempts, interval, func, description, max_time=0):
|
||||
'''
|
||||
Execute func until it returns True, up to max_attempts times, waiting for
|
||||
interval seconds between each attempt. description is logged on each attempt.
|
||||
If max_time is specified, no further attempts will be made once max_time
|
||||
seconds have elapsed; this provides some protection for the case where
|
||||
the run-time for func is long or highly variable.
|
||||
'''
|
||||
status = False
|
||||
attempts = 0
|
||||
if max_time > 0:
|
||||
end_time = datetime.datetime.now() + datetime.timedelta(seconds=max_time)
|
||||
else:
|
||||
end_time = None
|
||||
while attempts < max_attempts and not status:
|
||||
if (end_time is not None) and (datetime.datetime.now() > end_time):
|
||||
self.info("Maximum retry run-time of %d seconds exceeded; "
|
||||
"remaining attempts abandoned" % max_time)
|
||||
break
|
||||
if attempts != 0:
|
||||
self.info("Sleeping %d seconds" % interval)
|
||||
time.sleep(interval)
|
||||
attempts += 1
|
||||
self.info(">> %s: Attempt #%d of %d" % (description, attempts, max_attempts))
|
||||
status = func()
|
||||
return status
|
||||
|
||||
def _run_proc(self, cmd, quiet=False):
|
||||
self.info('Running %s' % subprocess.list2cmdline(cmd))
|
||||
p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, bufsize=0)
|
||||
out, err = p.communicate()
|
||||
if out and not quiet:
|
||||
self.info('%s' % str(out.strip()))
|
||||
if err and not quiet:
|
||||
self.info('stderr: %s' % str(err.strip()))
|
||||
return out, err
|
||||
|
||||
def _run_with_timeout(self, timeout, cmd, quiet=False):
|
||||
timeout_cmd = ['timeout', '%s' % timeout] + cmd
|
||||
return self._run_proc(timeout_cmd, quiet=quiet)
|
||||
|
||||
def _run_adb_with_timeout(self, timeout, cmd, quiet=False):
|
||||
cmd = [self.adb_path, '-s', self.device_serial] + cmd
|
||||
return self._run_with_timeout(timeout, cmd, quiet)
|
||||
|
||||
def _verify_adb(self):
|
||||
self.info('Verifying adb connectivity')
|
||||
self._run_with_timeout(180, [self.adb_path,
|
||||
'-s',
|
||||
self.device_serial,
|
||||
'wait-for-device'])
|
||||
return True
|
||||
|
||||
def _verify_adb_device(self):
|
||||
out, _ = self._run_with_timeout(30, [self.adb_path, 'devices'])
|
||||
if (self.device_serial in out) and ("device" in out):
|
||||
return True
|
||||
return False
|
||||
|
||||
def _is_boot_completed(self):
|
||||
boot_cmd = ['shell', 'getprop', 'sys.boot_completed']
|
||||
out, _ = self._run_adb_with_timeout(30, boot_cmd)
|
||||
if out.strip() == '1':
|
||||
return True
|
||||
return False
|
||||
|
||||
def _install_apk(self):
|
||||
install_ok = False
|
||||
if int(self.sdk_level) >= 23:
|
||||
cmd = ['install', '-r', '-g', self.installer_path]
|
||||
else:
|
||||
cmd = ['install', '-r', self.installer_path]
|
||||
self.warning("Installing apk with default run-time permissions (sdk %s)" %
|
||||
str(self.sdk_level))
|
||||
out, err = self._run_adb_with_timeout(300, cmd, True)
|
||||
if 'Success' in out or 'Success' in err:
|
||||
install_ok = True
|
||||
return install_ok
|
||||
|
||||
def _get_repo_url(self, path):
|
||||
"""
|
||||
Return a url for a file (typically a tooltool manifest) in this hg repo
|
||||
and using this revision (or mozilla-central/default if repo/rev cannot
|
||||
be determined).
|
||||
|
||||
:param path specifies the directory path to the file of interest.
|
||||
"""
|
||||
if 'GECKO_HEAD_REPOSITORY' in os.environ and 'GECKO_HEAD_REV' in os.environ:
|
||||
# probably taskcluster
|
||||
repo = os.environ['GECKO_HEAD_REPOSITORY']
|
||||
revision = os.environ['GECKO_HEAD_REV']
|
||||
else:
|
||||
# something unexpected!
|
||||
repo = 'https://hg.mozilla.org/mozilla-central'
|
||||
revision = 'default'
|
||||
self.warning('Unable to find repo/revision for manifest; '
|
||||
'using mozilla-central/default')
|
||||
url = '%s/raw-file/%s/%s' % (
|
||||
repo,
|
||||
revision,
|
||||
path)
|
||||
return url
|
||||
|
||||
def _tooltool_fetch(self, url, dir):
|
||||
c = self.config
|
||||
manifest_path = self.download_file(
|
||||
url,
|
||||
file_name='releng.manifest',
|
||||
parent_dir=dir
|
||||
)
|
||||
if not os.path.exists(manifest_path):
|
||||
self.fatal("Could not retrieve manifest needed to retrieve "
|
||||
"artifacts from %s" % manifest_path)
|
||||
# from TooltoolMixin, included in TestingMixin
|
||||
self.tooltool_fetch(manifest_path,
|
||||
output_dir=dir,
|
||||
cache=c.get("tooltool_cache", None))
|
||||
|
||||
def logcat_start(self):
|
||||
"""
|
||||
Start recording logcat. Writes logcat to the upload directory.
|
||||
"""
|
||||
self.mkdir_p(self.query_abs_dirs()['abs_blob_upload_dir'])
|
||||
# Start logcat for the device. The adb process runs until the
|
||||
# corresponding device is stopped. Output is written directly to
|
||||
# the blobber upload directory so that it is uploaded automatically
|
||||
# at the end of the job.
|
||||
logcat_filename = 'logcat-%s.log' % self.device_serial
|
||||
logcat_path = os.path.join(self.abs_dirs['abs_blob_upload_dir'],
|
||||
logcat_filename)
|
||||
self.logcat_file = open(logcat_path, 'w')
|
||||
logcat_cmd = [self.adb_path, '-s', self.device_serial, 'logcat', '-v',
|
||||
'threadtime', 'Trace:S', 'StrictMode:S',
|
||||
'ExchangeService:S']
|
||||
self.info(' '.join(logcat_cmd))
|
||||
self.logcat_proc = subprocess.Popen(logcat_cmd, stdout=self.logcat_file,
|
||||
stdin=subprocess.PIPE)
|
||||
|
||||
def logcat_stop(self):
|
||||
"""
|
||||
Stop logcat process started by logcat_start.
|
||||
"""
|
||||
if self.logcat_proc:
|
||||
self.info("Killing logcat pid %d." % self.logcat_proc.pid)
|
||||
self.logcat_proc.kill()
|
||||
self.logcat_file.close()
|
||||
|
||||
def install_apk(self, apk):
|
||||
"""
|
||||
Install the specified apk.
|
||||
"""
|
||||
self.init()
|
||||
cmd = [self.adb_path, '-s', self.device_serial, 'shell',
|
||||
'getprop', 'ro.build.version.sdk']
|
||||
self.sdk_level, _ = self._run_with_timeout(30, cmd)
|
||||
|
||||
install_ok = self._retry(3, 30, self._install_apk, "Install app APK")
|
||||
if not install_ok:
|
||||
self.fatal('INFRA-ERROR: Failed to install %s on %s' %
|
||||
(self.installer_path, self.device_name),
|
||||
EXIT_STATUS_DICT[TBPL_RETRY])
|
||||
return install_ok
|
||||
|
||||
def screenshot(self, prefix):
|
||||
"""
|
||||
Save a screenshot of the entire screen to the blob upload directory.
|
||||
"""
|
||||
dirs = self.query_abs_dirs()
|
||||
utility = os.path.join(self.xre_path, "screentopng")
|
||||
if not os.path.exists(utility):
|
||||
self.warning("Unable to take screenshot: %s does not exist" % utility)
|
||||
return
|
||||
try:
|
||||
tmpfd, filename = tempfile.mkstemp(prefix=prefix, suffix='.png',
|
||||
dir=dirs['abs_blob_upload_dir'])
|
||||
os.close(tmpfd)
|
||||
self.info("Taking screenshot with %s; saving to %s" % (utility, filename))
|
||||
subprocess.call([utility, filename], env=self.query_env())
|
||||
except OSError, err:
|
||||
self.warning("Failed to take screenshot: %s" % err.strerror)
|
||||
|
||||
def download_hostutils(self, xre_dir):
|
||||
"""
|
||||
Download and install hostutils from tooltool.
|
||||
"""
|
||||
xre_path = None
|
||||
self.rmtree(xre_dir)
|
||||
self.mkdir_p(xre_dir)
|
||||
if self.config["hostutils_manifest_path"]:
|
||||
url = self._get_repo_url(self.config["hostutils_manifest_path"])
|
||||
self._tooltool_fetch(url, xre_dir)
|
||||
for p in glob.glob(os.path.join(xre_dir, 'host-utils-*')):
|
||||
if os.path.isdir(p) and os.path.isfile(os.path.join(p, 'xpcshell')):
|
||||
xre_path = p
|
||||
if not xre_path:
|
||||
self.fatal("xre path not found in %s" % xre_dir)
|
||||
else:
|
||||
self.fatal("configure hostutils_manifest_path!")
|
||||
return xre_path
|
|
@ -19,6 +19,7 @@ import mozharness
|
|||
from mozharness.base.errors import PythonErrorList
|
||||
from mozharness.base.log import OutputParser, DEBUG, ERROR, CRITICAL, INFO
|
||||
from mozharness.mozilla.testing.testbase import TestingMixin, testing_config_options
|
||||
from mozharness.mozilla.testing.android import AndroidMixin
|
||||
from mozharness.base.vcs.vcsbase import MercurialScript
|
||||
from mozharness.mozilla.testing.codecoverage import (
|
||||
CodeCoverageMixin,
|
||||
|
@ -43,7 +44,7 @@ RaptorErrorList = PythonErrorList + [
|
|||
]
|
||||
|
||||
|
||||
class Raptor(TestingMixin, MercurialScript, CodeCoverageMixin):
|
||||
class Raptor(TestingMixin, MercurialScript, CodeCoverageMixin, AndroidMixin):
|
||||
"""
|
||||
install and run raptor tests
|
||||
"""
|
||||
|
@ -123,6 +124,7 @@ class Raptor(TestingMixin, MercurialScript, CodeCoverageMixin):
|
|||
# raptor initiated in production via mozharness
|
||||
self.test = self.config['test']
|
||||
self.app = self.config.get("app", "firefox")
|
||||
self.binary_path = self.config.get("binary_path", None)
|
||||
|
||||
self.installer_url = self.config.get("installer_url")
|
||||
self.raptor_json_url = self.config.get("raptor_json_url")
|
||||
|
@ -133,6 +135,7 @@ class Raptor(TestingMixin, MercurialScript, CodeCoverageMixin):
|
|||
self.test = None
|
||||
self.gecko_profile = self.config.get('gecko_profile')
|
||||
self.gecko_profile_interval = self.config.get('gecko_profile_interval')
|
||||
self.test_packages_url = self.config.get('test_packages_url')
|
||||
|
||||
# We accept some configuration options from the try commit message in the
|
||||
# format mozharness: <options>. Example try commit message: mozharness:
|
||||
|
@ -155,6 +158,7 @@ class Raptor(TestingMixin, MercurialScript, CodeCoverageMixin):
|
|||
abs_dirs['abs_blob_upload_dir'] = os.path.join(abs_dirs['abs_work_dir'],
|
||||
'blobber_upload_dir')
|
||||
abs_dirs['abs_test_install_dir'] = os.path.join(abs_dirs['abs_work_dir'], 'tests')
|
||||
|
||||
self.abs_dirs = abs_dirs
|
||||
return self.abs_dirs
|
||||
|
||||
|
@ -256,7 +260,7 @@ class Raptor(TestingMixin, MercurialScript, CodeCoverageMixin):
|
|||
self.fatal("Raptor requires a path to the binary.")
|
||||
kw_options['binary'] = binary_path
|
||||
else:
|
||||
if not self.run_local:
|
||||
if not self.run_local and self.binary_path is None:
|
||||
# in production we aready installed google chrome, so set the binary path for arg
|
||||
# when running locally a --binary arg as passed in, already in raptor_cmd_line_args
|
||||
kw_options['binary'] = self.chrome_path
|
||||
|
@ -284,6 +288,8 @@ class Raptor(TestingMixin, MercurialScript, CodeCoverageMixin):
|
|||
options.extend(['--code-coverage'])
|
||||
for key, value in kw_options.items():
|
||||
options.extend(['--%s' % key, value])
|
||||
if self.binary_path is not None:
|
||||
options.extend(['--binary', self.binary_path])
|
||||
|
||||
return options
|
||||
|
||||
|
@ -301,6 +307,7 @@ class Raptor(TestingMixin, MercurialScript, CodeCoverageMixin):
|
|||
def download_and_extract(self, extract_dirs=None, suite_categories=None):
|
||||
if 'MOZ_FETCHES' in os.environ:
|
||||
self.fetch_content()
|
||||
|
||||
return super(Raptor, self).download_and_extract(
|
||||
suite_categories=['common', 'raptor']
|
||||
)
|
||||
|
@ -359,6 +366,12 @@ class Raptor(TestingMixin, MercurialScript, CodeCoverageMixin):
|
|||
'requirements.txt')]
|
||||
)
|
||||
|
||||
def install(self):
|
||||
if self.app == "geckoview":
|
||||
self.install_apk(os.path.basename(self.installer_url))
|
||||
else:
|
||||
super(Raptor, self).install()
|
||||
|
||||
def _validate_treeherder_data(self, parser):
|
||||
# late import is required, because install is done in create_virtualenv
|
||||
import jsonschema
|
||||
|
@ -455,6 +468,9 @@ class Raptor(TestingMixin, MercurialScript, CodeCoverageMixin):
|
|||
|
||||
return bool(debug_opts.intersection(cmdline))
|
||||
|
||||
if self.app == "geckoview":
|
||||
self.logcat_start()
|
||||
|
||||
command = [python, run_tests] + options + mozlog_opts
|
||||
if launch_in_debug_mode(command):
|
||||
raptor_process = subprocess.Popen(command, cwd=self.workdir, env=env)
|
||||
|
@ -464,6 +480,10 @@ class Raptor(TestingMixin, MercurialScript, CodeCoverageMixin):
|
|||
output_timeout=output_timeout,
|
||||
output_parser=parser,
|
||||
env=env)
|
||||
|
||||
if self.app == "geckoview":
|
||||
self.logcat_stop()
|
||||
|
||||
if parser.minidump_output:
|
||||
self.info("Looking at the minidump files for debugging purposes...")
|
||||
for item in parser.minidump_output:
|
||||
|
|
Загрузка…
Ссылка в новой задаче