зеркало из https://github.com/mozilla/gecko-dev.git
merge mozilla-inbound to mozilla-central. r=merge a=merge
This commit is contained in:
Коммит
f5e52adeea
|
@ -358,10 +358,17 @@ const CustomizableWidgets = [
|
|||
_showTabs(paginationInfo) {
|
||||
this._showTabsPromise = this._showTabsPromise.then(() => {
|
||||
return this.__showTabs(paginationInfo);
|
||||
}, e => {
|
||||
Cu.reportError(e);
|
||||
});
|
||||
},
|
||||
// Return a new promise to update the tab list.
|
||||
__showTabs(paginationInfo) {
|
||||
if (!this._tabsList) {
|
||||
// Closed between the previous `this._showTabsPromise`
|
||||
// resolving and now.
|
||||
return undefined;
|
||||
}
|
||||
let doc = this._tabsList.ownerDocument;
|
||||
return SyncedTabs.getTabClients().then(clients => {
|
||||
// The view may have been hidden while the promise was resolving.
|
||||
|
|
|
@ -468,10 +468,8 @@ nsBrowserContentHandler.prototype = {
|
|||
} else {
|
||||
info += " --preferences Open Preferences dialog.\n";
|
||||
}
|
||||
if (AppConstants.platform == "win" || AppConstants.MOZ_WIDGET_GTK) {
|
||||
info += " --screenshot [<path>] Save screenshot to <path> or in working directory.\n";
|
||||
info += " --window-size width[,height] Width and optionally height of screenshot.\n";
|
||||
}
|
||||
info += " --screenshot [<path>] Save screenshot to <path> or in working directory.\n";
|
||||
info += " --window-size width[,height] Width and optionally height of screenshot.\n";
|
||||
info += " --search <term> Search <term> with your default search engine.\n";
|
||||
return info;
|
||||
},
|
||||
|
|
|
@ -34,7 +34,11 @@ const BUILT_IN_SECTIONS = {
|
|||
title: {id: "header_recommended_by", values: {provider: options.provider_name}},
|
||||
disclaimer: {
|
||||
text: {id: options.disclaimer_text || "section_disclaimer_topstories"},
|
||||
link: {href: options.disclaimer_link, id: options.disclaimer_linktext || "section_disclaimer_topstories_linktext"},
|
||||
link: {
|
||||
// The href fallback is temporary so users in existing Shield studies get this configuration as well
|
||||
href: options.disclaimer_link || "https://getpocket.cdn.mozilla.net/firefox/new_tab_learn_more",
|
||||
id: options.disclaimer_linktext || "section_disclaimer_topstories_linktext"
|
||||
},
|
||||
button: {id: options.disclaimer_buttontext || "section_disclaimer_topstories_buttontext"}
|
||||
},
|
||||
maxRows: 1,
|
||||
|
|
|
@ -1524,7 +1524,11 @@ class CreditCards extends AutofillRecords {
|
|||
}
|
||||
|
||||
_normalizeFields(creditCard) {
|
||||
// Normalize name
|
||||
this._normalizeCCName(creditCard);
|
||||
this._normalizeCCExpirationDate(creditCard);
|
||||
}
|
||||
|
||||
_normalizeCCName(creditCard) {
|
||||
if (creditCard["cc-given-name"] || creditCard["cc-additional-name"] || creditCard["cc-family-name"]) {
|
||||
if (!creditCard["cc-name"]) {
|
||||
creditCard["cc-name"] = FormAutofillNameUtils.joinNameParts({
|
||||
|
@ -1538,8 +1542,9 @@ class CreditCards extends AutofillRecords {
|
|||
delete creditCard["cc-additional-name"];
|
||||
delete creditCard["cc-family-name"];
|
||||
}
|
||||
}
|
||||
|
||||
// Validate expiry date
|
||||
_normalizeCCExpirationDate(creditCard) {
|
||||
if (creditCard["cc-exp-month"]) {
|
||||
let expMonth = parseInt(creditCard["cc-exp-month"], 10);
|
||||
if (isNaN(expMonth) || expMonth < 1 || expMonth > 12) {
|
||||
|
@ -1548,6 +1553,7 @@ class CreditCards extends AutofillRecords {
|
|||
creditCard["cc-exp-month"] = expMonth;
|
||||
}
|
||||
}
|
||||
|
||||
if (creditCard["cc-exp-year"]) {
|
||||
let expYear = parseInt(creditCard["cc-exp-year"], 10);
|
||||
if (isNaN(expYear) || expYear < 0) {
|
||||
|
@ -1559,6 +1565,65 @@ class CreditCards extends AutofillRecords {
|
|||
creditCard["cc-exp-year"] = expYear;
|
||||
}
|
||||
}
|
||||
|
||||
if (creditCard["cc-exp"] && (!creditCard["cc-exp-month"] || !creditCard["cc-exp-year"])) {
|
||||
let rules = [
|
||||
{
|
||||
regex: "(\\d{4})[-/](\\d{1,2})",
|
||||
yearIndex: 1,
|
||||
monthIndex: 2,
|
||||
},
|
||||
{
|
||||
regex: "(\\d{1,2})[-/](\\d{4})",
|
||||
yearIndex: 2,
|
||||
monthIndex: 1,
|
||||
},
|
||||
{
|
||||
regex: "(\\d{1,2})[-/](\\d{1,2})",
|
||||
},
|
||||
{
|
||||
regex: "(\\d{2})(\\d{2})",
|
||||
},
|
||||
];
|
||||
|
||||
for (let rule of rules) {
|
||||
let result = new RegExp(`(?:^|\\D)${rule.regex}(?!\\d)`).exec(creditCard["cc-exp"]);
|
||||
if (!result) {
|
||||
continue;
|
||||
}
|
||||
|
||||
let expYear, expMonth;
|
||||
|
||||
if (!rule.yearIndex || !rule.monthIndex) {
|
||||
expMonth = parseInt(result[1], 10);
|
||||
if (expMonth > 12) {
|
||||
expYear = parseInt(result[1], 10);
|
||||
expMonth = parseInt(result[2], 10);
|
||||
} else {
|
||||
expYear = parseInt(result[2], 10);
|
||||
}
|
||||
} else {
|
||||
expYear = parseInt(result[rule.yearIndex], 10);
|
||||
expMonth = parseInt(result[rule.monthIndex], 10);
|
||||
}
|
||||
|
||||
if (expMonth < 1 || expMonth > 12) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (expYear < 100) {
|
||||
expYear += 2000;
|
||||
} else if (expYear < 2000) {
|
||||
continue;
|
||||
}
|
||||
|
||||
creditCard["cc-exp-month"] = expMonth;
|
||||
creditCard["cc-exp-year"] = expYear;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
delete creditCard["cc-exp"];
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -527,7 +527,6 @@ const CREDIT_CARD_NORMALIZE_TESTCASES = [
|
|||
{
|
||||
description: "No normalizable field",
|
||||
creditCard: {
|
||||
"cc-number": "1234123412341234", // cc-number won't be verified
|
||||
},
|
||||
expectedResult: {
|
||||
},
|
||||
|
@ -540,7 +539,6 @@ const CREDIT_CARD_NORMALIZE_TESTCASES = [
|
|||
"cc-name": "Timothy John Berners-Lee",
|
||||
"cc-given-name": "John",
|
||||
"cc-family-name": "Doe",
|
||||
"cc-number": "1234123412341234", // cc-number won't be verified
|
||||
},
|
||||
expectedResult: {
|
||||
"cc-name": "Timothy John Berners-Lee",
|
||||
|
@ -551,12 +549,209 @@ const CREDIT_CARD_NORMALIZE_TESTCASES = [
|
|||
creditCard: {
|
||||
"cc-given-name": "John",
|
||||
"cc-family-name": "Doe",
|
||||
"cc-number": "1234123412341234", // cc-number won't be verified
|
||||
},
|
||||
expectedResult: {
|
||||
"cc-name": "John Doe",
|
||||
},
|
||||
},
|
||||
|
||||
// Expiration Date
|
||||
{
|
||||
description: "Has \"cc-exp\" formatted \"yyyy-mm\"",
|
||||
creditCard: {
|
||||
"cc-exp": "2022-12",
|
||||
},
|
||||
expectedResult: {
|
||||
"cc-exp-month": 12,
|
||||
"cc-exp-year": 2022,
|
||||
},
|
||||
},
|
||||
{
|
||||
description: "Has \"cc-exp\" formatted \"yyyy/mm\"",
|
||||
creditCard: {
|
||||
"cc-exp": "2022/12",
|
||||
},
|
||||
expectedResult: {
|
||||
"cc-exp-month": 12,
|
||||
"cc-exp-year": 2022,
|
||||
},
|
||||
},
|
||||
{
|
||||
description: "Has \"cc-exp\" formatted \"yyyy-m\"",
|
||||
creditCard: {
|
||||
"cc-exp": "2022-3",
|
||||
},
|
||||
expectedResult: {
|
||||
"cc-exp-month": 3,
|
||||
"cc-exp-year": 2022,
|
||||
},
|
||||
},
|
||||
{
|
||||
description: "Has \"cc-exp\" formatted \"yyyy/m\"",
|
||||
creditCard: {
|
||||
"cc-exp": "2022/3",
|
||||
},
|
||||
expectedResult: {
|
||||
"cc-exp-month": 3,
|
||||
"cc-exp-year": 2022,
|
||||
},
|
||||
},
|
||||
{
|
||||
description: "Has \"cc-exp\" formatted \"mm-yyyy\"",
|
||||
creditCard: {
|
||||
"cc-exp": "12-2022",
|
||||
},
|
||||
expectedResult: {
|
||||
"cc-exp-month": 12,
|
||||
"cc-exp-year": 2022,
|
||||
},
|
||||
},
|
||||
{
|
||||
description: "Has \"cc-exp\" formatted \"mm/yyyy\"",
|
||||
creditCard: {
|
||||
"cc-exp": "12/2022",
|
||||
},
|
||||
expectedResult: {
|
||||
"cc-exp-month": 12,
|
||||
"cc-exp-year": 2022,
|
||||
},
|
||||
},
|
||||
{
|
||||
description: "Has \"cc-exp\" formatted \"m-yyyy\"",
|
||||
creditCard: {
|
||||
"cc-exp": "3-2022",
|
||||
},
|
||||
expectedResult: {
|
||||
"cc-exp-month": 3,
|
||||
"cc-exp-year": 2022,
|
||||
},
|
||||
},
|
||||
{
|
||||
description: "Has \"cc-exp\" formatted \"m/yyyy\"",
|
||||
creditCard: {
|
||||
"cc-exp": "3/2022",
|
||||
},
|
||||
expectedResult: {
|
||||
"cc-exp-month": 3,
|
||||
"cc-exp-year": 2022,
|
||||
},
|
||||
},
|
||||
{
|
||||
description: "Has \"cc-exp\" formatted \"mm-yy\"",
|
||||
creditCard: {
|
||||
"cc-exp": "12-22",
|
||||
},
|
||||
expectedResult: {
|
||||
"cc-exp-month": 12,
|
||||
"cc-exp-year": 2022,
|
||||
},
|
||||
},
|
||||
{
|
||||
description: "Has \"cc-exp\" formatted \"mm/yy\"",
|
||||
creditCard: {
|
||||
"cc-exp": "12/22",
|
||||
},
|
||||
expectedResult: {
|
||||
"cc-exp-month": 12,
|
||||
"cc-exp-year": 2022,
|
||||
},
|
||||
},
|
||||
{
|
||||
description: "Has \"cc-exp\" formatted \"yy-mm\"",
|
||||
creditCard: {
|
||||
"cc-exp": "22-12",
|
||||
},
|
||||
expectedResult: {
|
||||
"cc-exp-month": 12,
|
||||
"cc-exp-year": 2022,
|
||||
},
|
||||
},
|
||||
{
|
||||
description: "Has \"cc-exp\" formatted \"yy/mm\"",
|
||||
creditCard: {
|
||||
"cc-exp": "22/12",
|
||||
},
|
||||
expectedResult: {
|
||||
"cc-exp-month": 12,
|
||||
"cc-exp-year": 2022,
|
||||
},
|
||||
},
|
||||
{
|
||||
description: "Has \"cc-exp\" formatted \"mmyy\"",
|
||||
creditCard: {
|
||||
"cc-exp": "1222",
|
||||
},
|
||||
expectedResult: {
|
||||
"cc-exp-month": 12,
|
||||
"cc-exp-year": 2022,
|
||||
},
|
||||
},
|
||||
{
|
||||
description: "Has \"cc-exp\" formatted \"yymm\"",
|
||||
creditCard: {
|
||||
"cc-exp": "2212",
|
||||
},
|
||||
expectedResult: {
|
||||
"cc-exp-month": 12,
|
||||
"cc-exp-year": 2022,
|
||||
},
|
||||
},
|
||||
{
|
||||
description: "Has \"cc-exp\" with spaces",
|
||||
creditCard: {
|
||||
"cc-exp": " 2033-11 ",
|
||||
},
|
||||
expectedResult: {
|
||||
"cc-exp-month": 11,
|
||||
"cc-exp-year": 2033,
|
||||
},
|
||||
},
|
||||
{
|
||||
description: "Has invalid \"cc-exp\"",
|
||||
creditCard: {
|
||||
"cc-exp": "99-9999",
|
||||
},
|
||||
expectedResult: {
|
||||
"cc-exp-month": undefined,
|
||||
"cc-exp-year": undefined,
|
||||
},
|
||||
},
|
||||
{
|
||||
description: "Has both \"cc-exp-*\" and \"cc-exp\"",
|
||||
creditCard: {
|
||||
"cc-exp": "2022-12",
|
||||
"cc-exp-month": 3,
|
||||
"cc-exp-year": 2030,
|
||||
},
|
||||
expectedResult: {
|
||||
"cc-exp-month": 3,
|
||||
"cc-exp-year": 2030,
|
||||
},
|
||||
},
|
||||
{
|
||||
description: "Has only \"cc-exp-year\" and \"cc-exp\"",
|
||||
creditCard: {
|
||||
"cc-exp": "2022-12",
|
||||
"cc-exp-year": 2030,
|
||||
},
|
||||
expectedResult: {
|
||||
"cc-exp-month": 12,
|
||||
"cc-exp-year": 2022,
|
||||
},
|
||||
},
|
||||
{
|
||||
description: "Has only \"cc-exp-month\" and \"cc-exp\"",
|
||||
creditCard: {
|
||||
"cc-exp": "2022-12",
|
||||
"cc-exp-month": 3,
|
||||
},
|
||||
expectedResult: {
|
||||
"cc-exp-month": 12,
|
||||
"cc-exp-year": 2022,
|
||||
},
|
||||
},
|
||||
|
||||
// Card Number
|
||||
{
|
||||
description: "Number should be encrypted and masked",
|
||||
creditCard: {
|
||||
|
|
|
@ -323,9 +323,9 @@ def prune_final_dir_for_clang_tidy(final_dir):
|
|||
if __name__ == "__main__":
|
||||
# The directories end up in the debug info, so the easy way of getting
|
||||
# a reproducible build is to run it in a know absolute directory.
|
||||
# We use a directory in /builds/slave because the mozilla infrastructure
|
||||
# cleans it up automatically.
|
||||
base_dir = "/builds/slave/moz-toolchain"
|
||||
# We use a directory that is registered as a volume in the Docker image.
|
||||
base_dir = "/builds/worker/workspace/moz-toolchain"
|
||||
|
||||
if is_windows():
|
||||
# TODO: Because Windows taskcluster builds are run with distinct
|
||||
# user IDs for each job, we can't store things in some globally
|
||||
|
|
|
@ -33,10 +33,12 @@ support-files =
|
|||
[browser_menu_item_02.js]
|
||||
[browser_mouse_resize.js]
|
||||
[browser_navigation.js]
|
||||
skip-if = true # Bug 1413765
|
||||
[browser_network_throttling.js]
|
||||
[browser_page_state.js]
|
||||
[browser_permission_doorhanger.js]
|
||||
tags = geolocation
|
||||
skip-if = true # Bug 1413765
|
||||
[browser_resize_cmd.js]
|
||||
[browser_screenshot_button.js]
|
||||
[browser_tab_close.js]
|
||||
|
|
|
@ -178,10 +178,10 @@ function testBasicOperation() {
|
|||
]
|
||||
},
|
||||
].forEach(subtest => {
|
||||
promise_test(function(t) {
|
||||
promise_test(t => {
|
||||
var animation = addDivAndAnimate(t, { class: 'compositable' },
|
||||
subtest.frames, 100 * MS_PER_SEC);
|
||||
return animation.ready.then(function() {
|
||||
return waitForPaints().then(() => {
|
||||
assert_animation_property_state_equals(
|
||||
animation.effect.getProperties(),
|
||||
subtest.expected);
|
||||
|
@ -253,15 +253,15 @@ function testKeyframesWithGeometricProperties() {
|
|||
}
|
||||
},
|
||||
].forEach(subtest => {
|
||||
promise_test(function(t) {
|
||||
promise_test(t => {
|
||||
var animation = addDivAndAnimate(t, { class: 'compositable' },
|
||||
subtest.frames, 100 * MS_PER_SEC);
|
||||
return animation.ready.then(function() {
|
||||
return waitForPaints().then(() => {
|
||||
// First, a transform animation is running on compositor.
|
||||
assert_animation_property_state_equals(
|
||||
animation.effect.getProperties(),
|
||||
subtest.expected.withoutGeometric);
|
||||
}).then(function() {
|
||||
}).then(() => {
|
||||
// Add a 'width' property.
|
||||
var keyframes = animation.effect.getKeyframes();
|
||||
|
||||
|
@ -270,13 +270,13 @@ function testKeyframesWithGeometricProperties() {
|
|||
|
||||
animation.effect.setKeyframes(keyframes);
|
||||
return waitForFrame();
|
||||
}).then(function() {
|
||||
}).then(() => {
|
||||
// Now the transform animation is not running on compositor because of
|
||||
// the 'width' property.
|
||||
assert_animation_property_state_equals(
|
||||
animation.effect.getProperties(),
|
||||
subtest.expected.withGeometric);
|
||||
}).then(function() {
|
||||
}).then(() => {
|
||||
// Remove the 'width' property.
|
||||
var keyframes = animation.effect.getKeyframes();
|
||||
|
||||
|
@ -285,7 +285,7 @@ function testKeyframesWithGeometricProperties() {
|
|||
|
||||
animation.effect.setKeyframes(keyframes);
|
||||
return waitForFrame();
|
||||
}).then(function() {
|
||||
}).then(() => {
|
||||
// Finally, the transform animation is running on compositor.
|
||||
assert_animation_property_state_equals(
|
||||
animation.effect.getProperties(),
|
||||
|
@ -306,7 +306,7 @@ function testSetOfGeometricProperties() {
|
|||
];
|
||||
|
||||
geometricProperties.forEach(property => {
|
||||
promise_test(function(t) {
|
||||
promise_test(t => {
|
||||
const keyframes = {
|
||||
[propertyToIDL(property)]: [ '100px', '200px' ],
|
||||
transform: [ 'translate(0px)', 'translate(100px)' ]
|
||||
|
@ -314,7 +314,7 @@ function testSetOfGeometricProperties() {
|
|||
var animation = addDivAndAnimate(t, { class: 'compositable' },
|
||||
keyframes, 100 * MS_PER_SEC);
|
||||
|
||||
return animation.ready.then(function() {
|
||||
return waitForPaints().then(() => {
|
||||
assert_animation_property_state_equals(
|
||||
animation.effect.getProperties(),
|
||||
[
|
||||
|
@ -403,22 +403,22 @@ function testStyleChanges() {
|
|||
]
|
||||
},
|
||||
].forEach(subtest => {
|
||||
promise_test(function(t) {
|
||||
promise_test(t => {
|
||||
var animation = addDivAndAnimate(t, { class: 'compositable' },
|
||||
subtest.frames, 100 * MS_PER_SEC);
|
||||
return animation.ready.then(function() {
|
||||
return waitForPaints().then(() => {
|
||||
assert_all_properties_running_on_compositor(
|
||||
animation.effect.getProperties(),
|
||||
subtest.expected);
|
||||
animation.effect.target.style = subtest.style;
|
||||
return waitForFrame();
|
||||
}).then(function() {
|
||||
}).then(() => {
|
||||
assert_animation_property_state_equals(
|
||||
animation.effect.getProperties(),
|
||||
subtest.expected);
|
||||
animation.effect.target.style = '';
|
||||
return waitForFrame();
|
||||
}).then(function() {
|
||||
}).then(() => {
|
||||
assert_all_properties_running_on_compositor(
|
||||
animation.effect.getProperties(),
|
||||
subtest.expected);
|
||||
|
@ -446,26 +446,26 @@ function testIdChanges() {
|
|||
]
|
||||
},
|
||||
].forEach(subtest => {
|
||||
promise_test(function(t) {
|
||||
promise_test(t => {
|
||||
if (subtest.createelement) {
|
||||
addDiv(t, { style: subtest.createelement });
|
||||
}
|
||||
|
||||
var animation = addDivAndAnimate(t, { class: 'compositable' },
|
||||
subtest.frames, 100 * MS_PER_SEC);
|
||||
return animation.ready.then(function() {
|
||||
return waitForPaints().then(() => {
|
||||
assert_all_properties_running_on_compositor(
|
||||
animation.effect.getProperties(),
|
||||
subtest.expected);
|
||||
animation.effect.target.id = subtest.id;
|
||||
return waitForFrame();
|
||||
}).then(function() {
|
||||
}).then(() => {
|
||||
assert_animation_property_state_equals(
|
||||
animation.effect.getProperties(),
|
||||
subtest.expected);
|
||||
animation.effect.target.id = '';
|
||||
return waitForFrame();
|
||||
}).then(function() {
|
||||
}).then(() => {
|
||||
assert_all_properties_running_on_compositor(
|
||||
animation.effect.getProperties(),
|
||||
subtest.expected);
|
||||
|
@ -535,16 +535,16 @@ function testMultipleAnimations() {
|
|||
],
|
||||
},
|
||||
].forEach(subtest => {
|
||||
promise_test(function(t) {
|
||||
promise_test(t => {
|
||||
var div = addDiv(t, { class: 'compositable' });
|
||||
var animations = subtest.animations.map(function(anim) {
|
||||
var animations = subtest.animations.map(anim => {
|
||||
var animation = div.animate(anim.frames, 100 * MS_PER_SEC);
|
||||
|
||||
// Bind expected values to animation object.
|
||||
animation.expected = anim.expected;
|
||||
return animation;
|
||||
});
|
||||
return waitForAllAnimations(animations).then(function() {
|
||||
return waitForPaints().then(() => {
|
||||
animations.forEach(anim => {
|
||||
assert_all_properties_running_on_compositor(
|
||||
anim.effect.getProperties(),
|
||||
|
@ -552,7 +552,7 @@ function testMultipleAnimations() {
|
|||
});
|
||||
div.style = subtest.style;
|
||||
return waitForFrame();
|
||||
}).then(function() {
|
||||
}).then(() => {
|
||||
animations.forEach(anim => {
|
||||
assert_animation_property_state_equals(
|
||||
anim.effect.getProperties(),
|
||||
|
@ -560,7 +560,7 @@ function testMultipleAnimations() {
|
|||
});
|
||||
div.style = '';
|
||||
return waitForFrame();
|
||||
}).then(function() {
|
||||
}).then(() => {
|
||||
animations.forEach(anim => {
|
||||
assert_all_properties_running_on_compositor(
|
||||
anim.effect.getProperties(),
|
||||
|
@ -673,23 +673,23 @@ function testMultipleAnimationsWithGeometricKeyframes() {
|
|||
]
|
||||
},
|
||||
].forEach(subtest => {
|
||||
promise_test(function(t) {
|
||||
promise_test(t => {
|
||||
var div = addDiv(t, { class: 'compositable' });
|
||||
var animations = subtest.animations.map(function(anim) {
|
||||
var animations = subtest.animations.map(anim => {
|
||||
var animation = div.animate(anim.frames, 100 * MS_PER_SEC);
|
||||
|
||||
// Bind expected values to animation object.
|
||||
animation.expected = anim.expected;
|
||||
return animation;
|
||||
});
|
||||
return waitForAllAnimations(animations).then(function() {
|
||||
return waitForPaints().then(() => {
|
||||
// First, all animations are running on compositor.
|
||||
animations.forEach(anim => {
|
||||
assert_animation_property_state_equals(
|
||||
anim.effect.getProperties(),
|
||||
anim.expected.withoutGeometric);
|
||||
});
|
||||
}).then(function() {
|
||||
}).then(() => {
|
||||
// Add a 'width' property to animations[1].
|
||||
var keyframes = animations[1].effect.getKeyframes();
|
||||
|
||||
|
@ -698,7 +698,7 @@ function testMultipleAnimationsWithGeometricKeyframes() {
|
|||
|
||||
animations[1].effect.setKeyframes(keyframes);
|
||||
return waitForFrame();
|
||||
}).then(function() {
|
||||
}).then(() => {
|
||||
// Now the transform animation is not running on compositor because of
|
||||
// the 'width' property.
|
||||
animations.forEach(anim => {
|
||||
|
@ -706,7 +706,7 @@ function testMultipleAnimationsWithGeometricKeyframes() {
|
|||
anim.effect.getProperties(),
|
||||
anim.expected.withGeometric);
|
||||
});
|
||||
}).then(function() {
|
||||
}).then(() => {
|
||||
// Remove the 'width' property from animations[1].
|
||||
var keyframes = animations[1].effect.getKeyframes();
|
||||
|
||||
|
@ -715,7 +715,7 @@ function testMultipleAnimationsWithGeometricKeyframes() {
|
|||
|
||||
animations[1].effect.setKeyframes(keyframes);
|
||||
return waitForFrame();
|
||||
}).then(function() {
|
||||
}).then(() => {
|
||||
// Finally, all animations are running on compositor.
|
||||
animations.forEach(anim => {
|
||||
assert_animation_property_state_equals(
|
||||
|
@ -793,9 +793,9 @@ function testMultipleAnimationsWithGeometricAnimations() {
|
|||
],
|
||||
},
|
||||
].forEach(subtest => {
|
||||
promise_test(function(t) {
|
||||
promise_test(t => {
|
||||
var div = addDiv(t, { class: 'compositable' });
|
||||
var animations = subtest.animations.map(function(anim) {
|
||||
var animations = subtest.animations.map(anim => {
|
||||
var animation = div.animate(anim.frames, 100 * MS_PER_SEC);
|
||||
|
||||
// Bind expected values to animation object.
|
||||
|
@ -805,18 +805,18 @@ function testMultipleAnimationsWithGeometricAnimations() {
|
|||
|
||||
var widthAnimation;
|
||||
|
||||
return waitForAllAnimations(animations).then(function() {
|
||||
return waitForPaints().then(() => {
|
||||
animations.forEach(anim => {
|
||||
assert_all_properties_running_on_compositor(
|
||||
anim.effect.getProperties(),
|
||||
anim.expected);
|
||||
});
|
||||
}).then(function() {
|
||||
}).then(() => {
|
||||
// Append 'width' animation on the same element.
|
||||
widthAnimation = div.animate({ width: ['100px', '200px'] },
|
||||
100 * MS_PER_SEC);
|
||||
return waitForFrame();
|
||||
}).then(function() {
|
||||
}).then(() => {
|
||||
// Now transform animations are not running on compositor because of
|
||||
// the 'width' animation.
|
||||
animations.forEach(anim => {
|
||||
|
@ -827,7 +827,7 @@ function testMultipleAnimationsWithGeometricAnimations() {
|
|||
// Remove the 'width' animation.
|
||||
widthAnimation.cancel();
|
||||
return waitForFrame();
|
||||
}).then(function() {
|
||||
}).then(() => {
|
||||
// Now all animations are running on compositor.
|
||||
animations.forEach(anim => {
|
||||
assert_all_properties_running_on_compositor(
|
||||
|
@ -875,10 +875,10 @@ function testSmallElements() {
|
|||
]
|
||||
},
|
||||
].forEach(subtest => {
|
||||
promise_test(function(t) {
|
||||
promise_test(t => {
|
||||
var div = addDiv(t, subtest.style);
|
||||
var animation = div.animate(subtest.frames, 100 * MS_PER_SEC);
|
||||
return animation.ready.then(function() {
|
||||
return waitForPaints().then(() => {
|
||||
assert_animation_property_state_equals(
|
||||
animation.effect.getProperties(),
|
||||
subtest.expected);
|
||||
|
@ -888,7 +888,7 @@ function testSmallElements() {
|
|||
}
|
||||
|
||||
function testSynchronizedAnimations() {
|
||||
promise_test(function(t) {
|
||||
promise_test(t => {
|
||||
const elemA = addDiv(t, { class: 'compositable' });
|
||||
const elemB = addDiv(t, { class: 'compositable' });
|
||||
|
||||
|
@ -898,7 +898,7 @@ function testSynchronizedAnimations() {
|
|||
const animB = elemB.animate({ marginLeft: [ '0px', '100px' ] },
|
||||
100 * MS_PER_SEC);
|
||||
|
||||
return Promise.all([animA.ready, animB.ready])
|
||||
return waitForPaints()
|
||||
.then(() => {
|
||||
assert_animation_property_state_equals(
|
||||
animA.effect.getProperties(),
|
||||
|
@ -910,7 +910,7 @@ function testSynchronizedAnimations() {
|
|||
}, 'Animations created within the same tick are synchronized'
|
||||
+ ' (compositor animation created first)');
|
||||
|
||||
promise_test(function(t) {
|
||||
promise_test(t => {
|
||||
const elemA = addDiv(t, { class: 'compositable' });
|
||||
const elemB = addDiv(t, { class: 'compositable' });
|
||||
|
||||
|
@ -920,7 +920,7 @@ function testSynchronizedAnimations() {
|
|||
'translate(100px)' ] },
|
||||
100 * MS_PER_SEC);
|
||||
|
||||
return Promise.all([animA.ready, animB.ready])
|
||||
return waitForPaints()
|
||||
.then(() => {
|
||||
assert_animation_property_state_equals(
|
||||
animB.effect.getProperties(),
|
||||
|
@ -932,7 +932,7 @@ function testSynchronizedAnimations() {
|
|||
}, 'Animations created within the same tick are synchronized'
|
||||
+ ' (compositor animation created second)');
|
||||
|
||||
promise_test(function(t) {
|
||||
promise_test(t => {
|
||||
const attrs = { class: 'compositable',
|
||||
style: 'transition: all 100s' };
|
||||
const elemA = addDiv(t, attrs);
|
||||
|
@ -980,7 +980,7 @@ function testSynchronizedAnimations() {
|
|||
});
|
||||
}, 'Transitions created before and after a tick are synchronized');
|
||||
|
||||
promise_test(function(t) {
|
||||
promise_test(t => {
|
||||
const elemA = addDiv(t, { class: 'compositable' });
|
||||
const elemB = addDiv(t, { class: 'compositable' });
|
||||
|
||||
|
@ -991,7 +991,7 @@ function testSynchronizedAnimations() {
|
|||
const animB = elemB.animate({ marginLeft: [ '0px', '100px' ] },
|
||||
100 * MS_PER_SEC);
|
||||
|
||||
return Promise.all([animA.ready, animB.ready])
|
||||
return waitForPaints()
|
||||
.then(() => {
|
||||
assert_animation_property_state_equals(
|
||||
animA.effect.getProperties(),
|
||||
|
@ -1007,7 +1007,7 @@ function testSynchronizedAnimations() {
|
|||
+ ' compositor when transform animations are synchronized with geometric'
|
||||
+ ' animations');
|
||||
|
||||
promise_test(function(t) {
|
||||
promise_test(t => {
|
||||
const elemA = addDiv(t, { class: 'compositable' });
|
||||
const elemB = addDiv(t, { class: 'compositable' });
|
||||
|
||||
|
@ -1015,7 +1015,7 @@ function testSynchronizedAnimations() {
|
|||
100 * MS_PER_SEC);
|
||||
let animB;
|
||||
|
||||
return waitForFrame()
|
||||
return waitForPaints()
|
||||
.then(() => {
|
||||
animB = elemB.animate({ transform: [ 'translate(0px)',
|
||||
'translate(100px)' ] },
|
||||
|
@ -1030,7 +1030,7 @@ function testSynchronizedAnimations() {
|
|||
}, 'Transform animations are NOT synchronized with geometric animations'
|
||||
+ ' started in the previous frame');
|
||||
|
||||
promise_test(function(t) {
|
||||
promise_test(t => {
|
||||
const elemA = addDiv(t, { class: 'compositable' });
|
||||
const elemB = addDiv(t, { class: 'compositable' });
|
||||
|
||||
|
@ -1039,7 +1039,7 @@ function testSynchronizedAnimations() {
|
|||
100 * MS_PER_SEC);
|
||||
let animB;
|
||||
|
||||
return waitForFrame()
|
||||
return waitForPaints()
|
||||
.then(() => {
|
||||
animB = elemB.animate({ marginLeft: [ '0px', '100px' ] },
|
||||
100 * MS_PER_SEC);
|
||||
|
@ -1053,7 +1053,7 @@ function testSynchronizedAnimations() {
|
|||
}, 'Transform animations are NOT synchronized with geometric animations'
|
||||
+ ' started in the next frame');
|
||||
|
||||
promise_test(function(t) {
|
||||
promise_test(t => {
|
||||
const elemA = addDiv(t, { class: 'compositable' });
|
||||
const elemB = addDiv(t, { class: 'compositable' });
|
||||
|
||||
|
@ -1064,7 +1064,7 @@ function testSynchronizedAnimations() {
|
|||
100 * MS_PER_SEC);
|
||||
animB.pause();
|
||||
|
||||
return Promise.all([animA.ready, animB.ready])
|
||||
return waitForPaints()
|
||||
.then(() => {
|
||||
assert_animation_property_state_equals(
|
||||
animA.effect.getProperties(),
|
||||
|
@ -1072,7 +1072,7 @@ function testSynchronizedAnimations() {
|
|||
});
|
||||
}, 'Paused animations are not synchronized');
|
||||
|
||||
promise_test(function(t) {
|
||||
promise_test(t => {
|
||||
const elemA = addDiv(t, { class: 'compositable' });
|
||||
const elemB = addDiv(t, { class: 'compositable' });
|
||||
|
||||
|
@ -1085,7 +1085,7 @@ function testSynchronizedAnimations() {
|
|||
// Seek one of the animations so that their start times will differ
|
||||
animA.currentTime = 5000;
|
||||
|
||||
return Promise.all([animA.ready, animB.ready])
|
||||
return waitForPaints()
|
||||
.then(() => {
|
||||
assert_not_equals(animA.startTime, animB.startTime,
|
||||
'Animations should have different start times');
|
||||
|
@ -1099,7 +1099,7 @@ function testSynchronizedAnimations() {
|
|||
}, 'Animations are synchronized based on when they are started'
|
||||
+ ' and NOT their start time');
|
||||
|
||||
promise_test(function(t) {
|
||||
promise_test(t => {
|
||||
const elemA = addDiv(t, { class: 'compositable' });
|
||||
const elemB = addDiv(t, { class: 'compositable' });
|
||||
|
||||
|
@ -1109,7 +1109,7 @@ function testSynchronizedAnimations() {
|
|||
const animB = elemB.animate({ marginLeft: [ '0px', '100px' ] },
|
||||
100 * MS_PER_SEC);
|
||||
|
||||
return Promise.all([animA.ready, animB.ready])
|
||||
return waitForPaints()
|
||||
.then(() => {
|
||||
assert_animation_property_state_equals(
|
||||
animA.effect.getProperties(),
|
||||
|
@ -1127,7 +1127,7 @@ function testSynchronizedAnimations() {
|
|||
});
|
||||
}, 'An initially synchronized animation may be unsynchronized if restarted');
|
||||
|
||||
promise_test(function(t) {
|
||||
promise_test(t => {
|
||||
const elemA = addDiv(t, { class: 'compositable' });
|
||||
const elemB = addDiv(t, { class: 'compositable' });
|
||||
|
||||
|
@ -1140,7 +1140,7 @@ function testSynchronizedAnimations() {
|
|||
// Clear target effect
|
||||
animB.effect.target = null;
|
||||
|
||||
return Promise.all([animA.ready, animB.ready])
|
||||
return waitForPaints()
|
||||
.then(() => {
|
||||
assert_animation_property_state_equals(
|
||||
animA.effect.getProperties(),
|
||||
|
@ -1167,19 +1167,19 @@ function start() {
|
|||
testSmallElements();
|
||||
testSynchronizedAnimations();
|
||||
|
||||
promise_test(function(t) {
|
||||
promise_test(t => {
|
||||
var animation = addDivAndAnimate(t,
|
||||
{ class: 'compositable' },
|
||||
{ transform: [ 'translate(0px)',
|
||||
'translate(100px)'] },
|
||||
100 * MS_PER_SEC);
|
||||
return animation.ready.then(function() {
|
||||
return waitForPaints().then(() => {
|
||||
assert_animation_property_state_equals(
|
||||
animation.effect.getProperties(),
|
||||
[ { property: 'transform', runningOnCompositor: true } ]);
|
||||
animation.effect.target.style = 'width: 5200px; height: 5200px';
|
||||
return waitForFrame();
|
||||
}).then(function() {
|
||||
}).then(() => {
|
||||
// viewport depends on test environment.
|
||||
var expectedWarning = new RegExp(
|
||||
"Animation cannot be run on the compositor because the area of the frame " +
|
||||
|
@ -1194,7 +1194,7 @@ function start() {
|
|||
} ]);
|
||||
animation.effect.target.style = 'width: 100px; height: 100px';
|
||||
return waitForFrame();
|
||||
}).then(function() {
|
||||
}).then(() => {
|
||||
// FIXME: Bug 1253164: the animation should get back on compositor.
|
||||
assert_animation_property_state_equals(
|
||||
animation.effect.getProperties(),
|
||||
|
@ -1202,19 +1202,19 @@ function start() {
|
|||
});
|
||||
}, 'transform on too big element - area');
|
||||
|
||||
promise_test(function(t) {
|
||||
promise_test(t => {
|
||||
var animation = addDivAndAnimate(t,
|
||||
{ class: 'compositable' },
|
||||
{ transform: [ 'translate(0px)',
|
||||
'translate(100px)'] },
|
||||
100 * MS_PER_SEC);
|
||||
return animation.ready.then(function() {
|
||||
return waitForPaints().then(() => {
|
||||
assert_animation_property_state_equals(
|
||||
animation.effect.getProperties(),
|
||||
[ { property: 'transform', runningOnCompositor: true } ]);
|
||||
animation.effect.target.style = 'width: 5200px; height: 1px';
|
||||
return waitForFrame();
|
||||
}).then(function() {
|
||||
}).then(() => {
|
||||
// viewport depends on test environment.
|
||||
var expectedWarning = new RegExp(
|
||||
"Animation cannot be run on the compositor because the frame size " +
|
||||
|
@ -1230,7 +1230,7 @@ function start() {
|
|||
} ]);
|
||||
animation.effect.target.style = 'width: 100px; height: 100px';
|
||||
return waitForFrame();
|
||||
}).then(function() {
|
||||
}).then(() => {
|
||||
// FIXME: Bug 1253164: the animation should get back on compositor.
|
||||
assert_animation_property_state_equals(
|
||||
animation.effect.getProperties(),
|
||||
|
@ -1238,7 +1238,7 @@ function start() {
|
|||
});
|
||||
}, 'transform on too big element - dimensions');
|
||||
|
||||
promise_test(function(t) {
|
||||
promise_test(t => {
|
||||
var svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
|
||||
svg.setAttribute('width', '100');
|
||||
svg.setAttribute('height', '100');
|
||||
|
@ -1248,19 +1248,19 @@ function start() {
|
|||
rect.setAttribute('fill', 'red');
|
||||
svg.appendChild(rect);
|
||||
document.body.appendChild(svg);
|
||||
t.add_cleanup(function() {
|
||||
t.add_cleanup(() => {
|
||||
svg.remove();
|
||||
});
|
||||
|
||||
var animation = svg.animate(
|
||||
{ transform: ['translate(0px)', 'translate(100px)'] }, 100 * MS_PER_SEC);
|
||||
return animation.ready.then(function() {
|
||||
return waitForPaints().then(() => {
|
||||
assert_animation_property_state_equals(
|
||||
animation.effect.getProperties(),
|
||||
[ { property: 'transform', runningOnCompositor: true } ]);
|
||||
svg.setAttribute('transform', 'translate(10, 20)');
|
||||
return waitForFrame();
|
||||
}).then(function() {
|
||||
}).then(() => {
|
||||
assert_animation_property_state_equals(
|
||||
animation.effect.getProperties(),
|
||||
[ {
|
||||
|
@ -1270,19 +1270,19 @@ function start() {
|
|||
} ]);
|
||||
svg.removeAttribute('transform');
|
||||
return waitForFrame();
|
||||
}).then(function() {
|
||||
}).then(() => {
|
||||
assert_animation_property_state_equals(
|
||||
animation.effect.getProperties(),
|
||||
[ { property: 'transform', runningOnCompositor: true } ]);
|
||||
});
|
||||
}, 'transform of nsIFrame with SVG transform');
|
||||
|
||||
promise_test(function(t) {
|
||||
promise_test(t => {
|
||||
var div = addDiv(t, { class: 'compositable',
|
||||
style: 'animation: fade 100s' });
|
||||
var cssAnimation = div.getAnimations()[0];
|
||||
var scriptAnimation = div.animate({ opacity: [ 1, 0 ] }, 100 * MS_PER_SEC);
|
||||
return scriptAnimation.ready.then(function() {
|
||||
return waitForPaints().then(() => {
|
||||
assert_animation_property_state_equals(
|
||||
cssAnimation.effect.getProperties(),
|
||||
[ { property: 'opacity', runningOnCompositor: true } ]);
|
||||
|
|
|
@ -62,13 +62,13 @@ function assert_animation_is_not_running_on_compositor(animation, desc) {
|
|||
desc + ' at ' + animation.currentTime + 'ms');
|
||||
}
|
||||
|
||||
promise_test(function(t) {
|
||||
promise_test(t => {
|
||||
// FIXME: When we implement Element.animate, use that here instead of CSS
|
||||
// so that we remove any dependency on the CSS mapping.
|
||||
var div = addDiv(t, { style: 'animation: anim 100s' });
|
||||
var animation = div.getAnimations()[0];
|
||||
|
||||
return animation.ready.then(function() {
|
||||
return waitForPaints().then(() => {
|
||||
assert_animation_is_running_on_compositor(animation,
|
||||
'Animation reports that it is running on the compositor'
|
||||
+ ' during playback');
|
||||
|
@ -76,29 +76,29 @@ promise_test(function(t) {
|
|||
div.style.animationPlayState = 'paused';
|
||||
|
||||
return animation.ready;
|
||||
}).then(function() {
|
||||
}).then(() => {
|
||||
assert_animation_is_not_running_on_compositor(animation,
|
||||
'Animation reports that it is NOT running on the compositor'
|
||||
+ ' when paused');
|
||||
});
|
||||
}, '');
|
||||
|
||||
promise_test(function(t) {
|
||||
promise_test(t => {
|
||||
var div = addDiv(t, { style: 'animation: background 100s' });
|
||||
var animation = div.getAnimations()[0];
|
||||
|
||||
return animation.ready.then(function() {
|
||||
return waitForPaints().then(() => {
|
||||
assert_animation_is_not_running_on_compositor(animation,
|
||||
'Animation reports that it is NOT running on the compositor'
|
||||
+ ' for animation of "background"');
|
||||
});
|
||||
}, 'isRunningOnCompositor is false for animation of "background"');
|
||||
|
||||
promise_test(function(t) {
|
||||
promise_test(t => {
|
||||
var div = addDiv(t, { style: 'animation: background_and_translate 100s' });
|
||||
var animation = div.getAnimations()[0];
|
||||
|
||||
return animation.ready.then(function() {
|
||||
return waitForPaints().then(() => {
|
||||
assert_animation_is_running_on_compositor(animation,
|
||||
'Animation reports that it is running on the compositor'
|
||||
+ ' when the animation has two properties, where one can run'
|
||||
|
@ -107,50 +107,50 @@ promise_test(function(t) {
|
|||
}, 'isRunningOnCompositor is true if the animation has at least one ' +
|
||||
'property can run on compositor');
|
||||
|
||||
promise_test(function(t) {
|
||||
promise_test(t => {
|
||||
var div = addDiv(t, { style: 'animation: anim 100s' });
|
||||
var animation = div.getAnimations()[0];
|
||||
|
||||
return animation.ready.then(function() {
|
||||
return waitForPaints().then(() => {
|
||||
animation.pause();
|
||||
return animation.ready;
|
||||
}).then(function() {
|
||||
}).then(() => {
|
||||
assert_animation_is_not_running_on_compositor(animation,
|
||||
'Animation reports that it is NOT running on the compositor'
|
||||
+ ' when animation.pause() is called');
|
||||
});
|
||||
}, 'isRunningOnCompositor is false when the animation.pause() is called');
|
||||
|
||||
promise_test(function(t) {
|
||||
promise_test(t => {
|
||||
var div = addDiv(t, { style: 'animation: anim 100s' });
|
||||
var animation = div.getAnimations()[0];
|
||||
|
||||
return animation.ready.then(function() {
|
||||
return waitForPaints().then(() => {
|
||||
animation.finish();
|
||||
assert_animation_is_not_running_on_compositor(animation,
|
||||
'Animation reports that it is NOT running on the compositor'
|
||||
+ ' immediately after animation.finish() is called');
|
||||
// Check that we don't set the flag back again on the next tick.
|
||||
return waitForFrame();
|
||||
}).then(function() {
|
||||
}).then(() => {
|
||||
assert_animation_is_not_running_on_compositor(animation,
|
||||
'Animation reports that it is NOT running on the compositor'
|
||||
+ ' on the next tick after animation.finish() is called');
|
||||
});
|
||||
}, 'isRunningOnCompositor is false when the animation.finish() is called');
|
||||
|
||||
promise_test(function(t) {
|
||||
promise_test(t => {
|
||||
var div = addDiv(t, { style: 'animation: anim 100s' });
|
||||
var animation = div.getAnimations()[0];
|
||||
|
||||
return animation.ready.then(function() {
|
||||
return waitForPaints().then(() => {
|
||||
animation.currentTime = 100 * MS_PER_SEC;
|
||||
assert_animation_is_not_running_on_compositor(animation,
|
||||
'Animation reports that it is NOT running on the compositor'
|
||||
+ ' immediately after manually seeking the animation to the end');
|
||||
// Check that we don't set the flag back again on the next tick.
|
||||
return waitForFrame();
|
||||
}).then(function() {
|
||||
}).then(() => {
|
||||
assert_animation_is_not_running_on_compositor(animation,
|
||||
'Animation reports that it is NOT running on the compositor'
|
||||
+ ' on the next tick after manually seeking the animation to the end');
|
||||
|
@ -158,18 +158,18 @@ promise_test(function(t) {
|
|||
}, 'isRunningOnCompositor is false when manually seeking the animation to ' +
|
||||
'the end');
|
||||
|
||||
promise_test(function(t) {
|
||||
promise_test(t => {
|
||||
var div = addDiv(t, { style: 'animation: anim 100s' });
|
||||
var animation = div.getAnimations()[0];
|
||||
|
||||
return animation.ready.then(function() {
|
||||
return waitForPaints().then(() => {
|
||||
animation.cancel();
|
||||
assert_animation_is_not_running_on_compositor(animation,
|
||||
'Animation reports that it is NOT running on the compositor'
|
||||
+ ' immediately after animation.cancel() is called');
|
||||
// Check that we don't set the flag back again on the next tick.
|
||||
return waitForFrame();
|
||||
}).then(function() {
|
||||
}).then(() => {
|
||||
assert_animation_is_not_running_on_compositor(animation,
|
||||
'Animation reports that it is NOT running on the compositor'
|
||||
+ ' on the next tick after animation.cancel() is called');
|
||||
|
@ -178,14 +178,14 @@ promise_test(function(t) {
|
|||
|
||||
// This is to test that we don't simply clobber the flag when ticking
|
||||
// animations and then set it again during painting.
|
||||
promise_test(function(t) {
|
||||
promise_test(t => {
|
||||
var div = addDiv(t, { style: 'animation: anim 100s' });
|
||||
var animation = div.getAnimations()[0];
|
||||
|
||||
return animation.ready.then(function() {
|
||||
return new Promise(function(resolve) {
|
||||
window.requestAnimationFrame(function() {
|
||||
t.step(function() {
|
||||
return waitForPaints().then(() => {
|
||||
return new Promise(resolve => {
|
||||
window.requestAnimationFrame(() => {
|
||||
t.step(() => {
|
||||
assert_animation_is_running_on_compositor(animation,
|
||||
'Animation reports that it is running on the compositor'
|
||||
+ ' in requestAnimationFrame callback');
|
||||
|
@ -197,23 +197,23 @@ promise_test(function(t) {
|
|||
});
|
||||
}, 'isRunningOnCompositor is true in requestAnimationFrame callback');
|
||||
|
||||
promise_test(function(t) {
|
||||
promise_test(t => {
|
||||
var div = addDiv(t, { style: 'animation: anim 100s' });
|
||||
var animation = div.getAnimations()[0];
|
||||
|
||||
return animation.ready.then(function() {
|
||||
return new Promise(function(resolve) {
|
||||
var observer = new MutationObserver(function(records) {
|
||||
return waitForPaints().then(() => {
|
||||
return new Promise(resolve => {
|
||||
var observer = new MutationObserver(records => {
|
||||
var changedAnimation;
|
||||
|
||||
records.forEach(function(record) {
|
||||
records.forEach(record => {
|
||||
changedAnimation =
|
||||
record.changedAnimations.find(function(changedAnim) {
|
||||
record.changedAnimations.find(changedAnim => {
|
||||
return changedAnim == animation;
|
||||
});
|
||||
});
|
||||
|
||||
t.step(function() {
|
||||
t.step(() => {
|
||||
assert_true(!!changedAnimation, 'The animation should be recorded '
|
||||
+ 'as one of the changedAnimations');
|
||||
|
||||
|
@ -225,7 +225,7 @@ promise_test(function(t) {
|
|||
resolve();
|
||||
});
|
||||
observer.observe(div, { animations: true, subtree: false });
|
||||
t.add_cleanup(function() {
|
||||
t.add_cleanup(() => {
|
||||
observer.disconnect();
|
||||
});
|
||||
div.style.animationDuration = "200s";
|
||||
|
@ -235,18 +235,18 @@ promise_test(function(t) {
|
|||
|
||||
// This is to test that we don't temporarily clear the flag when forcing
|
||||
// an unthrottled sample.
|
||||
promise_test(function(t) {
|
||||
promise_test(t => {
|
||||
// Needs scrollbars to cause overflow.
|
||||
return SpecialPowers.pushPrefEnv({ set: [["ui.showHideScrollbars", 1]] })
|
||||
.then(function() {
|
||||
.then(() => {
|
||||
var div = addDiv(t, { style: 'animation: rotate 100s' });
|
||||
var animation = div.getAnimations()[0];
|
||||
|
||||
return animation.ready.then(function() {
|
||||
return new Promise(function(resolve) {
|
||||
return waitForPaints().then(() => {
|
||||
return new Promise(resolve => {
|
||||
var timeAtStart = window.performance.now();
|
||||
function handleFrame() {
|
||||
t.step(function() {
|
||||
t.step(() => {
|
||||
assert_animation_is_running_on_compositor(animation,
|
||||
'Animation reports that it is running on the compositor'
|
||||
+ ' in requestAnimationFrame callback');
|
||||
|
@ -268,7 +268,7 @@ promise_test(function(t) {
|
|||
}, 'isRunningOnCompositor remains true in requestAnimationFrameCallback for ' +
|
||||
'overflow animation');
|
||||
|
||||
promise_test(function(t) {
|
||||
promise_test(t => {
|
||||
var div = addDiv(t, { style: 'transition: opacity 100s; opacity: 1' });
|
||||
|
||||
getComputedStyle(div).opacity;
|
||||
|
@ -276,20 +276,20 @@ promise_test(function(t) {
|
|||
div.style.opacity = 0;
|
||||
var animation = div.getAnimations()[0];
|
||||
|
||||
return animation.ready.then(function() {
|
||||
return waitForPaints().then(() => {
|
||||
assert_animation_is_running_on_compositor(animation,
|
||||
'Transition reports that it is running on the compositor'
|
||||
+ ' during playback for opacity transition');
|
||||
});
|
||||
}, 'isRunningOnCompositor for transitions');
|
||||
|
||||
promise_test(function(t) {
|
||||
promise_test(t => {
|
||||
var div = addDiv(t, { style: 'animation: rotate-and-opacity 100s; ' +
|
||||
'backface-visibility: hidden; ' +
|
||||
'transform: none !important;' });
|
||||
var animation = div.getAnimations()[0];
|
||||
|
||||
return animation.ready.then(function() {
|
||||
return waitForPaints().then(() => {
|
||||
assert_animation_is_running_on_compositor(animation,
|
||||
'If an animation has a property that can run on the compositor and a '
|
||||
+ 'property that cannot (due to Gecko limitations) but where the latter'
|
||||
|
@ -299,12 +299,12 @@ promise_test(function(t) {
|
|||
}, 'isRunningOnCompositor is true when a property that would otherwise block ' +
|
||||
'running on the compositor is overridden in the CSS cascade');
|
||||
|
||||
promise_test(function(t) {
|
||||
promise_test(t => {
|
||||
var animation = addDivAndAnimate(t,
|
||||
{},
|
||||
{ opacity: [ 0, 1 ] }, 200 * MS_PER_SEC);
|
||||
|
||||
return animation.ready.then(function() {
|
||||
return waitForPaints().then(() => {
|
||||
assert_animation_is_running_on_compositor(animation,
|
||||
'Animation reports that it is running on the compositor');
|
||||
|
||||
|
@ -318,12 +318,12 @@ promise_test(function(t) {
|
|||
}, 'animation is immediately removed from compositor' +
|
||||
'when timing.duration is made shorter than the current time');
|
||||
|
||||
promise_test(function(t) {
|
||||
promise_test(t => {
|
||||
var animation = addDivAndAnimate(t,
|
||||
{},
|
||||
{ opacity: [ 0, 1 ] }, 100 * MS_PER_SEC);
|
||||
|
||||
return animation.ready.then(function() {
|
||||
return waitForPaints().then(() => {
|
||||
assert_animation_is_running_on_compositor(animation,
|
||||
'Animation reports that it is running on the compositor');
|
||||
|
||||
|
@ -335,7 +335,7 @@ promise_test(function(t) {
|
|||
|
||||
animation.effect.timing.duration = 1000 * MS_PER_SEC;
|
||||
return waitForFrame();
|
||||
}).then(function() {
|
||||
}).then(() => {
|
||||
assert_animation_is_running_on_compositor(animation,
|
||||
'Animation reports that it is running on the compositor'
|
||||
+ ' when restarted');
|
||||
|
@ -343,12 +343,12 @@ promise_test(function(t) {
|
|||
}, 'animation is added to compositor' +
|
||||
' when timing.duration is made longer than the current time');
|
||||
|
||||
promise_test(function(t) {
|
||||
promise_test(t => {
|
||||
var animation = addDivAndAnimate(t,
|
||||
{},
|
||||
{ opacity: [ 0, 1 ] }, 100 * MS_PER_SEC);
|
||||
|
||||
return animation.ready.then(function() {
|
||||
return waitForPaints().then(() => {
|
||||
assert_animation_is_running_on_compositor(animation,
|
||||
'Animation reports that it is running on the compositor');
|
||||
|
||||
|
@ -360,7 +360,7 @@ promise_test(function(t) {
|
|||
|
||||
animation.currentTime = 110 * MS_PER_SEC;
|
||||
return waitForFrame();
|
||||
}).then(function() {
|
||||
}).then(() => {
|
||||
assert_animation_is_not_running_on_compositor(animation,
|
||||
'Animation reports that it is NOT running on the compositor'
|
||||
+ ' when currentTime is during endDelay');
|
||||
|
@ -368,18 +368,18 @@ promise_test(function(t) {
|
|||
}, 'animation is removed from compositor' +
|
||||
' when current time is made longer than the duration even during endDelay');
|
||||
|
||||
promise_test(function(t) {
|
||||
promise_test(t => {
|
||||
var animation = addDivAndAnimate(t,
|
||||
{},
|
||||
{ opacity: [ 0, 1 ] }, 100 * MS_PER_SEC);
|
||||
|
||||
return animation.ready.then(function() {
|
||||
return waitForPaints().then(() => {
|
||||
assert_animation_is_running_on_compositor(animation,
|
||||
'Animation reports that it is running on the compositor');
|
||||
|
||||
animation.effect.timing.endDelay = -200 * MS_PER_SEC;
|
||||
return waitForFrame();
|
||||
}).then(function() {
|
||||
}).then(() => {
|
||||
assert_animation_is_not_running_on_compositor(animation,
|
||||
'Animation reports that it is NOT running on the compositor'
|
||||
+ ' when endTime is negative value');
|
||||
|
@ -387,24 +387,24 @@ promise_test(function(t) {
|
|||
}, 'animation is removed from compositor' +
|
||||
' when endTime is negative value');
|
||||
|
||||
promise_test(function(t) {
|
||||
promise_test(t => {
|
||||
var animation = addDivAndAnimate(t,
|
||||
{},
|
||||
{ opacity: [ 0, 1 ] }, 200 * MS_PER_SEC);
|
||||
|
||||
return animation.ready.then(function() {
|
||||
return waitForPaints().then(() => {
|
||||
assert_animation_is_running_on_compositor(animation,
|
||||
'Animation reports that it is running on the compositor');
|
||||
|
||||
animation.effect.timing.endDelay = -100 * MS_PER_SEC;
|
||||
return waitForFrame();
|
||||
}).then(function() {
|
||||
}).then(() => {
|
||||
assert_animation_is_running_on_compositor(animation,
|
||||
'Animation reports that it is running on the compositor'
|
||||
+ ' when endTime is positive and endDelay is negative');
|
||||
animation.currentTime = 110 * MS_PER_SEC;
|
||||
return waitForFrame();
|
||||
}).then(function() {
|
||||
}).then(() => {
|
||||
assert_animation_is_not_running_on_compositor(animation,
|
||||
'Animation reports that it is NOT running on the compositor'
|
||||
+ ' when currentTime is after endTime');
|
||||
|
@ -412,7 +412,7 @@ promise_test(function(t) {
|
|||
}, 'animation is NOT running on compositor' +
|
||||
' when endTime is positive and endDelay is negative');
|
||||
|
||||
promise_test(function(t) {
|
||||
promise_test(t => {
|
||||
var effect = new KeyframeEffect(null,
|
||||
{ opacity: [ 0, 1 ] },
|
||||
100 * MS_PER_SEC);
|
||||
|
@ -421,25 +421,25 @@ promise_test(function(t) {
|
|||
|
||||
var div = addDiv(t);
|
||||
|
||||
return animation.ready.then(function() {
|
||||
return waitForPaints().then(() => {
|
||||
assert_animation_is_not_running_on_compositor(animation,
|
||||
'Animation with null target reports that it is not running ' +
|
||||
'on the compositor');
|
||||
|
||||
animation.effect.target = div;
|
||||
return waitForFrame();
|
||||
}).then(function() {
|
||||
}).then(() => {
|
||||
assert_animation_is_running_on_compositor(animation,
|
||||
'Animation reports that it is running on the compositor ' +
|
||||
'after setting a valid target');
|
||||
});
|
||||
}, 'animation is added to the compositor when setting a valid target');
|
||||
|
||||
promise_test(function(t) {
|
||||
promise_test(t => {
|
||||
var div = addDiv(t);
|
||||
var animation = div.animate({ opacity: [ 0, 1 ] }, 100 * MS_PER_SEC);
|
||||
|
||||
return animation.ready.then(function() {
|
||||
return waitForPaints().then(() => {
|
||||
assert_animation_is_running_on_compositor(animation,
|
||||
'Animation reports that it is running on the compositor');
|
||||
|
||||
|
@ -450,21 +450,21 @@ promise_test(function(t) {
|
|||
});
|
||||
}, 'animation is removed from the compositor when setting null target');
|
||||
|
||||
promise_test(function(t) {
|
||||
promise_test(t => {
|
||||
var div = addDiv(t);
|
||||
var animation = div.animate({ opacity: [ 0, 1 ] },
|
||||
{ duration: 100 * MS_PER_SEC,
|
||||
delay: 100 * MS_PER_SEC,
|
||||
fill: 'backwards' });
|
||||
|
||||
return animation.ready.then(function() {
|
||||
return waitForPaints().then(() => {
|
||||
assert_animation_is_running_on_compositor(animation,
|
||||
'Animation with fill:backwards in delay phase reports ' +
|
||||
'that it is running on the compositor');
|
||||
|
||||
animation.currentTime = 100 * MS_PER_SEC;
|
||||
return waitForFrame();
|
||||
}).then(function() {
|
||||
}).then(() => {
|
||||
assert_animation_is_running_on_compositor(animation,
|
||||
'Animation with fill:backwards in delay phase reports ' +
|
||||
'that it is running on the compositor after delay phase');
|
||||
|
@ -472,7 +472,7 @@ promise_test(function(t) {
|
|||
}, 'animation with fill:backwards in delay phase is running on the ' +
|
||||
' main-thread while it is in delay phase');
|
||||
|
||||
promise_test(function(t) {
|
||||
promise_test(t => {
|
||||
var div = addDiv(t);
|
||||
var animation = div.animate([{ opacity: 1, offset: 0 },
|
||||
{ opacity: 1, offset: 0.99 },
|
||||
|
@ -480,14 +480,14 @@ promise_test(function(t) {
|
|||
|
||||
var another = addDiv(t);
|
||||
|
||||
return animation.ready.then(function() {
|
||||
return waitForPaints().then(() => {
|
||||
assert_animation_is_running_on_compositor(animation,
|
||||
'Opacity animation on a 100% opacity keyframe reports ' +
|
||||
'that it is running on the compositor from the begining');
|
||||
|
||||
animation.effect.target = another;
|
||||
return waitForFrame();
|
||||
}).then(function() {
|
||||
}).then(() => {
|
||||
assert_animation_is_running_on_compositor(animation,
|
||||
'Opacity animation on a 100% opacity keyframe keeps ' +
|
||||
'running on the compositor after changing the target ' +
|
||||
|
@ -496,11 +496,11 @@ promise_test(function(t) {
|
|||
}, '100% opacity animations with keeps running on the ' +
|
||||
'compositor after changing the target element');
|
||||
|
||||
promise_test(function(t) {
|
||||
promise_test(t => {
|
||||
var div = addDiv(t);
|
||||
var animation = div.animate({ color: ['red', 'black'] }, 100 * MS_PER_SEC);
|
||||
|
||||
return animation.ready.then(function() {
|
||||
return waitForPaints().then(() => {
|
||||
assert_animation_is_not_running_on_compositor(animation,
|
||||
'Color animation reports that it is not running on the ' +
|
||||
'compositor');
|
||||
|
@ -509,7 +509,7 @@ promise_test(function(t) {
|
|||
{ opacity: 1, offset: 0.99 },
|
||||
{ opacity: 0, offset: 1 }]);
|
||||
return waitForFrame();
|
||||
}).then(function() {
|
||||
}).then(() => {
|
||||
assert_animation_is_running_on_compositor(animation,
|
||||
'100% opacity animation set by using setKeyframes reports ' +
|
||||
'that it is running on the compositor');
|
||||
|
@ -517,7 +517,7 @@ promise_test(function(t) {
|
|||
}, '100% opacity animation set up by converting an existing animation with ' +
|
||||
'cannot be run on the compositor, is running on the compositor');
|
||||
|
||||
promise_test(function(t) {
|
||||
promise_test(t => {
|
||||
var div = addDiv(t);
|
||||
var animation = div.animate({ color: ['red', 'black'] }, 100 * MS_PER_SEC);
|
||||
var effect = new KeyframeEffect(div,
|
||||
|
@ -526,14 +526,14 @@ promise_test(function(t) {
|
|||
{ opacity: 0, offset: 1 }],
|
||||
100 * MS_PER_SEC);
|
||||
|
||||
return animation.ready.then(function() {
|
||||
return waitForPaints().then(() => {
|
||||
assert_animation_is_not_running_on_compositor(animation,
|
||||
'Color animation reports that it is not running on the ' +
|
||||
'compositor');
|
||||
|
||||
animation.effect = effect;
|
||||
return waitForFrame();
|
||||
}).then(function() {
|
||||
}).then(() => {
|
||||
assert_animation_is_running_on_compositor(animation,
|
||||
'100% opacity animation set up by changing effects reports ' +
|
||||
'that it is running on the compositor');
|
||||
|
@ -542,19 +542,19 @@ promise_test(function(t) {
|
|||
'animation which cannot be run on the compositor, is running on the ' +
|
||||
'compositor');
|
||||
|
||||
promise_test(function(t) {
|
||||
promise_test(t => {
|
||||
var div = addDiv(t, { style: "opacity: 1 ! important" });
|
||||
|
||||
var animation = div.animate({ opacity: [0, 1] }, 100 * MS_PER_SEC);
|
||||
|
||||
return animation.ready.then(function() {
|
||||
return waitForPaints().then(() => {
|
||||
assert_animation_is_not_running_on_compositor(animation,
|
||||
'Opacity animation on an element which has 100% opacity style with ' +
|
||||
'!important flag reports that it is not running on the compositor');
|
||||
// Clear important flag from the opacity style on the target element.
|
||||
div.style.setProperty("opacity", "1", "");
|
||||
return waitForFrame();
|
||||
}).then(function() {
|
||||
}).then(() => {
|
||||
assert_animation_is_running_on_compositor(animation,
|
||||
'Opacity animation reports that it is running on the compositor after '
|
||||
+ 'clearing the !important flag');
|
||||
|
@ -562,12 +562,12 @@ promise_test(function(t) {
|
|||
}, 'Clearing *important* opacity style on the target element sends the ' +
|
||||
'animation to the compositor');
|
||||
|
||||
promise_test(function(t) {
|
||||
promise_test(t => {
|
||||
var div = addDiv(t);
|
||||
var lowerAnimation = div.animate({ opacity: [1, 0] }, 100 * MS_PER_SEC);
|
||||
var higherAnimation = div.animate({ opacity: [0, 1] }, 100 * MS_PER_SEC);
|
||||
|
||||
return Promise.all([lowerAnimation.ready, higherAnimation.ready]).then(function() {
|
||||
return waitForPaints().then(() => {
|
||||
assert_animation_is_running_on_compositor(higherAnimation,
|
||||
'A higher-priority opacity animation on an element ' +
|
||||
'reports that it is running on the compositor');
|
||||
|
@ -577,7 +577,7 @@ promise_test(function(t) {
|
|||
});
|
||||
}, 'Opacity animations on the same element run on the compositor');
|
||||
|
||||
promise_test(function(t) {
|
||||
promise_test(t => {
|
||||
var div = addDiv(t, { style: 'transition: opacity 100s; opacity: 1' });
|
||||
|
||||
getComputedStyle(div).opacity;
|
||||
|
@ -588,7 +588,7 @@ promise_test(function(t) {
|
|||
var transition = div.getAnimations()[0];
|
||||
var animation = div.animate({ opacity: [0, 1] }, 100 * MS_PER_SEC);
|
||||
|
||||
return Promise.all([transition.ready, animation.ready]).then(function() {
|
||||
return waitForPaints().then(() => {
|
||||
assert_animation_is_running_on_compositor(animation,
|
||||
'An opacity animation on an element reports that' +
|
||||
'that it is running on the compositor');
|
||||
|
@ -599,26 +599,26 @@ promise_test(function(t) {
|
|||
}, 'Both of transition and script animation on the same element run on the ' +
|
||||
'compositor');
|
||||
|
||||
promise_test(function(t) {
|
||||
promise_test(t => {
|
||||
var div = addDiv(t);
|
||||
var importantOpacityElement = addDiv(t, { style: "opacity: 1 ! important" });
|
||||
|
||||
var animation = div.animate({ opacity: [1, 0] }, 100 * MS_PER_SEC);
|
||||
|
||||
return animation.ready.then(function() {
|
||||
return waitForPaints().then(() => {
|
||||
assert_animation_is_running_on_compositor(animation,
|
||||
'Opacity animation on an element reports ' +
|
||||
'that it is running on the compositor');
|
||||
|
||||
animation.effect.target = null;
|
||||
return waitForFrame();
|
||||
}).then(function() {
|
||||
}).then(() => {
|
||||
assert_animation_is_not_running_on_compositor(animation,
|
||||
'Animation is no longer running on the compositor after ' +
|
||||
'removing from the element');
|
||||
animation.effect.target = importantOpacityElement;
|
||||
return waitForFrame();
|
||||
}).then(function() {
|
||||
}).then(() => {
|
||||
assert_animation_is_not_running_on_compositor(animation,
|
||||
'Animation is NOT running on the compositor even after ' +
|
||||
'being applied to a different element which has an ' +
|
||||
|
@ -628,14 +628,14 @@ promise_test(function(t) {
|
|||
'applied to an element which has an important declaration and ' +
|
||||
'having previously been temporarily associated with no target element');
|
||||
|
||||
promise_test(function(t) {
|
||||
promise_test(t => {
|
||||
var div = addDiv(t);
|
||||
var another = addDiv(t);
|
||||
|
||||
var lowerAnimation = div.animate({ opacity: [1, 0] }, 100 * MS_PER_SEC);
|
||||
var higherAnimation = another.animate({ opacity: [0, 1] }, 100 * MS_PER_SEC);
|
||||
|
||||
return Promise.all([lowerAnimation.ready, higherAnimation.ready]).then(function() {
|
||||
return waitForPaints().then(() => {
|
||||
assert_animation_is_running_on_compositor(lowerAnimation,
|
||||
'An opacity animation on an element reports that ' +
|
||||
'it is running on the compositor');
|
||||
|
@ -645,13 +645,13 @@ promise_test(function(t) {
|
|||
|
||||
lowerAnimation.effect.target = null;
|
||||
return waitForFrame();
|
||||
}).then(function() {
|
||||
}).then(() => {
|
||||
assert_animation_is_not_running_on_compositor(lowerAnimation,
|
||||
'Animation is no longer running on the compositor after ' +
|
||||
'being removed from the element');
|
||||
lowerAnimation.effect.target = another;
|
||||
return waitForFrame();
|
||||
}).then(function() {
|
||||
}).then(() => {
|
||||
assert_animation_is_running_on_compositor(lowerAnimation,
|
||||
'A lower-priority animation begins running ' +
|
||||
'on the compositor after being applied to an element ' +
|
||||
|
@ -665,14 +665,14 @@ promise_test(function(t) {
|
|||
'to an element which has a higher-priority animation and after ' +
|
||||
'being temporarily associated with no target element');
|
||||
|
||||
promise_test(function(t) {
|
||||
promise_test(t => {
|
||||
var div = addDiv(t);
|
||||
var another = addDiv(t);
|
||||
|
||||
var lowerAnimation = div.animate({ opacity: [1, 0] }, 100 * MS_PER_SEC);
|
||||
var higherAnimation = another.animate({ opacity: [0, 1] }, 100 * MS_PER_SEC);
|
||||
|
||||
return Promise.all([lowerAnimation.ready, higherAnimation.ready]).then(function() {
|
||||
return waitForPaints().then(() => {
|
||||
assert_animation_is_running_on_compositor(lowerAnimation,
|
||||
'An opacity animation on an element reports that ' +
|
||||
'it is running on the compositor');
|
||||
|
@ -682,13 +682,13 @@ promise_test(function(t) {
|
|||
|
||||
higherAnimation.effect.target = null;
|
||||
return waitForFrame();
|
||||
}).then(function() {
|
||||
}).then(() => {
|
||||
assert_animation_is_not_running_on_compositor(higherAnimation,
|
||||
'Animation is no longer running on the compositor after ' +
|
||||
'being removed from the element');
|
||||
higherAnimation.effect.target = div;
|
||||
return waitForFrame();
|
||||
}).then(function() {
|
||||
}).then(() => {
|
||||
assert_animation_is_running_on_compositor(lowerAnimation,
|
||||
'Animation continues running on the compositor after ' +
|
||||
'a higher-priority animation applied to the same element');
|
||||
|
@ -704,7 +704,7 @@ promise_test(function(t) {
|
|||
var delayPhaseTests = [
|
||||
{
|
||||
desc: 'script animation of opacity',
|
||||
setupAnimation: function(t) {
|
||||
setupAnimation: t => {
|
||||
return addDiv(t).animate(
|
||||
{ opacity: [0, 1] },
|
||||
{ delay: 100 * MS_PER_SEC, duration: 100 * MS_PER_SEC });
|
||||
|
@ -712,7 +712,7 @@ var delayPhaseTests = [
|
|||
},
|
||||
{
|
||||
desc: 'script animation of transform',
|
||||
setupAnimation: function(t) {
|
||||
setupAnimation: t => {
|
||||
return addDiv(t).animate(
|
||||
{ transform: ['translateX(0px)', 'translateX(100px)'] },
|
||||
{ delay: 100 * MS_PER_SEC, duration: 100 * MS_PER_SEC });
|
||||
|
@ -720,21 +720,21 @@ var delayPhaseTests = [
|
|||
},
|
||||
{
|
||||
desc: 'CSS animation of opacity',
|
||||
setupAnimation: function(t) {
|
||||
setupAnimation: t => {
|
||||
return addDiv(t, { style: 'animation: opacity 100s 100s' })
|
||||
.getAnimations()[0];
|
||||
},
|
||||
},
|
||||
{
|
||||
desc: 'CSS animation of transform',
|
||||
setupAnimation: function(t) {
|
||||
setupAnimation: t => {
|
||||
return addDiv(t, { style: 'animation: anim 100s 100s' })
|
||||
.getAnimations()[0];
|
||||
},
|
||||
},
|
||||
{
|
||||
desc: 'CSS transition of opacity',
|
||||
setupAnimation: function(t) {
|
||||
setupAnimation: t => {
|
||||
var div = addDiv(t, { style: 'transition: opacity 100s 100s' });
|
||||
getComputedStyle(div).opacity;
|
||||
|
||||
|
@ -744,7 +744,7 @@ var delayPhaseTests = [
|
|||
},
|
||||
{
|
||||
desc: 'CSS transition of transform',
|
||||
setupAnimation: function(t) {
|
||||
setupAnimation: t => {
|
||||
var div = addDiv(t, { style: 'transition: transform 100s 100s' });
|
||||
getComputedStyle(div).transform;
|
||||
|
||||
|
@ -754,11 +754,11 @@ var delayPhaseTests = [
|
|||
},
|
||||
];
|
||||
|
||||
delayPhaseTests.forEach(function(test) {
|
||||
promise_test(function(t) {
|
||||
delayPhaseTests.forEach(test => {
|
||||
promise_test(t => {
|
||||
var animation = test.setupAnimation(t);
|
||||
|
||||
return animation.ready.then(function() {
|
||||
return waitForPaints().then(() => {
|
||||
assert_animation_is_running_on_compositor(animation,
|
||||
test.desc + ' reports that it is running on the '
|
||||
+ 'compositor even though it is in the delay phase');
|
||||
|
@ -773,7 +773,7 @@ delayPhaseTests.forEach(function(test) {
|
|||
var delayPhaseWithTransformStyleTests = [
|
||||
{
|
||||
desc: 'script animation of transform with transform style',
|
||||
setupAnimation: function(t) {
|
||||
setupAnimation: t => {
|
||||
return addDiv(t, { style: 'transform: translateX(10px)' }).animate(
|
||||
{ transform: ['translateX(0px)', 'translateX(100px)'] },
|
||||
{ delay: 100 * MS_PER_SEC, duration: 100 * MS_PER_SEC });
|
||||
|
@ -781,7 +781,7 @@ var delayPhaseWithTransformStyleTests = [
|
|||
},
|
||||
{
|
||||
desc: 'CSS animation of transform with transform style',
|
||||
setupAnimation: function(t) {
|
||||
setupAnimation: t => {
|
||||
return addDiv(t, { style: 'animation: anim 100s 100s;' +
|
||||
'transform: translateX(10px)' })
|
||||
.getAnimations()[0];
|
||||
|
@ -789,7 +789,7 @@ var delayPhaseWithTransformStyleTests = [
|
|||
},
|
||||
{
|
||||
desc: 'CSS transition of transform with transform style',
|
||||
setupAnimation: function(t) {
|
||||
setupAnimation: t => {
|
||||
var div = addDiv(t, { style: 'transition: transform 100s 100s;' +
|
||||
'transform: translateX(10px)'});
|
||||
getComputedStyle(div).transform;
|
||||
|
@ -800,19 +800,19 @@ var delayPhaseWithTransformStyleTests = [
|
|||
},
|
||||
];
|
||||
|
||||
delayPhaseWithTransformStyleTests.forEach(function(test) {
|
||||
promise_test(function(t) {
|
||||
delayPhaseWithTransformStyleTests.forEach(test => {
|
||||
promise_test(t => {
|
||||
var animation = test.setupAnimation(t);
|
||||
|
||||
return animation.ready.then(function() {
|
||||
return waitForPaints().then(() => {
|
||||
assert_animation_is_running_on_compositor(animation,
|
||||
test.desc + ' reports that it is running on the '
|
||||
+ 'compositor even though it is in the delay phase');
|
||||
}).then(function() {
|
||||
}).then(() => {
|
||||
// Remove the initial transform style during delay phase.
|
||||
animation.effect.target.style.transform = 'none';
|
||||
return animation.ready;
|
||||
}).then(function() {
|
||||
}).then(() => {
|
||||
assert_animation_is_running_on_compositor(animation,
|
||||
test.desc + ' reports that it keeps running on the '
|
||||
+ 'compositor after removing the initial transform style');
|
||||
|
@ -824,14 +824,14 @@ delayPhaseWithTransformStyleTests.forEach(function(test) {
|
|||
var startsWithNoneTests = [
|
||||
{
|
||||
desc: 'script animation of transform starts with transform:none segment',
|
||||
setupAnimation: function(t) {
|
||||
setupAnimation: t => {
|
||||
return addDiv(t).animate(
|
||||
{ transform: ['none', 'none', 'translateX(100px)'] }, 100 * MS_PER_SEC);
|
||||
},
|
||||
},
|
||||
{
|
||||
desc: 'CSS animation of transform starts with transform:none segment',
|
||||
setupAnimation: function(t) {
|
||||
setupAnimation: t => {
|
||||
return addDiv(t,
|
||||
{ style: 'animation: transform-starts-with-none 100s 100s' })
|
||||
.getAnimations()[0];
|
||||
|
@ -839,11 +839,11 @@ var startsWithNoneTests = [
|
|||
},
|
||||
];
|
||||
|
||||
startsWithNoneTests.forEach(function(test) {
|
||||
promise_test(function(t) {
|
||||
startsWithNoneTests.forEach(test => {
|
||||
promise_test(t => {
|
||||
var animation = test.setupAnimation(t);
|
||||
|
||||
return animation.ready.then(function() {
|
||||
return waitForPaints().then(() => {
|
||||
assert_animation_is_running_on_compositor(animation,
|
||||
test.desc + ' reports that it is running on the '
|
||||
+ 'compositor even though it is in transform:none segment');
|
||||
|
@ -852,21 +852,21 @@ startsWithNoneTests.forEach(function(test) {
|
|||
'it is in transform:none segment');
|
||||
});
|
||||
|
||||
promise_test(function(t) {
|
||||
promise_test(t => {
|
||||
var div = addDiv(t, { style: 'opacity: 1 ! important' });
|
||||
|
||||
var animation = div.animate(
|
||||
{ opacity: [0, 1] },
|
||||
{ delay: 100 * MS_PER_SEC, duration: 100 * MS_PER_SEC });
|
||||
|
||||
return animation.ready.then(function() {
|
||||
return waitForPaints().then(() => {
|
||||
assert_animation_is_not_running_on_compositor(animation,
|
||||
'Opacity animation on an element which has opacity:1 important style'
|
||||
+ 'reports that it is not running on the compositor');
|
||||
// Clear the opacity style on the target element.
|
||||
div.style.setProperty("opacity", "1", "");
|
||||
return waitForFrame();
|
||||
}).then(function() {
|
||||
}).then(() => {
|
||||
assert_animation_is_running_on_compositor(animation,
|
||||
'Opacity animations reports that it is running on the compositor after '
|
||||
+ 'clearing the opacity style on the element');
|
||||
|
@ -874,7 +874,7 @@ promise_test(function(t) {
|
|||
}, 'Clearing *important* opacity style on the target element sends the ' +
|
||||
'animation to the compositor even if the animation is in the delay phase');
|
||||
|
||||
promise_test(function(t) {
|
||||
promise_test(t => {
|
||||
var opaqueDiv = addDiv(t, { style: 'opacity: 1 ! important' });
|
||||
var anotherDiv = addDiv(t);
|
||||
|
||||
|
@ -882,14 +882,14 @@ promise_test(function(t) {
|
|||
{ opacity: [0, 1] },
|
||||
{ delay: 100 * MS_PER_SEC, duration: 100 * MS_PER_SEC });
|
||||
|
||||
return animation.ready.then(function() {
|
||||
return waitForPaints().then(() => {
|
||||
assert_animation_is_not_running_on_compositor(animation,
|
||||
'Opacity animation on an element which has opacity:1 important style'
|
||||
+ 'reports that it is not running on the compositor');
|
||||
// Changing target element to another element which has no opacity style.
|
||||
animation.effect.target = anotherDiv;
|
||||
return waitForFrame();
|
||||
}).then(function() {
|
||||
}).then(() => {
|
||||
assert_animation_is_running_on_compositor(animation,
|
||||
'Opacity animations reports that it is running on the compositor after '
|
||||
+ 'changing the target element to another elemenent having no '
|
||||
|
@ -898,21 +898,21 @@ promise_test(function(t) {
|
|||
}, 'Changing target element of opacity animation sends the animation to the ' +
|
||||
'the compositor even if the animation is in the delay phase');
|
||||
|
||||
promise_test(function(t) {
|
||||
promise_test(t => {
|
||||
var animation =
|
||||
addDivAndAnimate(t,
|
||||
{},
|
||||
{ width: ['100px', '200px'] },
|
||||
{ duration: 100 * MS_PER_SEC, delay: 100 * MS_PER_SEC });
|
||||
|
||||
return animation.ready.then(function() {
|
||||
return waitForPaints().then(() => {
|
||||
assert_animation_is_not_running_on_compositor(animation,
|
||||
'Width animation reports that it is not running on the compositor '
|
||||
+ 'in the delay phase');
|
||||
// Changing to property runnable on the compositor.
|
||||
animation.effect.setKeyframes({ opacity: [0, 1] });
|
||||
return waitForFrame();
|
||||
}).then(function() {
|
||||
}).then(() => {
|
||||
assert_animation_is_running_on_compositor(animation,
|
||||
'Opacity animation reports that it is running on the compositor '
|
||||
+ 'after changing the property from width property in the delay phase');
|
||||
|
@ -920,7 +920,7 @@ promise_test(function(t) {
|
|||
}, 'Dynamic change to a property runnable on the compositor ' +
|
||||
'in the delay phase');
|
||||
|
||||
promise_test(function(t) {
|
||||
promise_test(t => {
|
||||
var div = addDiv(t, { style: 'transition: opacity 100s; ' +
|
||||
'opacity: 0 !important' });
|
||||
getComputedStyle(div).opacity;
|
||||
|
@ -930,14 +930,14 @@ promise_test(function(t) {
|
|||
|
||||
var animation = div.getAnimations()[0];
|
||||
|
||||
return animation.ready.then(function() {
|
||||
return waitForPaints().then(() => {
|
||||
assert_animation_is_running_on_compositor(animation,
|
||||
'Transition reports that it is running on the compositor even if the ' +
|
||||
'property is overridden by an !important rule');
|
||||
});
|
||||
}, 'Transitions override important rules');
|
||||
|
||||
promise_test(function(t) {
|
||||
promise_test(t => {
|
||||
var div = addDiv(t, { style: 'transition: opacity 100s; ' +
|
||||
'opacity: 0 !important' });
|
||||
getComputedStyle(div).opacity;
|
||||
|
@ -949,7 +949,7 @@ promise_test(function(t) {
|
|||
|
||||
var [transition, animation] = div.getAnimations();
|
||||
|
||||
return Promise.all([transition.ready, animation.ready]).then(function() {
|
||||
return waitForPaints().then(() => {
|
||||
assert_animation_is_not_running_on_compositor(transition,
|
||||
'Transition suppressed by an animation which is overridden by an ' +
|
||||
'!important rule reports that it is NOT running on the compositor');
|
||||
|
|
|
@ -38,9 +38,6 @@ events (${expectedEvents.map(event => event.type).join(', ')})`);
|
|||
|
||||
function setupAnimation(t, animationStyle, receiveEvents) {
|
||||
const div = addDiv(t, { style: "animation: " + animationStyle });
|
||||
const watcher = new EventWatcher(t, div, [ 'animationstart',
|
||||
'animationiteration',
|
||||
'animationend' ]);
|
||||
|
||||
['start', 'iteration', 'end'].forEach(name => {
|
||||
div['onanimation' + name] = evt => {
|
||||
|
@ -50,12 +47,16 @@ function setupAnimation(t, animationStyle, receiveEvents) {
|
|||
};
|
||||
});
|
||||
|
||||
const watcher = new EventWatcher(t, div, [ 'animationstart',
|
||||
'animationiteration',
|
||||
'animationend' ]);
|
||||
|
||||
const animation = div.getAnimations()[0];
|
||||
|
||||
return [animation, watcher, div];
|
||||
}
|
||||
|
||||
promise_test(function(t) {
|
||||
promise_test(t => {
|
||||
let events = [];
|
||||
const [animation1, watcher1, div1] =
|
||||
setupAnimation(t, 'anim 100s 2 paused', events);
|
||||
|
@ -63,7 +64,7 @@ promise_test(function(t) {
|
|||
setupAnimation(t, 'anim 100s 2 paused', events);
|
||||
|
||||
return Promise.all([ watcher1.wait_for('animationstart'),
|
||||
watcher2.wait_for('animationstart') ]).then(function() {
|
||||
watcher2.wait_for('animationstart') ]).then(() => {
|
||||
checkEvents(events, ['animationstart', div1, 0],
|
||||
['animationstart', div2, 0]);
|
||||
|
||||
|
@ -73,7 +74,7 @@ promise_test(function(t) {
|
|||
animation2.currentTime = 100 * MS_PER_SEC;
|
||||
return Promise.all([ watcher1.wait_for('animationiteration'),
|
||||
watcher2.wait_for('animationiteration') ]);
|
||||
}).then(function() {
|
||||
}).then(() => {
|
||||
checkEvents(events, ['animationiteration', div1, 100],
|
||||
['animationiteration', div2, 100]);
|
||||
|
||||
|
@ -84,20 +85,20 @@ promise_test(function(t) {
|
|||
|
||||
return Promise.all([ watcher1.wait_for('animationend'),
|
||||
watcher2.wait_for('animationend') ]);
|
||||
}).then(function() {
|
||||
}).then(() => {
|
||||
checkEvents(events, ['animationend', div1, 200],
|
||||
['animationend', div2, 200]);
|
||||
});
|
||||
}, 'Test same events are ordered by elements.');
|
||||
|
||||
promise_test(function(t) {
|
||||
promise_test(t => {
|
||||
let events = [];
|
||||
const [animation1, watcher1, div1] =
|
||||
setupAnimation(t, 'anim 200s 400s', events);
|
||||
const [animation2, watcher2, div2] =
|
||||
setupAnimation(t, 'anim 300s 2', events);
|
||||
|
||||
return watcher2.wait_for('animationstart').then(function(evt) {
|
||||
return watcher2.wait_for('animationstart').then(evt => {
|
||||
animation1.currentTime = 400 * MS_PER_SEC;
|
||||
animation2.currentTime = 400 * MS_PER_SEC;
|
||||
|
||||
|
@ -105,13 +106,13 @@ promise_test(function(t) {
|
|||
|
||||
return Promise.all([ watcher1.wait_for('animationstart'),
|
||||
watcher2.wait_for('animationiteration') ]);
|
||||
}).then(function() {
|
||||
}).then(() => {
|
||||
checkEvents(events, ['animationiteration', div2, 300],
|
||||
['animationstart', div1, 0]);
|
||||
});
|
||||
}, 'Test start and iteration events are ordered by time.');
|
||||
|
||||
promise_test(function(t) {
|
||||
promise_test(t => {
|
||||
let events = [];
|
||||
const [animation1, watcher1, div1] =
|
||||
setupAnimation(t, 'anim 150s', events);
|
||||
|
@ -119,7 +120,7 @@ promise_test(function(t) {
|
|||
setupAnimation(t, 'anim 100s 2', events);
|
||||
|
||||
return Promise.all([ watcher1.wait_for('animationstart'),
|
||||
watcher2.wait_for('animationstart') ]).then(function() {
|
||||
watcher2.wait_for('animationstart') ]).then(() => {
|
||||
animation1.currentTime = 150 * MS_PER_SEC;
|
||||
animation2.currentTime = 150 * MS_PER_SEC;
|
||||
|
||||
|
@ -127,13 +128,13 @@ promise_test(function(t) {
|
|||
|
||||
return Promise.all([ watcher1.wait_for('animationend'),
|
||||
watcher2.wait_for('animationiteration') ]);
|
||||
}).then(function() {
|
||||
}).then(() => {
|
||||
checkEvents(events, ['animationiteration', div2, 100],
|
||||
['animationend', div1, 150]);
|
||||
});
|
||||
}, 'Test iteration and end events are ordered by time.');
|
||||
|
||||
promise_test(function(t) {
|
||||
promise_test(t => {
|
||||
let events = [];
|
||||
const [animation1, watcher1, div1] =
|
||||
setupAnimation(t, 'anim 100s 100s', events);
|
||||
|
@ -146,7 +147,7 @@ promise_test(function(t) {
|
|||
return Promise.all([ watcher1.wait_for([ 'animationstart',
|
||||
'animationend' ]),
|
||||
watcher2.wait_for([ 'animationstart',
|
||||
'animationend' ]) ]).then(function() {
|
||||
'animationend' ]) ]).then(() => {
|
||||
checkEvents(events, ['animationstart', div2, 0],
|
||||
['animationstart', div1, 0],
|
||||
['animationend', div1, 100],
|
||||
|
|
|
@ -367,3 +367,13 @@ function getDistance(target, prop, v1, v2) {
|
|||
return SpecialPowers.DOMWindowUtils
|
||||
.computeAnimationDistance(target, prop, v1, v2);
|
||||
}
|
||||
|
||||
/*
|
||||
* A promise wrapper for waiting MozAfterPaint.
|
||||
*/
|
||||
function waitForPaints() {
|
||||
// FIXME: Bug 1415065. Instead waiting for two requestAnimationFrames, we
|
||||
// should wait for MozAfterPaint once after MozAfterPaint is fired properly
|
||||
// (bug 1341294).
|
||||
return waitForAnimationFrames(2);
|
||||
}
|
||||
|
|
|
@ -11,6 +11,8 @@
|
|||
#include "nsIContent.h"
|
||||
#include "mozilla/Maybe.h"
|
||||
|
||||
class nsRange;
|
||||
|
||||
namespace mozilla {
|
||||
|
||||
// This class will maintain a reference to the child immediately
|
||||
|
@ -43,6 +45,10 @@ class RangeBoundaryBase
|
|||
template<typename T, typename U>
|
||||
friend class RangeBoundaryBase;
|
||||
|
||||
// nsRange needs to use InvalidOffset() which requires mRef initialized
|
||||
// before it's called.
|
||||
friend class ::nsRange;
|
||||
|
||||
friend void ImplCycleCollectionTraverse(nsCycleCollectionTraversalCallback&,
|
||||
RangeBoundary&, const char*,
|
||||
uint32_t);
|
||||
|
@ -67,22 +73,28 @@ public:
|
|||
, mRef(nullptr)
|
||||
, mOffset(mozilla::Some(aOffset))
|
||||
{
|
||||
if (mParent && mParent->IsContainerNode()) {
|
||||
// Find a reference node
|
||||
if (aOffset == static_cast<int32_t>(aContainer->GetChildCount())) {
|
||||
mRef = aContainer->GetLastChild();
|
||||
} else if (aOffset != 0) {
|
||||
mRef = mParent->GetChildAt(aOffset - 1);
|
||||
}
|
||||
|
||||
NS_WARNING_ASSERTION(mRef || aOffset == 0,
|
||||
"Constructing RangeBoundary with invalid value");
|
||||
if (!mParent) {
|
||||
mOffset.reset();
|
||||
}
|
||||
|
||||
NS_WARNING_ASSERTION(!mRef || mRef->GetParentNode() == mParent,
|
||||
"Constructing RangeBoundary with invalid value");
|
||||
}
|
||||
|
||||
protected:
|
||||
RangeBoundaryBase(nsINode* aContainer, nsIContent* aRef, int32_t aOffset)
|
||||
: mParent(aContainer)
|
||||
, mRef(aRef)
|
||||
, mOffset(mozilla::Some(aOffset))
|
||||
{
|
||||
MOZ_RELEASE_ASSERT(aContainer,
|
||||
"This constructor shouldn't be used when pointing nowhere");
|
||||
if (!mRef) {
|
||||
MOZ_ASSERT(mOffset.value() == 0);
|
||||
return;
|
||||
}
|
||||
MOZ_ASSERT(mOffset.value() > 0);
|
||||
MOZ_ASSERT(mParent->GetChildAt(mOffset.value() - 1) == mRef);
|
||||
}
|
||||
|
||||
public:
|
||||
RangeBoundaryBase()
|
||||
: mParent(nullptr)
|
||||
, mRef(nullptr)
|
||||
|
@ -101,6 +113,7 @@ public:
|
|||
nsIContent*
|
||||
Ref() const
|
||||
{
|
||||
EnsureRef();
|
||||
return mRef;
|
||||
}
|
||||
|
||||
|
@ -116,6 +129,7 @@ public:
|
|||
if (!mParent || !mParent->IsContainerNode()) {
|
||||
return nullptr;
|
||||
}
|
||||
EnsureRef();
|
||||
if (!mRef) {
|
||||
MOZ_ASSERT(Offset() == 0, "invalid RangeBoundary");
|
||||
return mParent->GetFirstChild();
|
||||
|
@ -124,63 +138,161 @@ public:
|
|||
return mRef->GetNextSibling();
|
||||
}
|
||||
|
||||
/**
|
||||
* GetNextSiblingOfChildOffset() returns next sibling of a child at offset.
|
||||
* If this refers after the last child or the container cannot have children,
|
||||
* this returns nullptr with warning.
|
||||
*/
|
||||
nsIContent*
|
||||
GetNextSiblingOfChildAtOffset() const
|
||||
{
|
||||
if (NS_WARN_IF(!mParent) || NS_WARN_IF(!mParent->IsContainerNode())) {
|
||||
return nullptr;
|
||||
}
|
||||
EnsureRef();
|
||||
if (NS_WARN_IF(!mRef->GetNextSibling())) {
|
||||
// Already referring the end of the container.
|
||||
return nullptr;
|
||||
}
|
||||
return mRef->GetNextSibling()->GetNextSibling();
|
||||
}
|
||||
|
||||
/**
|
||||
* GetPreviousSiblingOfChildAtOffset() returns previous sibling of a child
|
||||
* at offset. If this refers the first child or the container cannot have
|
||||
* children, this returns nullptr with warning.
|
||||
*/
|
||||
nsIContent*
|
||||
GetPreviousSiblingOfChildAtOffset() const
|
||||
{
|
||||
if (NS_WARN_IF(!mParent) || NS_WARN_IF(!mParent->IsContainerNode())) {
|
||||
return nullptr;
|
||||
}
|
||||
EnsureRef();
|
||||
if (NS_WARN_IF(!mRef)) {
|
||||
// Already referring the start of the container.
|
||||
return nullptr;
|
||||
}
|
||||
return mRef;
|
||||
}
|
||||
|
||||
uint32_t
|
||||
Offset() const
|
||||
{
|
||||
if (mOffset.isSome()) {
|
||||
return mOffset.value();
|
||||
}
|
||||
|
||||
if (!mParent) {
|
||||
MOZ_ASSERT(!mRef);
|
||||
return 0;
|
||||
}
|
||||
|
||||
MOZ_ASSERT(mParent->IsContainerNode(),
|
||||
"If the container cannot have children, mOffset.isSome() should be true");
|
||||
MOZ_ASSERT(mRef);
|
||||
MOZ_ASSERT(mRef->GetParentNode() == mParent);
|
||||
mOffset = mozilla::Some(mParent->IndexOf(mRef) + 1);
|
||||
|
||||
return mOffset.value();
|
||||
}
|
||||
|
||||
void
|
||||
InvalidateOffset()
|
||||
{
|
||||
MOZ_ASSERT(mParent);
|
||||
MOZ_ASSERT(mParent->IsContainerNode(), "Range is positioned on a text node!");
|
||||
|
||||
if (!mRef) {
|
||||
MOZ_ASSERT(mOffset.isSome() && mOffset.value() == 0,
|
||||
"Invalidating offset of invalid RangeBoundary?");
|
||||
return;
|
||||
if (!mRef->GetPreviousSibling()) {
|
||||
mOffset = mozilla::Some(1);
|
||||
return mOffset.value();
|
||||
}
|
||||
mOffset.reset();
|
||||
if (!mRef->GetNextSibling()) {
|
||||
mOffset = mozilla::Some(mParent->GetChildCount());
|
||||
return mOffset.value();
|
||||
}
|
||||
// Use nsINode::IndexOf() as the last resort due to being expensive.
|
||||
mOffset = mozilla::Some(mParent->IndexOf(mRef) + 1);
|
||||
return mOffset.value();
|
||||
}
|
||||
|
||||
void
|
||||
Set(nsINode* aContainer, int32_t aOffset)
|
||||
{
|
||||
mParent = aContainer;
|
||||
if (mParent && mParent->IsContainerNode()) {
|
||||
// Find a reference node
|
||||
if (aOffset == static_cast<int32_t>(aContainer->GetChildCount())) {
|
||||
mRef = aContainer->GetLastChild();
|
||||
} else if (aOffset == 0) {
|
||||
mRef = nullptr;
|
||||
} else {
|
||||
mRef = mParent->GetChildAt(aOffset - 1);
|
||||
MOZ_ASSERT(mRef);
|
||||
}
|
||||
mRef = nullptr;
|
||||
mOffset = mozilla::Some(aOffset);
|
||||
}
|
||||
|
||||
NS_WARNING_ASSERTION(mRef || aOffset == 0,
|
||||
"Setting RangeBoundary to invalid value");
|
||||
} else {
|
||||
mRef = nullptr;
|
||||
/**
|
||||
* AdvanceOffset() tries to reference next sibling of mRef if its container
|
||||
* can have children or increments offset if the container is a text node or
|
||||
* something.
|
||||
* If the container can have children and there is no next sibling, this
|
||||
* outputs warning and does nothing. So, callers need to check if there is
|
||||
* next sibling which you need to refer.
|
||||
*/
|
||||
void
|
||||
AdvanceOffset()
|
||||
{
|
||||
if (NS_WARN_IF(!mParent)) {
|
||||
return;
|
||||
}
|
||||
EnsureRef();
|
||||
if (!mRef) {
|
||||
if (!mParent->IsContainerNode()) {
|
||||
// In text node or something, just increment the offset.
|
||||
MOZ_ASSERT(mOffset.isSome());
|
||||
if (NS_WARN_IF(mOffset.value() == mParent->Length())) {
|
||||
// Already referring the end of the node.
|
||||
return;
|
||||
}
|
||||
mOffset = mozilla::Some(mOffset.value() + 1);
|
||||
return;
|
||||
}
|
||||
mRef = mParent->GetFirstChild();
|
||||
if (NS_WARN_IF(!mRef)) {
|
||||
// No children in the container.
|
||||
mOffset = mozilla::Some(0);
|
||||
} else {
|
||||
mOffset = mozilla::Some(1);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
mOffset = mozilla::Some(aOffset);
|
||||
nsIContent* nextSibling = mRef->GetNextSibling();
|
||||
if (NS_WARN_IF(!nextSibling)) {
|
||||
// Already referring the end of the container.
|
||||
return;
|
||||
}
|
||||
mRef = nextSibling;
|
||||
if (mOffset.isSome()) {
|
||||
mOffset = mozilla::Some(mOffset.value() + 1);
|
||||
}
|
||||
}
|
||||
|
||||
NS_WARNING_ASSERTION(!mRef || mRef->GetParentNode() == mParent,
|
||||
"Setting RangeBoundary to invalid value");
|
||||
/**
|
||||
* RewindOffset() tries to reference next sibling of mRef if its container
|
||||
* can have children or decrements offset if the container is a text node or
|
||||
* something.
|
||||
* If the container can have children and there is no next previous, this
|
||||
* outputs warning and does nothing. So, callers need to check if there is
|
||||
* previous sibling which you need to refer.
|
||||
*/
|
||||
void
|
||||
RewindOffset()
|
||||
{
|
||||
if (NS_WARN_IF(!mParent)) {
|
||||
return;
|
||||
}
|
||||
EnsureRef();
|
||||
if (!mRef) {
|
||||
if (NS_WARN_IF(mParent->IsContainerNode())) {
|
||||
// Already referring the start of the container
|
||||
mOffset = mozilla::Some(0);
|
||||
return;
|
||||
}
|
||||
// In text node or something, just decrement the offset.
|
||||
MOZ_ASSERT(mOffset.isSome());
|
||||
if (NS_WARN_IF(mOffset.value() == 0)) {
|
||||
// Already referring the start of the node.
|
||||
return;
|
||||
}
|
||||
mOffset = mozilla::Some(mOffset.value() - 1);
|
||||
return;
|
||||
}
|
||||
|
||||
mRef = mRef->GetPreviousSibling();
|
||||
if (mOffset.isSome()) {
|
||||
mOffset = mozilla::Some(mOffset.value() - 1);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -208,10 +320,13 @@ public:
|
|||
return false;
|
||||
}
|
||||
|
||||
if (Ref()) {
|
||||
return Ref()->GetParentNode() == Container();
|
||||
if (mRef && mRef->GetParentNode() != mParent) {
|
||||
return false;
|
||||
}
|
||||
return Offset() <= Container()->Length();
|
||||
if (mOffset.isSome() && mOffset.value() > mParent->Length()) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool
|
||||
|
@ -265,9 +380,50 @@ public:
|
|||
return !(*this == aOther);
|
||||
}
|
||||
|
||||
protected:
|
||||
/**
|
||||
* InvalidOffset() is error prone method, unfortunately. If somebody
|
||||
* needs to call this method, it needs to call EnsureRef() before changing
|
||||
* the position of the referencing point.
|
||||
*/
|
||||
void
|
||||
InvalidateOffset()
|
||||
{
|
||||
MOZ_ASSERT(mParent);
|
||||
MOZ_ASSERT(mParent->IsContainerNode(),
|
||||
"Range is positioned on a text node!");
|
||||
MOZ_ASSERT(mRef || (mOffset.isSome() && mOffset.value() == 0),
|
||||
"mRef should be computed before a call of InvalidateOffset()");
|
||||
|
||||
if (!mRef) {
|
||||
return;
|
||||
}
|
||||
mOffset.reset();
|
||||
}
|
||||
|
||||
void
|
||||
EnsureRef() const
|
||||
{
|
||||
if (mRef) {
|
||||
return;
|
||||
}
|
||||
if (!mParent) {
|
||||
MOZ_ASSERT(!mOffset.isSome());
|
||||
return;
|
||||
}
|
||||
MOZ_ASSERT(mOffset.isSome());
|
||||
MOZ_ASSERT(mOffset.value() <= mParent->Length());
|
||||
if (!mParent->IsContainerNode() ||
|
||||
mOffset.value() == 0) {
|
||||
return;
|
||||
}
|
||||
mRef = mParent->GetChildAt(mOffset.value() - 1);
|
||||
MOZ_ASSERT(mRef);
|
||||
}
|
||||
|
||||
private:
|
||||
ParentType mParent;
|
||||
RefType mRef;
|
||||
mutable RefType mRef;
|
||||
|
||||
mutable mozilla::Maybe<uint32_t> mOffset;
|
||||
};
|
||||
|
|
|
@ -10641,13 +10641,21 @@ void nsGlobalWindow::SetIsBackground(bool aIsBackground)
|
|||
if (aIsBackground) {
|
||||
// Notify gamepadManager we are at the background window,
|
||||
// we need to stop vibrate.
|
||||
if (inner) {
|
||||
// Stop the vr telemery time spent when it switches to
|
||||
// the background window.
|
||||
if (inner && changed) {
|
||||
inner->StopGamepadHaptics();
|
||||
// true is for asking to set the delta time to
|
||||
// the telemetry.
|
||||
inner->ResetVRTelemetry(true);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (inner) {
|
||||
// When switching to be as a top tab, restart the telemetry.
|
||||
// false is for only resetting the timestamp.
|
||||
inner->ResetVRTelemetry(false);
|
||||
inner->SyncGamepadState();
|
||||
}
|
||||
}
|
||||
|
@ -10723,6 +10731,14 @@ nsGlobalWindow::DisableVRUpdates()
|
|||
}
|
||||
}
|
||||
|
||||
void
|
||||
nsGlobalWindow::ResetVRTelemetry(bool aUpdate)
|
||||
{
|
||||
if (mVREventObserver) {
|
||||
mVREventObserver->UpdateSpentTimeIn2DTelemetry(aUpdate);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
nsGlobalWindow::SetChromeEventHandler(EventTarget* aChromeEventHandler)
|
||||
{
|
||||
|
|
|
@ -773,6 +773,10 @@ public:
|
|||
// Enable/disable updates for VR
|
||||
void EnableVRUpdates();
|
||||
void DisableVRUpdates();
|
||||
// Reset telemetry data when switching windows.
|
||||
// aUpdate, true for accumulating the result to the histogram.
|
||||
// false for only resetting the timestamp.
|
||||
void ResetVRTelemetry(bool aUpdate);
|
||||
|
||||
// Update the VR displays for this window
|
||||
bool UpdateVRDisplays(nsTArray<RefPtr<mozilla::dom::VRDisplay>>& aDisplays);
|
||||
|
|
|
@ -1020,6 +1020,14 @@ nsRange::DoSetRange(const RawRangeBoundary& aStart,
|
|||
// sure to not use it here to determine our "old" current ancestor.
|
||||
mStart = aStart;
|
||||
mEnd = aEnd;
|
||||
|
||||
// If RangeBoundary is initialized with a container node and offset in it,
|
||||
// its mRef may not have been initialized yet. However, nsRange will need to
|
||||
// adjust the offset when the node position is changed. In such case,
|
||||
// RangeBoundary::mRef needs to be initialized for recomputing offset later.
|
||||
mStart.EnsureRef();
|
||||
mEnd.EnsureRef();
|
||||
|
||||
mIsPositioned = !!mStart.Container();
|
||||
if (checkCommonAncestor) {
|
||||
nsINode* oldCommonAncestor = mRegisteredCommonAncestor;
|
||||
|
|
|
@ -18,7 +18,6 @@
|
|||
|
||||
#include "base/basictypes.h"
|
||||
#include "nsIDOMHTMLMediaElement.h"
|
||||
#include "nsIDOMHTMLSourceElement.h"
|
||||
#include "TimeRanges.h"
|
||||
#include "nsGenericHTMLElement.h"
|
||||
#include "nsAttrValueInlines.h"
|
||||
|
|
|
@ -35,21 +35,10 @@ HTMLSourceElement::~HTMLSourceElement()
|
|||
NS_IMPL_CYCLE_COLLECTION_INHERITED(HTMLSourceElement, nsGenericHTMLElement,
|
||||
mSrcMediaSource)
|
||||
|
||||
NS_IMPL_ADDREF_INHERITED(HTMLSourceElement, nsGenericHTMLElement)
|
||||
NS_IMPL_RELEASE_INHERITED(HTMLSourceElement, nsGenericHTMLElement)
|
||||
|
||||
NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(HTMLSourceElement)
|
||||
NS_INTERFACE_MAP_ENTRY(nsIDOMHTMLSourceElement)
|
||||
NS_INTERFACE_MAP_END_INHERITING(nsGenericHTMLElement)
|
||||
NS_IMPL_ISUPPORTS_CYCLE_COLLECTION_INHERITED_0(HTMLSourceElement, nsGenericHTMLElement)
|
||||
|
||||
NS_IMPL_ELEMENT_CLONE(HTMLSourceElement)
|
||||
|
||||
NS_IMPL_URI_ATTR(HTMLSourceElement, Src, src)
|
||||
NS_IMPL_STRING_ATTR(HTMLSourceElement, Type, type)
|
||||
NS_IMPL_STRING_ATTR(HTMLSourceElement, Srcset, srcset)
|
||||
NS_IMPL_STRING_ATTR(HTMLSourceElement, Sizes, sizes)
|
||||
NS_IMPL_STRING_ATTR(HTMLSourceElement, Media, media)
|
||||
|
||||
bool
|
||||
HTMLSourceElement::MatchesCurrentMedia()
|
||||
{
|
||||
|
|
|
@ -8,7 +8,6 @@
|
|||
#define mozilla_dom_HTMLSourceElement_h
|
||||
|
||||
#include "mozilla/Attributes.h"
|
||||
#include "nsIDOMHTMLSourceElement.h"
|
||||
#include "nsGenericHTMLElement.h"
|
||||
#include "mozilla/dom/HTMLMediaElement.h"
|
||||
|
||||
|
@ -19,8 +18,7 @@ namespace dom {
|
|||
|
||||
class MediaList;
|
||||
|
||||
class HTMLSourceElement final : public nsGenericHTMLElement,
|
||||
public nsIDOMHTMLSourceElement
|
||||
class HTMLSourceElement final : public nsGenericHTMLElement
|
||||
{
|
||||
public:
|
||||
explicit HTMLSourceElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo);
|
||||
|
@ -32,9 +30,6 @@ public:
|
|||
|
||||
NS_IMPL_FROMCONTENT_HTML_WITH_TAG(HTMLSourceElement, source)
|
||||
|
||||
// nsIDOMHTMLSourceElement
|
||||
NS_DECL_NSIDOMHTMLSOURCEELEMENT
|
||||
|
||||
virtual nsresult Clone(mozilla::dom::NodeInfo* aNodeInfo, nsINode** aResult,
|
||||
bool aPreallocateChildren) const override;
|
||||
|
||||
|
|
|
@ -4,7 +4,6 @@
|
|||
* 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/. */
|
||||
|
||||
#include "nsIDOMHTMLSourceElement.h"
|
||||
#include "mozilla/dom/HTMLVideoElement.h"
|
||||
#include "mozilla/dom/HTMLVideoElementBinding.h"
|
||||
#include "nsGenericHTMLElement.h"
|
||||
|
|
|
@ -20,7 +20,6 @@ XPIDL_SOURCES += [
|
|||
'nsIDOMHTMLOptionsCollection.idl',
|
||||
'nsIDOMHTMLScriptElement.idl',
|
||||
'nsIDOMHTMLSelectElement.idl',
|
||||
'nsIDOMHTMLSourceElement.idl',
|
||||
'nsIDOMMozBrowserFrame.idl',
|
||||
'nsIDOMTimeRanges.idl',
|
||||
'nsIDOMValidityState.idl',
|
||||
|
|
|
@ -1,27 +0,0 @@
|
|||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/* vim:set ts=2 sw=2 sts=2 et cindent: */
|
||||
/* 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/. */
|
||||
|
||||
#include "nsIDOMHTMLElement.idl"
|
||||
|
||||
/**
|
||||
* The nsIDOMHTMLSourceElement interface is the interface to a HTML
|
||||
* <source> element.
|
||||
*
|
||||
* For more information on this interface, please see
|
||||
* http://www.whatwg.org/specs/web-apps/current-work/#source
|
||||
*
|
||||
* @status UNDER_DEVELOPMENT
|
||||
*/
|
||||
|
||||
[uuid(1deb68f8-2ed6-4a41-b8c8-e0f86510f799)]
|
||||
interface nsIDOMHTMLSourceElement : nsISupports
|
||||
{
|
||||
attribute DOMString src;
|
||||
attribute DOMString type;
|
||||
attribute DOMString srcset;
|
||||
attribute DOMString sizes;
|
||||
attribute DOMString media;
|
||||
};
|
|
@ -32,7 +32,7 @@ namespace mozilla {
|
|||
|
||||
// Update this version number to force re-running the benchmark. Such as when
|
||||
// an improvement to FFVP9 or LIBVPX is deemed worthwhile.
|
||||
const uint32_t VP9Benchmark::sBenchmarkVersionID = 2;
|
||||
const uint32_t VP9Benchmark::sBenchmarkVersionID = 3;
|
||||
|
||||
const char* VP9Benchmark::sBenchmarkFpsPref = "media.benchmark.vp9.fps";
|
||||
const char* VP9Benchmark::sBenchmarkFpsVersionCheck = "media.benchmark.vp9.versioncheck";
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
#include "mozilla/Logging.h"
|
||||
#include "mozilla/StaticPtr.h"
|
||||
#include "nsContentUtils.h"
|
||||
#include "mozilla/Services.h"
|
||||
|
||||
#include "MediaDecoder.h"
|
||||
#include "MediaShutdownManager.h"
|
||||
|
|
|
@ -410,10 +410,21 @@ MP4TrackDemuxer::Seek(const media::TimeUnit& aTime)
|
|||
mIterator->Seek(seekTime.ToMicroseconds());
|
||||
|
||||
// Check what time we actually seeked to.
|
||||
mQueuedSample = GetNextSample();
|
||||
if (mQueuedSample) {
|
||||
seekTime = mQueuedSample->mTime;
|
||||
}
|
||||
do {
|
||||
RefPtr<MediaRawData> sample = GetNextSample();
|
||||
if (!sample) {
|
||||
return SeekPromise::CreateAndReject(NS_ERROR_DOM_MEDIA_END_OF_STREAM,
|
||||
__func__);
|
||||
}
|
||||
if (!sample->Size()) {
|
||||
// This sample can't be decoded, continue searching.
|
||||
continue;
|
||||
}
|
||||
if (sample->mKeyframe) {
|
||||
mQueuedSample = sample;
|
||||
seekTime = mQueuedSample->mTime;
|
||||
}
|
||||
} while (!mQueuedSample);
|
||||
|
||||
SetNextKeyFrameTime();
|
||||
|
||||
|
|
|
@ -6,6 +6,8 @@
|
|||
|
||||
#include "AudioSink.h"
|
||||
#include "AudioSinkWrapper.h"
|
||||
#include "nsPrintfCString.h"
|
||||
#include "VideoUtils.h"
|
||||
|
||||
namespace mozilla {
|
||||
namespace media {
|
||||
|
|
|
@ -25,10 +25,11 @@ using namespace gfx;
|
|||
VREventObserver::VREventObserver(nsGlobalWindow* aGlobalWindow)
|
||||
: mWindow(aGlobalWindow)
|
||||
, mIs2DView(true)
|
||||
, mHasReset(false)
|
||||
{
|
||||
MOZ_ASSERT(aGlobalWindow && aGlobalWindow->IsInnerWindow());
|
||||
|
||||
mSpendTimeIn2DView = TimeStamp::Now();
|
||||
UpdateSpentTimeIn2DTelemetry(false);
|
||||
VRManagerChild* vmc = VRManagerChild::Get();
|
||||
if (vmc) {
|
||||
vmc->AddListener(this);
|
||||
|
@ -46,13 +47,7 @@ VREventObserver::DisconnectFromOwner()
|
|||
// In the event that nsGlobalWindow is deallocated, VREventObserver may
|
||||
// still be AddRef'ed elsewhere. Ensure that we don't UAF by
|
||||
// dereferencing mWindow.
|
||||
if (mWindow && mIs2DView) {
|
||||
// The WebVR content is closed, and we will collect the telemetry info
|
||||
// for the users who view it in 2D view only.
|
||||
Telemetry::Accumulate(Telemetry::WEBVR_USERS_VIEW_IN, 0);
|
||||
Telemetry::AccumulateTimeDelta(Telemetry::WEBVR_TIME_SPENT_VIEWING_IN_2D,
|
||||
mSpendTimeIn2DView);
|
||||
}
|
||||
UpdateSpentTimeIn2DTelemetry(true);
|
||||
mWindow = nullptr;
|
||||
|
||||
// Unregister from VRManagerChild
|
||||
|
@ -62,6 +57,26 @@ VREventObserver::DisconnectFromOwner()
|
|||
}
|
||||
}
|
||||
|
||||
void
|
||||
VREventObserver::UpdateSpentTimeIn2DTelemetry(bool aUpdate)
|
||||
{
|
||||
// mHasReset for avoiding setting the telemetry continuously
|
||||
// for the telemetry is already been set when it is at the background.
|
||||
// then, it would be set again when the process is exit and calling
|
||||
// VREventObserver::DisconnectFromOwner().
|
||||
if (mWindow && mIs2DView && aUpdate && mHasReset) {
|
||||
// The WebVR content is closed, and we will collect the telemetry info
|
||||
// for the users who view it in 2D view only.
|
||||
Telemetry::Accumulate(Telemetry::WEBVR_USERS_VIEW_IN, 0);
|
||||
Telemetry::AccumulateTimeDelta(Telemetry::WEBVR_TIME_SPENT_VIEWING_IN_2D,
|
||||
mSpendTimeIn2DView);
|
||||
mHasReset = false;
|
||||
} else if (!aUpdate) {
|
||||
mSpendTimeIn2DView = TimeStamp::Now();
|
||||
mHasReset = true;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
VREventObserver::NotifyVRDisplayMounted(uint32_t aDisplayID)
|
||||
{
|
||||
|
|
|
@ -30,6 +30,7 @@ public:
|
|||
void NotifyVRDisplayPresentChange(uint32_t aDisplayID);
|
||||
|
||||
void DisconnectFromOwner();
|
||||
void UpdateSpentTimeIn2DTelemetry(bool aUpdate);
|
||||
|
||||
private:
|
||||
~VREventObserver();
|
||||
|
@ -39,6 +40,7 @@ private:
|
|||
// in the 2D view.
|
||||
TimeStamp mSpendTimeIn2DView;
|
||||
bool mIs2DView;
|
||||
bool mHasReset;
|
||||
};
|
||||
|
||||
} // namespace dom
|
||||
|
|
|
@ -31,7 +31,6 @@
|
|||
#include "nsIDOMHTMLMediaElement.h"
|
||||
#include "nsIDOMHTMLOptionElement.h"
|
||||
#include "nsIDOMHTMLScriptElement.h"
|
||||
#include "nsIDOMHTMLSourceElement.h"
|
||||
#include "nsIDOMMozNamedAttrMap.h"
|
||||
#include "nsIDOMNode.h"
|
||||
#include "nsIDOMNodeFilter.h"
|
||||
|
@ -494,8 +493,8 @@ ResourceReader::OnWalkDOMNode(nsIDOMNode* aNode)
|
|||
if (nodeAsMedia) {
|
||||
return OnWalkAttribute(aNode, "src");
|
||||
}
|
||||
nsCOMPtr<nsIDOMHTMLSourceElement> nodeAsSource = do_QueryInterface(aNode);
|
||||
if (nodeAsSource) {
|
||||
|
||||
if (content->IsHTMLElement(nsGkAtoms::source)) {
|
||||
return OnWalkAttribute(aNode, "src");
|
||||
}
|
||||
|
||||
|
@ -1009,8 +1008,7 @@ PersistNodeFixup::FixupNode(nsIDOMNode *aNodeIn,
|
|||
return rv;
|
||||
}
|
||||
|
||||
nsCOMPtr<nsIDOMHTMLSourceElement> nodeAsSource = do_QueryInterface(aNodeIn);
|
||||
if (nodeAsSource) {
|
||||
if (content->IsHTMLElement(nsGkAtoms::source)) {
|
||||
rv = GetNodeToFixup(aNodeIn, aNodeOut);
|
||||
if (NS_SUCCEEDED(rv) && *aNodeOut) {
|
||||
FixupAttribute(*aNodeOut, "src");
|
||||
|
|
|
@ -28,11 +28,13 @@
|
|||
#include "TextEditUtils.h" // for TextEditUtils
|
||||
#include "mozInlineSpellChecker.h" // for mozInlineSpellChecker
|
||||
#include "mozilla/CheckedInt.h" // for CheckedInt
|
||||
#include "mozilla/EditorDOMPoint.h" // for EditorDOMPoint
|
||||
#include "mozilla/EditorUtils.h" // for AutoRules, etc.
|
||||
#include "mozilla/EditTransactionBase.h" // for EditTransactionBase
|
||||
#include "mozilla/FlushType.h" // for FlushType::Frames
|
||||
#include "mozilla/IMEStateManager.h" // for IMEStateManager
|
||||
#include "mozilla/Preferences.h" // for Preferences
|
||||
#include "mozilla/RangeBoundary.h" // for RawRangeBoundary, RangeBoundary
|
||||
#include "mozilla/dom/Selection.h" // for Selection, etc.
|
||||
#include "mozilla/Services.h" // for GetObserverService
|
||||
#include "mozilla/TextComposition.h" // for TextComposition
|
||||
|
@ -3764,22 +3766,17 @@ EditorBase::IsTextNode(nsIDOMNode* aNode)
|
|||
return (nodeType == nsIDOMNode::TEXT_NODE);
|
||||
}
|
||||
|
||||
/**
|
||||
* GetNodeAtRangeOffsetPoint() returns the node at this position in a range,
|
||||
* assuming that aParentOrNode is the node itself if it's a text node, or
|
||||
* the node's parent otherwise.
|
||||
*/
|
||||
// static
|
||||
nsIContent*
|
||||
EditorBase::GetNodeAtRangeOffsetPoint(nsINode* aParentOrNode,
|
||||
int32_t aOffset)
|
||||
EditorBase::GetNodeAtRangeOffsetPoint(const RawRangeBoundary& aPoint)
|
||||
{
|
||||
if (NS_WARN_IF(!aParentOrNode)) {
|
||||
if (NS_WARN_IF(!aPoint.IsSet())) {
|
||||
return nullptr;
|
||||
}
|
||||
if (aParentOrNode->GetAsText()) {
|
||||
return aParentOrNode->AsContent();
|
||||
if (aPoint.Container()->GetAsText()) {
|
||||
return aPoint.Container()->AsContent();
|
||||
}
|
||||
return aParentOrNode->GetChildAt(aOffset);
|
||||
return aPoint.GetChildAtOffset();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -4047,17 +4044,17 @@ EditorBase::JoinNodeDeep(nsIContent& aLeftNode,
|
|||
nsCOMPtr<nsINode> parentNode = aRightNode.GetParentNode();
|
||||
|
||||
EditorDOMPoint ret;
|
||||
|
||||
while (leftNodeToJoin && rightNodeToJoin && parentNode &&
|
||||
AreNodesSameType(leftNodeToJoin, rightNodeToJoin)) {
|
||||
uint32_t length = leftNodeToJoin->Length();
|
||||
|
||||
ret.node = rightNodeToJoin;
|
||||
ret.offset = length;
|
||||
ret.Set(rightNodeToJoin, length);
|
||||
|
||||
// Do the join
|
||||
nsresult rv = JoinNodes(*leftNodeToJoin, *rightNodeToJoin);
|
||||
NS_ENSURE_SUCCESS(rv, EditorDOMPoint());
|
||||
if (NS_WARN_IF(NS_FAILED(rv))) {
|
||||
return EditorDOMPoint();
|
||||
}
|
||||
|
||||
if (parentNode->GetAsText()) {
|
||||
// We've joined all the way down to text nodes, we're done!
|
||||
|
@ -4089,6 +4086,10 @@ EditorBase::JoinNodeDeep(nsIContent& aLeftNode,
|
|||
}
|
||||
}
|
||||
|
||||
if (NS_WARN_IF(!ret.IsSet())) {
|
||||
return EditorDOMPoint();
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
|
@ -7,9 +7,11 @@
|
|||
#define mozilla_EditorBase_h
|
||||
|
||||
#include "mozilla/Assertions.h" // for MOZ_ASSERT, etc.
|
||||
#include "mozilla/EditorDOMPoint.h" // for EditorDOMPoint
|
||||
#include "mozilla/Maybe.h" // for Maybe
|
||||
#include "mozilla/OwningNonNull.h" // for OwningNonNull
|
||||
#include "mozilla/PresShell.h" // for PresShell
|
||||
#include "mozilla/RangeBoundary.h" // for RawRangeBoundary, RangeBoundary
|
||||
#include "mozilla/SelectionState.h" // for RangeUpdater, etc.
|
||||
#include "mozilla/StyleSheet.h" // for StyleSheet
|
||||
#include "mozilla/WeakPtr.h" // for WeakPtr
|
||||
|
@ -123,7 +125,6 @@ class RemoveStyleSheetTransaction;
|
|||
class SplitNodeTransaction;
|
||||
class TextComposition;
|
||||
class TextEditor;
|
||||
struct EditorDOMPoint;
|
||||
|
||||
namespace dom {
|
||||
class DataTransfer;
|
||||
|
@ -886,8 +887,17 @@ public:
|
|||
return aNode->NodeType() == nsIDOMNode::TEXT_NODE;
|
||||
}
|
||||
|
||||
static nsIContent* GetNodeAtRangeOffsetPoint(nsINode* aParentOrNode,
|
||||
int32_t aOffset);
|
||||
/**
|
||||
* GetNodeAtRangeOffsetPoint() returns the node at this position in a range,
|
||||
* assuming that the container is the node itself if it's a text node, or
|
||||
* the node's parent otherwise.
|
||||
*/
|
||||
static nsIContent* GetNodeAtRangeOffsetPoint(nsINode* aContainer,
|
||||
int32_t aOffset)
|
||||
{
|
||||
return GetNodeAtRangeOffsetPoint(RawRangeBoundary(aContainer, aOffset));
|
||||
}
|
||||
static nsIContent* GetNodeAtRangeOffsetPoint(const RawRangeBoundary& aPoint);
|
||||
|
||||
static nsresult GetStartNodeAndOffset(Selection* aSelection,
|
||||
nsIDOMNode** outStartNode,
|
||||
|
|
|
@ -0,0 +1,94 @@
|
|||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/* 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/. */
|
||||
|
||||
|
||||
#ifndef mozilla_EditorDOMPoint_h
|
||||
#define mozilla_EditorDOMPoint_h
|
||||
|
||||
#include "mozilla/Assertions.h"
|
||||
#include "mozilla/Attributes.h"
|
||||
#include "mozilla/RangeBoundary.h"
|
||||
#include "nsCOMPtr.h"
|
||||
#include "nsIContent.h"
|
||||
#include "nsINode.h"
|
||||
|
||||
namespace mozilla {
|
||||
|
||||
template<typename ParentType, typename RefType>
|
||||
class EditorDOMPointBase;
|
||||
|
||||
typedef EditorDOMPointBase<nsCOMPtr<nsINode>,
|
||||
nsCOMPtr<nsIContent>> EditorDOMPoint;
|
||||
typedef EditorDOMPointBase<nsINode*, nsIContent*> EditorRawDOMPoint;
|
||||
|
||||
template<typename ParentType, typename RefType>
|
||||
class MOZ_STACK_CLASS EditorDOMPointBase final
|
||||
: public RangeBoundaryBase<ParentType, RefType>
|
||||
{
|
||||
public:
|
||||
EditorDOMPointBase()
|
||||
: RangeBoundaryBase<ParentType, RefType>()
|
||||
{
|
||||
}
|
||||
|
||||
EditorDOMPointBase(nsINode* aConatiner,
|
||||
int32_t aOffset)
|
||||
: RangeBoundaryBase<ParentType, RefType>(aConatiner,
|
||||
aOffset)
|
||||
{
|
||||
}
|
||||
|
||||
EditorDOMPointBase(nsIDOMNode* aDOMContainer,
|
||||
int32_t aOffset)
|
||||
: RangeBoundaryBase<ParentType, RefType>()
|
||||
{
|
||||
nsCOMPtr<nsINode> container = do_QueryInterface(aDOMContainer);
|
||||
this->Set(container, aOffset);
|
||||
}
|
||||
|
||||
/**
|
||||
* Different from RangeBoundary, aReferenceChild should be a child node
|
||||
* which you want to refer. So, set non-nullptr if offset is
|
||||
* 0 - Length() - 1. Otherwise, set nullptr, i.e., if offset is same as
|
||||
* Length().
|
||||
*/
|
||||
EditorDOMPointBase(nsINode* aContainer,
|
||||
nsIContent* aPointedNode)
|
||||
: RangeBoundaryBase<ParentType, RefType>(aContainer,
|
||||
GetRef(aPointedNode))
|
||||
{
|
||||
}
|
||||
|
||||
EditorDOMPointBase(nsINode* aConatiner,
|
||||
nsIContent* aPointedNode,
|
||||
int32_t aOffset)
|
||||
: RangeBoundaryBase<ParentType, RefType>(aConatiner,
|
||||
GetRef(aPointedNode),
|
||||
aOffset)
|
||||
{
|
||||
}
|
||||
|
||||
template<typename PT, typename RT>
|
||||
explicit EditorDOMPointBase(const RangeBoundaryBase<PT, RT>& aOther)
|
||||
: RangeBoundaryBase<ParentType, RefType>(aOther)
|
||||
{
|
||||
}
|
||||
|
||||
explicit EditorDOMPointBase(const RawRangeBoundary& aRawRangeBoundary)
|
||||
: RangeBoundaryBase<ParentType, RefType>(aRawRangeBoundary)
|
||||
{
|
||||
}
|
||||
|
||||
private:
|
||||
static nsIContent* GetRef(nsIContent* aPointedNode)
|
||||
{
|
||||
MOZ_ASSERT(aPointedNode);
|
||||
return aPointedNode ? aPointedNode->GetPreviousSibling() : nullptr;
|
||||
}
|
||||
};
|
||||
|
||||
} // namespace mozilla
|
||||
|
||||
#endif // #ifndef mozilla_EditorDOMPoint_h
|
|
@ -375,39 +375,6 @@ public:
|
|||
}
|
||||
};
|
||||
|
||||
/******************************************************************************
|
||||
* general dom point utility struct
|
||||
*****************************************************************************/
|
||||
struct MOZ_STACK_CLASS EditorDOMPoint final
|
||||
{
|
||||
nsCOMPtr<nsINode> node;
|
||||
int32_t offset;
|
||||
|
||||
EditorDOMPoint()
|
||||
: node(nullptr)
|
||||
, offset(-1)
|
||||
{}
|
||||
EditorDOMPoint(nsINode* aNode, int32_t aOffset)
|
||||
: node(aNode)
|
||||
, offset(aOffset)
|
||||
{}
|
||||
EditorDOMPoint(nsIDOMNode* aNode, int32_t aOffset)
|
||||
: node(do_QueryInterface(aNode))
|
||||
, offset(aOffset)
|
||||
{}
|
||||
|
||||
void SetPoint(nsINode* aNode, int32_t aOffset)
|
||||
{
|
||||
node = aNode;
|
||||
offset = aOffset;
|
||||
}
|
||||
void SetPoint(nsIDOMNode* aNode, int32_t aOffset)
|
||||
{
|
||||
node = do_QueryInterface(aNode);
|
||||
offset = aOffset;
|
||||
}
|
||||
};
|
||||
|
||||
class EditorUtils final
|
||||
{
|
||||
public:
|
||||
|
|
|
@ -13,6 +13,7 @@
|
|||
#include "WSRunObject.h"
|
||||
#include "mozilla/Assertions.h"
|
||||
#include "mozilla/CSSEditUtils.h"
|
||||
#include "mozilla/EditorDOMPoint.h"
|
||||
#include "mozilla/EditorUtils.h"
|
||||
#include "mozilla/HTMLEditor.h"
|
||||
#include "mozilla/MathAlgorithms.h"
|
||||
|
@ -2304,9 +2305,11 @@ HTMLEditRules::WillDeleteSelection(Selection* aSelection,
|
|||
if (startNode == stepbrother && startNode->GetAsText() &&
|
||||
sibling->GetAsText()) {
|
||||
EditorDOMPoint pt = JoinNodesSmart(*sibling, *startNode->AsContent());
|
||||
NS_ENSURE_STATE(pt.node);
|
||||
if (NS_WARN_IF(!pt.IsSet())) {
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
// Fix up selection
|
||||
rv = aSelection->Collapse(pt.node, pt.offset);
|
||||
rv = aSelection->Collapse(pt.Container(), pt.Offset());
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
}
|
||||
rv = InsertBRIfNeeded(aSelection);
|
||||
|
@ -2374,8 +2377,10 @@ HTMLEditRules::WillDeleteSelection(Selection* aSelection,
|
|||
// Put selection at edge of block and we are done.
|
||||
NS_ENSURE_STATE(leafNode);
|
||||
EditorDOMPoint newSel = GetGoodSelPointForNode(*leafNode, aAction);
|
||||
NS_ENSURE_STATE(newSel.node);
|
||||
aSelection->Collapse(newSel.node, newSel.offset);
|
||||
if (NS_WARN_IF(!newSel.IsSet())) {
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
aSelection->Collapse(newSel.Container(), newSel.Offset());
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
@ -2563,9 +2568,11 @@ HTMLEditRules::WillDeleteSelection(Selection* aSelection,
|
|||
NS_ENSURE_STATE(mHTMLEditor);
|
||||
EditorDOMPoint pt =
|
||||
mHTMLEditor->JoinNodeDeep(*leftParent, *rightParent);
|
||||
NS_ENSURE_STATE(pt.node);
|
||||
if (NS_WARN_IF(!pt.IsSet())) {
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
// Fix up selection
|
||||
rv = aSelection->Collapse(pt.node, pt.offset);
|
||||
rv = aSelection->Collapse(pt.Container(), pt.Offset());
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
return NS_OK;
|
||||
}
|
||||
|
@ -2772,19 +2779,23 @@ HTMLEditRules::GetGoodSelPointForNode(nsINode& aNode,
|
|||
aAction == nsIEditor::ePreviousWord ||
|
||||
aAction == nsIEditor::eToBeginningOfLine);
|
||||
|
||||
NS_ENSURE_TRUE(mHTMLEditor, EditorDOMPoint());
|
||||
if (NS_WARN_IF(!mHTMLEditor)) {
|
||||
return EditorDOMPoint();
|
||||
}
|
||||
if (aNode.GetAsText() || mHTMLEditor->IsContainer(&aNode) ||
|
||||
NS_WARN_IF(!aNode.GetParentNode())) {
|
||||
return EditorDOMPoint(&aNode, isPreviousAction ? aNode.Length() : 0);
|
||||
}
|
||||
|
||||
EditorDOMPoint ret;
|
||||
ret.node = aNode.GetParentNode();
|
||||
ret.offset = ret.node ? ret.node->IndexOf(&aNode) : -1;
|
||||
NS_ENSURE_TRUE(mHTMLEditor, EditorDOMPoint());
|
||||
if (NS_WARN_IF(!mHTMLEditor) ||
|
||||
NS_WARN_IF(!aNode.IsContent())) {
|
||||
return EditorDOMPoint();
|
||||
}
|
||||
|
||||
EditorDOMPoint ret(aNode.GetParentNode(), aNode.AsContent());
|
||||
if ((!aNode.IsHTMLElement(nsGkAtoms::br) ||
|
||||
mHTMLEditor->IsVisibleBRElement(&aNode)) && isPreviousAction) {
|
||||
ret.offset++;
|
||||
ret.AdvanceOffset();
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
@ -3071,7 +3082,7 @@ HTMLEditRules::TryToJoinBlocks(nsIContent& aLeftNode,
|
|||
rightBlock->NodeInfo()->NameAtom()) {
|
||||
// Nodes are same type. merge them.
|
||||
EditorDOMPoint pt = JoinNodesSmart(*leftBlock, *rightBlock);
|
||||
if (pt.node && mergeLists) {
|
||||
if (pt.IsSet() && mergeLists) {
|
||||
RefPtr<Element> newBlock =
|
||||
ConvertListType(rightBlock, existingList, nsGkAtoms::li);
|
||||
}
|
||||
|
@ -5164,7 +5175,7 @@ HTMLEditRules::CheckForEmptyBlock(nsINode* aStartNode,
|
|||
htmlEditor->GetNextNode(blockParent, offset + 1, child, true);
|
||||
if (nextNode) {
|
||||
EditorDOMPoint pt = GetGoodSelPointForNode(*nextNode, aAction);
|
||||
nsresult rv = aSelection->Collapse(pt.node, pt.offset);
|
||||
nsresult rv = aSelection->Collapse(pt.Container(), pt.Offset());
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
} else {
|
||||
// Adjust selection to be right after it.
|
||||
|
@ -5181,7 +5192,7 @@ HTMLEditRules::CheckForEmptyBlock(nsINode* aStartNode,
|
|||
true);
|
||||
if (priorNode) {
|
||||
EditorDOMPoint pt = GetGoodSelPointForNode(*priorNode, aAction);
|
||||
nsresult rv = aSelection->Collapse(pt.node, pt.offset);
|
||||
nsresult rv = aSelection->Collapse(pt.Container(), pt.Offset());
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
} else {
|
||||
nsresult rv = aSelection->Collapse(blockParent, offset + 1);
|
||||
|
@ -5853,22 +5864,27 @@ HTMLEditRules::PromoteRange(nsRange& aRange,
|
|||
// This is tricky. The basic idea is to push out the range endpoints to
|
||||
// truly enclose the blocks that we will affect.
|
||||
|
||||
EditorDOMPoint opStart =
|
||||
GetPromotedPoint(kStart, *startNode, startOffset, aOperationType);
|
||||
EditorDOMPoint opEnd =
|
||||
GetPromotedPoint(kEnd, *endNode, endOffset, aOperationType);
|
||||
|
||||
// Make sure that the new range ends up to be in the editable section.
|
||||
// XXX Looks like that this check wastes the time. Perhaps, we should
|
||||
// implement a method which checks both two DOM points in the editor
|
||||
// root.
|
||||
EditorDOMPoint startPoint =
|
||||
GetPromotedPoint(kStart, *startNode, startOffset, aOperationType);
|
||||
if (!htmlEditor->IsDescendantOfEditorRoot(
|
||||
EditorBase::GetNodeAtRangeOffsetPoint(opStart.node, opStart.offset)) ||
|
||||
!htmlEditor->IsDescendantOfEditorRoot(
|
||||
EditorBase::GetNodeAtRangeOffsetPoint(opEnd.node, opEnd.offset - 1))) {
|
||||
EditorBase::GetNodeAtRangeOffsetPoint(startPoint.AsRaw()))) {
|
||||
return;
|
||||
}
|
||||
EditorDOMPoint endPoint =
|
||||
GetPromotedPoint(kEnd, *endNode, endOffset, aOperationType);
|
||||
EditorRawDOMPoint lastRawPoint(endPoint.AsRaw());
|
||||
lastRawPoint.RewindOffset();
|
||||
if (!htmlEditor->IsDescendantOfEditorRoot(
|
||||
EditorBase::GetNodeAtRangeOffsetPoint(lastRawPoint))) {
|
||||
return;
|
||||
}
|
||||
|
||||
DebugOnly<nsresult> rv =
|
||||
aRange.SetStartAndEnd(opStart.node, opStart.offset,
|
||||
opEnd.node, opEnd.offset);
|
||||
aRange.SetStartAndEnd(startPoint.AsRaw(), endPoint.AsRaw());
|
||||
MOZ_ASSERT(NS_SUCCEEDED(rv));
|
||||
}
|
||||
|
||||
|
@ -6400,14 +6416,16 @@ HTMLEditRules::GetHighestInlineParent(nsINode& aNode)
|
|||
*/
|
||||
nsresult
|
||||
HTMLEditRules::GetNodesFromPoint(
|
||||
EditorDOMPoint aPoint,
|
||||
const EditorDOMPoint& aPoint,
|
||||
EditAction aOperation,
|
||||
nsTArray<OwningNonNull<nsINode>>& outArrayOfNodes,
|
||||
TouchContent aTouchContent)
|
||||
{
|
||||
NS_ENSURE_STATE(aPoint.node);
|
||||
RefPtr<nsRange> range = new nsRange(aPoint.node);
|
||||
nsresult rv = range->SetStart(aPoint.node, aPoint.offset);
|
||||
if (NS_WARN_IF(!aPoint.IsSet())) {
|
||||
return NS_ERROR_INVALID_ARG;
|
||||
}
|
||||
RefPtr<nsRange> range = new nsRange(aPoint.Container());
|
||||
DebugOnly<nsresult> rv = range->SetStart(aPoint.Container(), aPoint.Offset());
|
||||
MOZ_ASSERT(NS_SUCCEEDED(rv));
|
||||
|
||||
// Expand the range to include adjacent inlines
|
||||
|
@ -6420,9 +6438,12 @@ HTMLEditRules::GetNodesFromPoint(
|
|||
arrayOfRanges.AppendElement(range);
|
||||
|
||||
// Use these ranges to contruct a list of nodes to act on
|
||||
rv = GetNodesForOperation(arrayOfRanges, outArrayOfNodes, aOperation,
|
||||
aTouchContent);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
nsresult rv2 =
|
||||
GetNodesForOperation(arrayOfRanges, outArrayOfNodes, aOperation,
|
||||
aTouchContent);
|
||||
if (NS_WARN_IF(NS_FAILED(rv2))) {
|
||||
return rv2;
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
@ -7325,16 +7346,22 @@ HTMLEditRules::JoinNodesSmart(nsIContent& aNodeLeft,
|
|||
{
|
||||
// Caller responsible for left and right node being the same type
|
||||
nsCOMPtr<nsINode> parent = aNodeLeft.GetParentNode();
|
||||
NS_ENSURE_TRUE(parent, EditorDOMPoint());
|
||||
if (NS_WARN_IF(!parent)) {
|
||||
return EditorDOMPoint();
|
||||
}
|
||||
int32_t parOffset = parent->IndexOf(&aNodeLeft);
|
||||
nsCOMPtr<nsINode> rightParent = aNodeRight.GetParentNode();
|
||||
|
||||
// If they don't have the same parent, first move the right node to after the
|
||||
// left one
|
||||
if (parent != rightParent) {
|
||||
NS_ENSURE_TRUE(mHTMLEditor, EditorDOMPoint());
|
||||
if (NS_WARN_IF(!mHTMLEditor)) {
|
||||
return EditorDOMPoint();
|
||||
}
|
||||
nsresult rv = mHTMLEditor->MoveNode(&aNodeRight, parent, parOffset);
|
||||
NS_ENSURE_SUCCESS(rv, EditorDOMPoint());
|
||||
if (NS_WARN_IF(NS_FAILED(rv))) {
|
||||
return EditorDOMPoint();
|
||||
}
|
||||
}
|
||||
|
||||
EditorDOMPoint ret(&aNodeRight, aNodeLeft.Length());
|
||||
|
@ -7343,23 +7370,37 @@ HTMLEditRules::JoinNodesSmart(nsIContent& aNodeLeft,
|
|||
if (HTMLEditUtils::IsList(&aNodeLeft) || aNodeLeft.GetAsText()) {
|
||||
// For lists, merge shallow (wouldn't want to combine list items)
|
||||
nsresult rv = mHTMLEditor->JoinNodes(aNodeLeft, aNodeRight);
|
||||
NS_ENSURE_SUCCESS(rv, EditorDOMPoint());
|
||||
if (NS_WARN_IF(NS_FAILED(rv))) {
|
||||
return EditorDOMPoint();
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
// Remember the last left child, and first right child
|
||||
NS_ENSURE_TRUE(mHTMLEditor, EditorDOMPoint());
|
||||
if (NS_WARN_IF(!mHTMLEditor)) {
|
||||
return EditorDOMPoint();
|
||||
}
|
||||
nsCOMPtr<nsIContent> lastLeft = mHTMLEditor->GetLastEditableChild(aNodeLeft);
|
||||
NS_ENSURE_TRUE(lastLeft, EditorDOMPoint());
|
||||
if (NS_WARN_IF(!lastLeft)) {
|
||||
return EditorDOMPoint();
|
||||
}
|
||||
|
||||
NS_ENSURE_TRUE(mHTMLEditor, EditorDOMPoint());
|
||||
if (NS_WARN_IF(!mHTMLEditor)) {
|
||||
return EditorDOMPoint();
|
||||
}
|
||||
nsCOMPtr<nsIContent> firstRight = mHTMLEditor->GetFirstEditableChild(aNodeRight);
|
||||
NS_ENSURE_TRUE(firstRight, EditorDOMPoint());
|
||||
if (NS_WARN_IF(!firstRight)) {
|
||||
return EditorDOMPoint();
|
||||
}
|
||||
|
||||
// For list items, divs, etc., merge smart
|
||||
NS_ENSURE_TRUE(mHTMLEditor, EditorDOMPoint());
|
||||
if (NS_WARN_IF(!mHTMLEditor)) {
|
||||
return EditorDOMPoint();
|
||||
}
|
||||
nsresult rv = mHTMLEditor->JoinNodes(aNodeLeft, aNodeRight);
|
||||
NS_ENSURE_SUCCESS(rv, EditorDOMPoint());
|
||||
if (NS_WARN_IF(NS_FAILED(rv))) {
|
||||
return EditorDOMPoint();
|
||||
}
|
||||
|
||||
if (lastLeft && firstRight && mHTMLEditor &&
|
||||
mHTMLEditor->AreNodesSameType(lastLeft, firstRight) &&
|
||||
|
@ -7367,7 +7408,9 @@ HTMLEditRules::JoinNodesSmart(nsIContent& aNodeLeft,
|
|||
(lastLeft->IsElement() && firstRight->IsElement() &&
|
||||
mHTMLEditor->mCSSEditUtils->ElementsSameStyle(lastLeft->AsElement(),
|
||||
firstRight->AsElement())))) {
|
||||
NS_ENSURE_TRUE(mHTMLEditor, EditorDOMPoint());
|
||||
if (NS_WARN_IF(!mHTMLEditor)) {
|
||||
return EditorDOMPoint();
|
||||
}
|
||||
return JoinNodesSmart(*lastLeft, *firstRight);
|
||||
}
|
||||
return ret;
|
||||
|
@ -7838,7 +7881,7 @@ HTMLEditRules::AdjustSelection(Selection* aSelection,
|
|||
return NS_OK;
|
||||
}
|
||||
EditorDOMPoint pt = GetGoodSelPointForNode(*nearNode, aAction);
|
||||
rv = aSelection->Collapse(pt.node, pt.offset);
|
||||
rv = aSelection->Collapse(pt.Container(), pt.Offset());
|
||||
if (NS_WARN_IF(NS_FAILED(rv))) {
|
||||
return rv;
|
||||
}
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
#define HTMLEditRules_h
|
||||
|
||||
#include "TypeInState.h"
|
||||
#include "mozilla/EditorDOMPoint.h" // for EditorDOMPoint
|
||||
#include "mozilla/SelectionState.h"
|
||||
#include "mozilla/TextEditRules.h"
|
||||
#include "nsCOMPtr.h"
|
||||
|
@ -32,7 +33,6 @@ class EditActionResult;
|
|||
class HTMLEditor;
|
||||
class RulesInfo;
|
||||
class TextEditor;
|
||||
struct EditorDOMPoint;
|
||||
namespace dom {
|
||||
class Element;
|
||||
class Selection;
|
||||
|
@ -189,8 +189,8 @@ protected:
|
|||
*/
|
||||
nsresult InsertBRIfNeededInternal(nsINode& aNode, bool aInsertMozBR);
|
||||
|
||||
mozilla::EditorDOMPoint GetGoodSelPointForNode(nsINode& aNode,
|
||||
nsIEditor::EDirection aAction);
|
||||
EditorDOMPoint GetGoodSelPointForNode(nsINode& aNode,
|
||||
nsIEditor::EDirection aAction);
|
||||
|
||||
/**
|
||||
* TryToJoinBlocks() tries to join two block elements. The right element is
|
||||
|
@ -355,7 +355,7 @@ protected:
|
|||
void GetChildNodesForOperation(
|
||||
nsINode& aNode,
|
||||
nsTArray<OwningNonNull<nsINode>>& outArrayOfNodes);
|
||||
nsresult GetNodesFromPoint(EditorDOMPoint aPoint,
|
||||
nsresult GetNodesFromPoint(const EditorDOMPoint& aPoint,
|
||||
EditAction aOperation,
|
||||
nsTArray<OwningNonNull<nsINode>>& outArrayOfNodes,
|
||||
TouchContent aTouchContent);
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
|
||||
#include "mozilla/Assertions.h"
|
||||
#include "mozilla/Casting.h"
|
||||
#include "mozilla/EditorDOMPoint.h"
|
||||
#include "mozilla/EditorUtils.h"
|
||||
#include "mozilla/HTMLEditor.h"
|
||||
#include "mozilla/mozalloc.h"
|
||||
|
@ -650,8 +651,7 @@ WSRunObject::GetWSNodes()
|
|||
mLastNBSPOffset = pos;
|
||||
}
|
||||
}
|
||||
start.node = textNode;
|
||||
start.offset = pos;
|
||||
start.Set(textNode, pos);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -661,8 +661,8 @@ WSRunObject::GetWSNodes()
|
|||
nsCOMPtr<nsIContent> priorNode = GetPreviousWSNode(start, wsBoundingParent);
|
||||
if (priorNode) {
|
||||
if (IsBlockNode(priorNode)) {
|
||||
mStartNode = start.node;
|
||||
mStartOffset = start.offset;
|
||||
mStartNode = start.Container();
|
||||
mStartOffset = start.Offset();
|
||||
mStartReason = WSType::otherBlock;
|
||||
mStartReasonNode = priorNode;
|
||||
} else if (priorNode->IsNodeOfType(nsINode::eTEXT) &&
|
||||
|
@ -678,7 +678,7 @@ WSRunObject::GetWSNodes()
|
|||
if (len < 1) {
|
||||
// Zero length text node. Set start point to it
|
||||
// so we can get past it!
|
||||
start.SetPoint(priorNode, 0);
|
||||
start.Set(priorNode, 0);
|
||||
} else {
|
||||
for (int32_t pos = len - 1; pos >= 0; pos--) {
|
||||
// sanity bounds check the char position. bug 136165
|
||||
|
@ -704,14 +704,14 @@ WSRunObject::GetWSNodes()
|
|||
mLastNBSPOffset = pos;
|
||||
}
|
||||
}
|
||||
start.SetPoint(textNode, pos);
|
||||
start.Set(textNode, pos);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// it's a break or a special node, like <img>, that is not a block and not
|
||||
// a break but still serves as a terminator to ws runs.
|
||||
mStartNode = start.node;
|
||||
mStartOffset = start.offset;
|
||||
mStartNode = start.Container();
|
||||
mStartOffset = start.Offset();
|
||||
if (TextEditUtils::IsBreak(priorNode)) {
|
||||
mStartReason = WSType::br;
|
||||
} else {
|
||||
|
@ -721,8 +721,8 @@ WSRunObject::GetWSNodes()
|
|||
}
|
||||
} else {
|
||||
// no prior node means we exhausted wsBoundingParent
|
||||
mStartNode = start.node;
|
||||
mStartOffset = start.offset;
|
||||
mStartNode = start.Container();
|
||||
mStartOffset = start.Offset();
|
||||
mStartReason = WSType::thisBlock;
|
||||
mStartReasonNode = wsBoundingParent;
|
||||
}
|
||||
|
@ -759,7 +759,7 @@ WSRunObject::GetWSNodes()
|
|||
mFirstNBSPOffset = pos;
|
||||
}
|
||||
}
|
||||
end.SetPoint(textNode, pos + 1);
|
||||
end.Set(textNode, pos + 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -770,8 +770,8 @@ WSRunObject::GetWSNodes()
|
|||
if (nextNode) {
|
||||
if (IsBlockNode(nextNode)) {
|
||||
// we encountered a new block. therefore no more ws.
|
||||
mEndNode = end.node;
|
||||
mEndOffset = end.offset;
|
||||
mEndNode = end.Container();
|
||||
mEndOffset = end.Offset();
|
||||
mEndReason = WSType::otherBlock;
|
||||
mEndReasonNode = nextNode;
|
||||
} else if (nextNode->IsNodeOfType(nsINode::eTEXT) &&
|
||||
|
@ -787,7 +787,7 @@ WSRunObject::GetWSNodes()
|
|||
if (len < 1) {
|
||||
// Zero length text node. Set end point to it
|
||||
// so we can get past it!
|
||||
end.SetPoint(textNode, 0);
|
||||
end.Set(textNode, 0);
|
||||
} else {
|
||||
for (uint32_t pos = 0; pos < len; pos++) {
|
||||
// sanity bounds check the char position. bug 136165
|
||||
|
@ -813,15 +813,15 @@ WSRunObject::GetWSNodes()
|
|||
mFirstNBSPOffset = pos;
|
||||
}
|
||||
}
|
||||
end.SetPoint(textNode, pos + 1);
|
||||
end.Set(textNode, pos + 1);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// we encountered a break or a special node, like <img>,
|
||||
// that is not a block and not a break but still
|
||||
// serves as a terminator to ws runs.
|
||||
mEndNode = end.node;
|
||||
mEndOffset = end.offset;
|
||||
mEndNode = end.Container();
|
||||
mEndOffset = end.Offset();
|
||||
if (TextEditUtils::IsBreak(nextNode)) {
|
||||
mEndReason = WSType::br;
|
||||
} else {
|
||||
|
@ -831,8 +831,8 @@ WSRunObject::GetWSNodes()
|
|||
}
|
||||
} else {
|
||||
// no next node means we exhausted wsBoundingParent
|
||||
mEndNode = end.node;
|
||||
mEndOffset = end.offset;
|
||||
mEndNode = end.Container();
|
||||
mEndOffset = end.Offset();
|
||||
mEndReason = WSType::thisBlock;
|
||||
mEndReasonNode = wsBoundingParent;
|
||||
}
|
||||
|
@ -1033,35 +1033,40 @@ WSRunObject::GetPreviousWSNodeInner(nsINode* aStartNode,
|
|||
}
|
||||
|
||||
nsIContent*
|
||||
WSRunObject::GetPreviousWSNode(EditorDOMPoint aPoint,
|
||||
WSRunObject::GetPreviousWSNode(const EditorDOMPoint& aPoint,
|
||||
nsINode* aBlockParent)
|
||||
{
|
||||
// Can't really recycle various getnext/prior routines because we
|
||||
// have special needs here. Need to step into inline containers but
|
||||
// not block containers.
|
||||
MOZ_ASSERT(aPoint.node && aBlockParent);
|
||||
MOZ_ASSERT(aPoint.IsSet() && aBlockParent);
|
||||
|
||||
if (aPoint.node->NodeType() == nsIDOMNode::TEXT_NODE) {
|
||||
return GetPreviousWSNodeInner(aPoint.node, aBlockParent);
|
||||
if (aPoint.Container()->NodeType() == nsIDOMNode::TEXT_NODE) {
|
||||
return GetPreviousWSNodeInner(aPoint.Container(), aBlockParent);
|
||||
}
|
||||
if (!mHTMLEditor->IsContainer(aPoint.node)) {
|
||||
return GetPreviousWSNodeInner(aPoint.node, aBlockParent);
|
||||
if (!mHTMLEditor->IsContainer(aPoint.Container())) {
|
||||
return GetPreviousWSNodeInner(aPoint.Container(), aBlockParent);
|
||||
}
|
||||
|
||||
if (!aPoint.offset) {
|
||||
if (aPoint.node == aBlockParent) {
|
||||
if (!aPoint.Offset()) {
|
||||
if (aPoint.Container() == aBlockParent) {
|
||||
// We are at start of the block.
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
// We are at start of non-block container
|
||||
return GetPreviousWSNodeInner(aPoint.node, aBlockParent);
|
||||
return GetPreviousWSNodeInner(aPoint.Container(), aBlockParent);
|
||||
}
|
||||
|
||||
if (NS_WARN_IF(!aPoint.Container()->IsContent())) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
nsCOMPtr<nsIContent> priorNode = aPoint.GetPreviousSiblingOfChildAtOffset();
|
||||
if (NS_WARN_IF(!priorNode)) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
nsCOMPtr<nsIContent> startContent = do_QueryInterface(aPoint.node);
|
||||
NS_ENSURE_TRUE(startContent, nullptr);
|
||||
nsCOMPtr<nsIContent> priorNode = startContent->GetChildAt(aPoint.offset - 1);
|
||||
NS_ENSURE_TRUE(priorNode, nullptr);
|
||||
// We have a prior node. If it's a block, return it.
|
||||
if (IsBlockNode(priorNode)) {
|
||||
return priorNode;
|
||||
|
@ -1117,33 +1122,34 @@ WSRunObject::GetNextWSNodeInner(nsINode* aStartNode,
|
|||
}
|
||||
|
||||
nsIContent*
|
||||
WSRunObject::GetNextWSNode(EditorDOMPoint aPoint,
|
||||
WSRunObject::GetNextWSNode(const EditorDOMPoint& aPoint,
|
||||
nsINode* aBlockParent)
|
||||
{
|
||||
// Can't really recycle various getnext/prior routines because we have
|
||||
// special needs here. Need to step into inline containers but not block
|
||||
// containers.
|
||||
MOZ_ASSERT(aPoint.node && aBlockParent);
|
||||
MOZ_ASSERT(aPoint.IsSet() && aBlockParent);
|
||||
|
||||
if (aPoint.node->NodeType() == nsIDOMNode::TEXT_NODE) {
|
||||
return GetNextWSNodeInner(aPoint.node, aBlockParent);
|
||||
if (aPoint.Container()->NodeType() == nsIDOMNode::TEXT_NODE) {
|
||||
return GetNextWSNodeInner(aPoint.Container(), aBlockParent);
|
||||
}
|
||||
if (!mHTMLEditor->IsContainer(aPoint.node)) {
|
||||
return GetNextWSNodeInner(aPoint.node, aBlockParent);
|
||||
if (!mHTMLEditor->IsContainer(aPoint.Container())) {
|
||||
return GetNextWSNodeInner(aPoint.Container(), aBlockParent);
|
||||
}
|
||||
|
||||
nsCOMPtr<nsIContent> startContent = do_QueryInterface(aPoint.node);
|
||||
NS_ENSURE_TRUE(startContent, nullptr);
|
||||
if (NS_WARN_IF(!aPoint.Container()->IsContent())) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
nsCOMPtr<nsIContent> nextNode = startContent->GetChildAt(aPoint.offset);
|
||||
nsCOMPtr<nsIContent> nextNode = aPoint.GetChildAtOffset();
|
||||
if (!nextNode) {
|
||||
if (aPoint.node == aBlockParent) {
|
||||
if (aPoint.Container() == aBlockParent) {
|
||||
// We are at end of the block.
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
// We are at end of non-block container
|
||||
return GetNextWSNodeInner(aPoint.node, aBlockParent);
|
||||
return GetNextWSNodeInner(aPoint.Container(), aBlockParent);
|
||||
}
|
||||
|
||||
// We have a next node. If it's a block, return it.
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
#include "nscore.h"
|
||||
#include "mozilla/Attributes.h"
|
||||
#include "mozilla/dom/Text.h"
|
||||
#include "mozilla/EditorDOMPoint.h" // for EditorDOMPoint
|
||||
|
||||
class nsIDOMNode;
|
||||
|
||||
|
@ -19,7 +20,6 @@ namespace mozilla {
|
|||
|
||||
class HTMLEditor;
|
||||
class HTMLEditRules;
|
||||
struct EditorDOMPoint;
|
||||
|
||||
// class WSRunObject represents the entire whitespace situation
|
||||
// around a given point. It collects up a list of nodes that contain
|
||||
|
@ -322,9 +322,11 @@ protected:
|
|||
void MakeSingleWSRun(WSType aType);
|
||||
nsIContent* GetPreviousWSNodeInner(nsINode* aStartNode,
|
||||
nsINode* aBlockParent);
|
||||
nsIContent* GetPreviousWSNode(EditorDOMPoint aPoint, nsINode* aBlockParent);
|
||||
nsIContent* GetPreviousWSNode(const EditorDOMPoint& aPoint,
|
||||
nsINode* aBlockParent);
|
||||
nsIContent* GetNextWSNodeInner(nsINode* aStartNode, nsINode* aBlockParent);
|
||||
nsIContent* GetNextWSNode(EditorDOMPoint aPoint, nsINode* aBlockParent);
|
||||
nsIContent* GetNextWSNode(const EditorDOMPoint& aPoint,
|
||||
nsINode* aBlockParent);
|
||||
nsresult PrepareToDeleteRangePriv(WSRunObject* aEndObject);
|
||||
nsresult PrepareToSplitAcrossBlocksPriv();
|
||||
nsresult DeleteChars(nsINode* aStartNode, int32_t aStartOffset,
|
||||
|
|
|
@ -22,6 +22,7 @@ EXPORTS.mozilla += [
|
|||
'CSSEditUtils.h',
|
||||
'EditorBase.h',
|
||||
'EditorController.h',
|
||||
'EditorDOMPoint.h',
|
||||
'EditorUtils.h',
|
||||
'EditTransactionBase.h',
|
||||
'HTMLEditor.h',
|
||||
|
|
|
@ -0,0 +1,24 @@
|
|||
<style type="text/css">
|
||||
#container {
|
||||
height: 300px;
|
||||
width: 300px;
|
||||
}
|
||||
#box {
|
||||
height: 100px;
|
||||
width: 100px;
|
||||
background: red;
|
||||
animation: 2s anim;
|
||||
}
|
||||
@keyframes anim {
|
||||
from {
|
||||
-moz-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 10%, 10%, 0, 1);
|
||||
}
|
||||
to {
|
||||
-moz-transform: matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 40%, 40%, 0, 1);
|
||||
}
|
||||
}
|
||||
|
||||
</style>
|
||||
<div id=container>
|
||||
<div id=box></div>
|
||||
</div>
|
|
@ -1,2 +1,3 @@
|
|||
load 1402183-1.html
|
||||
skip-if(!(stylo||styloVsGecko)||Android) load 1407470-1.html
|
||||
load 1405881-1.html
|
||||
|
|
|
@ -345,8 +345,12 @@ static void AddTransformFunctions(const nsCSSValueList* aList,
|
|||
matrix._32 = 0;
|
||||
matrix._33 = 1;
|
||||
matrix._34 = 0;
|
||||
matrix._41 = array->Item(5).GetFloatValue();
|
||||
matrix._42 = array->Item(6).GetFloatValue();
|
||||
matrix._41 = ProcessTranslatePart(array->Item(5), contextIfGecko,
|
||||
aPresContext, conditions,
|
||||
&aRefBox, &TransformReferenceBox::Width);
|
||||
matrix._42 = ProcessTranslatePart(array->Item(6), contextIfGecko,
|
||||
aPresContext, conditions,
|
||||
&aRefBox, &TransformReferenceBox::Height);
|
||||
matrix._43 = 0;
|
||||
matrix._44 = 1;
|
||||
aFunctions.AppendElement(TransformMatrix(matrix));
|
||||
|
@ -367,9 +371,15 @@ static void AddTransformFunctions(const nsCSSValueList* aList,
|
|||
matrix._32 = array->Item(10).GetFloatValue();
|
||||
matrix._33 = array->Item(11).GetFloatValue();
|
||||
matrix._34 = array->Item(12).GetFloatValue();
|
||||
matrix._41 = array->Item(13).GetFloatValue();
|
||||
matrix._42 = array->Item(14).GetFloatValue();
|
||||
matrix._43 = array->Item(15).GetFloatValue();
|
||||
matrix._41 = ProcessTranslatePart(array->Item(13), contextIfGecko,
|
||||
aPresContext, conditions,
|
||||
&aRefBox, &TransformReferenceBox::Width);
|
||||
matrix._42 = ProcessTranslatePart(array->Item(14), contextIfGecko,
|
||||
aPresContext, conditions,
|
||||
&aRefBox, &TransformReferenceBox::Height);
|
||||
matrix._43 = ProcessTranslatePart(array->Item(15), contextIfGecko,
|
||||
aPresContext, conditions,
|
||||
&aRefBox, nullptr);
|
||||
matrix._44 = array->Item(16).GetFloatValue();
|
||||
aFunctions.AppendElement(TransformMatrix(matrix));
|
||||
break;
|
||||
|
|
|
@ -7,23 +7,23 @@ Currently, we only use the vp8 and vp9 portion of the library, and only on x86
|
|||
based platforms. If this changes, configuration files will most likely
|
||||
need to be updated.
|
||||
|
||||
AVX2 must be disabled on Linux due to the use of yasm 1.1 on the build bots.
|
||||
AVX2 must be disabled on Linux 32 bits due to the use of yasm 1.1 on the build bots.
|
||||
Once yasm is upgraded to 1.2 or later, AVX2 code could be re-enabled.
|
||||
Add --disable-avx2 to configure on those platforms.
|
||||
|
||||
configuration files were generated as follow using the configure script:
|
||||
./configure --disable-everything --disable-protocols --disable-demuxers --disable-muxers --disable-filters --disable-programs --disable-doc --disable-parsers --enable-parser=vp8 --enable-parser=vp9 --enable-decoder=vp8 --enable-decoder=vp9 --disable-static --enable-shared --disable-debug --disable-sdl2 --disable-libxcb --disable-securetransport --disable-iconv --disable-swresample --disable-swscale --disable-avdevice --disable-avfilter --disable-avformat --disable-d3d11va --disable-dxva2 --disable-vaapi --disable-vda --disable-vdpau --disable-videotoolbox --enable-decoder=flac --enable-asm --enable-yasm
|
||||
./configure --disable-everything --disable-protocols --disable-demuxers --disable-muxers --disable-filters --disable-programs --disable-doc --disable-parsers --enable-parser=vp8 --enable-parser=vp9 --enable-decoder=vp8 --enable-decoder=vp9 --disable-static --enable-shared --disable-debug --disable-sdl2 --disable-libxcb --disable-securetransport --disable-iconv --disable-swresample --disable-swscale --disable-avdevice --disable-avfilter --disable-avformat --disable-d3d11va --disable-dxva2 --disable-vaapi --disable-vda --disable-vdpau --disable-videotoolbox --enable-decoder=flac --enable-asm --enable-x86asm
|
||||
|
||||
config*:
|
||||
replace: /HAVE_(MALLOC_H|ARC4RANDOM|LOCALTIME_R|MEMALIGN|POSIX_MEMALIGN)/d
|
||||
|
||||
config_unix32.h:
|
||||
add to configure command: --disable-asm --disable-yasm --cc='clang -m32'
|
||||
add to configure command: --disable-asm --disable-x86asm --cc='clang -m32'
|
||||
|
||||
config_android.h:
|
||||
./configure --disable-everything --disable-protocols --disable-demuxers --disable-muxers --disable-filters --disable-programs --disable-doc --disable-parsers --disable-static --enable-shared --disable-debug --disable-sdl2 --disable-libxcb --disable-securetransport --disable-iconv --disable-swresample --disable-swscale --disable-avdevice --disable-avfilter --disable-avformat --disable-d3d11va --disable-dxva2 --disable-vaapi --disable-vda --disable-vdpau --disable-videotoolbox --enable-decoder=flac --disable-asm --cross-prefix=~/.mozbuild/android-ndk-r15c/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi- --target-os=linux --arch=arm --enable-cross-compile --sysroot=~/.mozbuild/android-ndk-r15c/platforms/android-24/arch-arm
|
||||
|
||||
config_unix64.h/config_unix64.asm:
|
||||
config_unix32.h/config_unix64.h/config_unix64.asm:
|
||||
replace: s/HAVE_SYSCTL 1/HAVE_SYSCTL 0
|
||||
|
||||
config_win32/64.h/asm:
|
||||
|
|
|
@ -63,8 +63,8 @@
|
|||
%define HAVE_MIPSDSP 0
|
||||
%define HAVE_MIPSDSPR2 0
|
||||
%define HAVE_MSA 0
|
||||
%define HAVE_LOONGSON2 1
|
||||
%define HAVE_LOONGSON3 1
|
||||
%define HAVE_LOONGSON2 0
|
||||
%define HAVE_LOONGSON3 0
|
||||
%define HAVE_MMI 0
|
||||
%define HAVE_ARMV5TE_EXTERNAL 0
|
||||
%define HAVE_ARMV6_EXTERNAL 0
|
||||
|
@ -162,32 +162,33 @@
|
|||
%define HAVE_LOCAL_ALIGNED_16 1
|
||||
%define HAVE_LOCAL_ALIGNED_32 1
|
||||
%define HAVE_SIMD_ALIGN_16 1
|
||||
%define HAVE_SIMD_ALIGN_32 1
|
||||
%define HAVE_ATOMICS_GCC 1
|
||||
%define HAVE_ATOMICS_SUNCC 0
|
||||
%define HAVE_ATOMICS_WIN32 0
|
||||
%define HAVE_ATOMIC_CAS_PTR 0
|
||||
%define HAVE_ATOMIC_COMPARE_EXCHANGE 1
|
||||
%define HAVE_MACHINE_RW_BARRIER 0
|
||||
%define HAVE_MEMORYBARRIER 0
|
||||
%define HAVE_MM_EMPTY 1
|
||||
%define HAVE_RDTSC 0
|
||||
%define HAVE_SARESTART 1
|
||||
%define HAVE_SEM_TIMEDWAIT 1
|
||||
%define HAVE_SEM_TIMEDWAIT 0
|
||||
%define HAVE_SYNC_VAL_COMPARE_AND_SWAP 1
|
||||
%define HAVE_CABS 1
|
||||
%define HAVE_CEXP 1
|
||||
%define HAVE_INLINE_ASM 1
|
||||
%define HAVE_SYMVER 1
|
||||
%define HAVE_YASM 1
|
||||
%define HAVE_X86ASM 1
|
||||
%define HAVE_BIGENDIAN 0
|
||||
%define HAVE_FAST_UNALIGNED 1
|
||||
%define HAVE_ALSA_ASOUNDLIB_H 0
|
||||
%define HAVE_ALTIVEC_H 0
|
||||
%define HAVE_ARPA_INET_H 1
|
||||
%define HAVE_ASM_TYPES_H 0
|
||||
%define HAVE_CDIO_PARANOIA_H 0
|
||||
%define HAVE_CDIO_PARANOIA_PARANOIA_H 0
|
||||
%define HAVE_DISPATCH_DISPATCH_H 0
|
||||
%define HAVE_CUDA_H 0
|
||||
%define HAVE_D3D11_H 0
|
||||
%define HAVE_DISPATCH_DISPATCH_H 1
|
||||
%define HAVE_DEV_BKTR_IOCTL_BT848_H 0
|
||||
%define HAVE_DEV_BKTR_IOCTL_METEOR_H 0
|
||||
%define HAVE_DEV_IC_BT8XX_H 0
|
||||
|
@ -196,7 +197,7 @@
|
|||
%define HAVE_DIRECT_H 0
|
||||
%define HAVE_DIRENT_H 1
|
||||
%define HAVE_DLFCN_H 1
|
||||
%define HAVE_D3D11_H 0
|
||||
%define HAVE_DXGIDEBUG_H 0
|
||||
%define HAVE_DXVA_H 0
|
||||
%define HAVE_ES2_GL_H 0
|
||||
%define HAVE_GSM_H 0
|
||||
|
@ -205,12 +206,13 @@
|
|||
%define HAVE_MACHINE_IOCTL_BT848_H 0
|
||||
%define HAVE_MACHINE_IOCTL_METEOR_H 0
|
||||
%define HAVE_OPENCV2_CORE_CORE_C_H 0
|
||||
%define HAVE_OPENJPEG_2_3_OPENJPEG_H 0
|
||||
%define HAVE_OPENJPEG_2_2_OPENJPEG_H 0
|
||||
%define HAVE_OPENJPEG_2_1_OPENJPEG_H 0
|
||||
%define HAVE_OPENJPEG_2_0_OPENJPEG_H 0
|
||||
%define HAVE_OPENJPEG_1_5_OPENJPEG_H 0
|
||||
%define HAVE_OPENGL_GL3_H 0
|
||||
%define HAVE_POLL_H 1
|
||||
%define HAVE_SNDIO_H 0
|
||||
%define HAVE_SOUNDCARD_H 0
|
||||
%define HAVE_STDATOMIC_H 1
|
||||
%define HAVE_SYS_MMAN_H 1
|
||||
|
@ -259,12 +261,11 @@
|
|||
%define HAVE_TRUNCF 1
|
||||
%define HAVE_ACCESS 1
|
||||
%define HAVE_ALIGNED_MALLOC 0
|
||||
%define HAVE_CLOCK_GETTIME 0
|
||||
%define HAVE_CLOCK_GETTIME 1
|
||||
%define HAVE_CLOSESOCKET 0
|
||||
%define HAVE_COMMANDLINETOARGVW 0
|
||||
%define HAVE_COTASKMEMFREE 0
|
||||
%define HAVE_CRYPTGENRANDOM 0
|
||||
%define HAVE_DLOPEN 1
|
||||
%define HAVE_FCNTL 1
|
||||
%define HAVE_FLT_LIM 1
|
||||
%define HAVE_FORK 1
|
||||
|
@ -305,18 +306,20 @@
|
|||
%define HAVE_SYSCONF 1
|
||||
%define HAVE_SYSCTL 1
|
||||
%define HAVE_USLEEP 1
|
||||
%define HAVE_UTGETOSTYPEFROMSTRING 1
|
||||
%define HAVE_UTGETOSTYPEFROMSTRING 0
|
||||
%define HAVE_VIRTUALALLOC 0
|
||||
%define HAVE_WGLGETPROCADDRESS 0
|
||||
%define HAVE_PTHREADS 1
|
||||
%define HAVE_OS2THREADS 0
|
||||
%define HAVE_W32THREADS 0
|
||||
%define HAVE_AS_DN_DIRECTIVE 0
|
||||
%define HAVE_AS_FPU_DIRECTIVE 0
|
||||
%define HAVE_AS_FUNC 0
|
||||
%define HAVE_AS_OBJECT_ARCH 0
|
||||
%define HAVE_ASM_MOD_Q 0
|
||||
%define HAVE_ATTRIBUTE_MAY_ALIAS 1
|
||||
%define HAVE_ATTRIBUTE_PACKED 1
|
||||
%define HAVE_BLOCKS_EXTENSION 1
|
||||
%define HAVE_EBP_AVAILABLE 1
|
||||
%define HAVE_EBX_AVAILABLE 1
|
||||
%define HAVE_GNU_AS 0
|
||||
|
@ -333,6 +336,7 @@
|
|||
%define HAVE_XFORM_ASM 0
|
||||
%define HAVE_XMM_CLOBBERS 1
|
||||
%define HAVE_CONDITION_VARIABLE_PTR 0
|
||||
%define HAVE_KCMVIDEOCODECTYPE_HEVC 0
|
||||
%define HAVE_SOCKLEN_T 1
|
||||
%define HAVE_STRUCT_ADDRINFO 1
|
||||
%define HAVE_STRUCT_GROUP_SOURCE_REQ 1
|
||||
|
@ -349,42 +353,38 @@
|
|||
%define HAVE_STRUCT_V4L2_FRMIVALENUM_DISCRETE 0
|
||||
%define HAVE_ATOMICS_NATIVE 1
|
||||
%define HAVE_DOS_PATHS 0
|
||||
%define HAVE_DXVA2_LIB 0
|
||||
%define HAVE_DXVA2API_COBJ 0
|
||||
%define HAVE_LIBC_MSVCRT 0
|
||||
%define HAVE_LIBDC1394_1 0
|
||||
%define HAVE_LIBDC1394_2 0
|
||||
%define HAVE_MAKEINFO 1
|
||||
%define HAVE_MAKEINFO_HTML 1
|
||||
%define HAVE_MAKEINFO_HTML 0
|
||||
%define HAVE_MMAL_PARAMETER_VIDEO_MAX_NUM_CALLBACKS 0
|
||||
%define HAVE_PERL 1
|
||||
%define HAVE_POD2MAN 1
|
||||
%define HAVE_SDL2 0
|
||||
%define HAVE_SECTION_DATA_REL_RO 0
|
||||
%define HAVE_TEXI2HTML 0
|
||||
%define HAVE_THREADS 1
|
||||
%define HAVE_UWP 0
|
||||
%define HAVE_VAAPI_DRM 0
|
||||
%define HAVE_VAAPI_X11 0
|
||||
%define HAVE_VDPAU_X11 0
|
||||
%define HAVE_WINRT 0
|
||||
%define HAVE_XLIB 0
|
||||
%define CONFIG_BSFS 0
|
||||
%define CONFIG_DECODERS 1
|
||||
%define CONFIG_PARSERS 1
|
||||
%define CONFIG_DOC 0
|
||||
%define CONFIG_HTMLPAGES 1
|
||||
%define CONFIG_HTMLPAGES 0
|
||||
%define CONFIG_MANPAGES 1
|
||||
%define CONFIG_PODPAGES 1
|
||||
%define CONFIG_TXTPAGES 1
|
||||
%define CONFIG_AVIO_DIR_CMD_EXAMPLE 1
|
||||
%define CONFIG_AVIO_READING_EXAMPLE 1
|
||||
%define CONFIG_DECODING_ENCODING_EXAMPLE 0
|
||||
%define CONFIG_DECODE_AUDIO_EXAMPLE 1
|
||||
%define CONFIG_DECODE_VIDEO_EXAMPLE 1
|
||||
%define CONFIG_DEMUXING_DECODING_EXAMPLE 0
|
||||
%define CONFIG_ENCODE_AUDIO_EXAMPLE 1
|
||||
%define CONFIG_ENCODE_VIDEO_EXAMPLE 1
|
||||
%define CONFIG_EXTRACT_MVS_EXAMPLE 0
|
||||
%define CONFIG_FILTER_AUDIO_EXAMPLE 0
|
||||
%define CONFIG_FILTERING_AUDIO_EXAMPLE 0
|
||||
%define CONFIG_FILTERING_VIDEO_EXAMPLE 0
|
||||
%define CONFIG_HTTP_MULTICLIENT_EXAMPLE 0
|
||||
%define CONFIG_HW_DECODE_EXAMPLE 0
|
||||
%define CONFIG_METADATA_EXAMPLE 0
|
||||
%define CONFIG_MUXING_EXAMPLE 0
|
||||
%define CONFIG_QSVDEC_EXAMPLE 0
|
||||
|
@ -393,27 +393,55 @@
|
|||
%define CONFIG_SCALING_VIDEO_EXAMPLE 0
|
||||
%define CONFIG_TRANSCODE_AAC_EXAMPLE 0
|
||||
%define CONFIG_TRANSCODING_EXAMPLE 0
|
||||
%define CONFIG_AVISYNTH 0
|
||||
%define CONFIG_BZLIB 0
|
||||
%define CONFIG_CHROMAPRINT 0
|
||||
%define CONFIG_CRYSTALHD 0
|
||||
%define CONFIG_DECKLINK 0
|
||||
%define CONFIG_FREI0R 0
|
||||
%define CONFIG_GCRYPT 0
|
||||
%define CONFIG_GMP 0
|
||||
%define CONFIG_GNUTLS 0
|
||||
%define CONFIG_ALSA 0
|
||||
%define CONFIG_APPKIT 1
|
||||
%define CONFIG_AVFOUNDATION 1
|
||||
%define CONFIG_BZLIB 1
|
||||
%define CONFIG_COREIMAGE 1
|
||||
%define CONFIG_ICONV 0
|
||||
%define CONFIG_JACK 0
|
||||
%define CONFIG_LIBXCB 0
|
||||
%define CONFIG_LIBXCB_SHM 0
|
||||
%define CONFIG_LIBXCB_SHAPE 0
|
||||
%define CONFIG_LIBXCB_XFIXES 0
|
||||
%define CONFIG_LZMA 0
|
||||
%define CONFIG_SCHANNEL 0
|
||||
%define CONFIG_SDL2 0
|
||||
%define CONFIG_SECURETRANSPORT 0
|
||||
%define CONFIG_SNDIO 0
|
||||
%define CONFIG_XLIB 1
|
||||
%define CONFIG_ZLIB 1
|
||||
%define CONFIG_AVISYNTH 0
|
||||
%define CONFIG_FREI0R 0
|
||||
%define CONFIG_LIBCDIO 0
|
||||
%define CONFIG_LIBRUBBERBAND 0
|
||||
%define CONFIG_LIBVIDSTAB 0
|
||||
%define CONFIG_LIBX264 0
|
||||
%define CONFIG_LIBX265 0
|
||||
%define CONFIG_LIBXAVS 0
|
||||
%define CONFIG_LIBXVID 0
|
||||
%define CONFIG_DECKLINK 0
|
||||
%define CONFIG_LIBNDI_NEWTEK 0
|
||||
%define CONFIG_LIBFDK_AAC 0
|
||||
%define CONFIG_OPENSSL 0
|
||||
%define CONFIG_GMP 0
|
||||
%define CONFIG_LIBOPENCORE_AMRNB 0
|
||||
%define CONFIG_LIBOPENCORE_AMRWB 0
|
||||
%define CONFIG_LIBVO_AMRWBENC 0
|
||||
%define CONFIG_RKMPP 0
|
||||
%define CONFIG_LIBSMBCLIENT 0
|
||||
%define CONFIG_CHROMAPRINT 0
|
||||
%define CONFIG_GCRYPT 0
|
||||
%define CONFIG_GNUTLS 0
|
||||
%define CONFIG_JNI 0
|
||||
%define CONFIG_LADSPA 0
|
||||
%define CONFIG_LIBASS 0
|
||||
%define CONFIG_LIBBLURAY 0
|
||||
%define CONFIG_LIBBS2B 0
|
||||
%define CONFIG_LIBCACA 0
|
||||
%define CONFIG_LIBCDIO 0
|
||||
%define CONFIG_LIBCELT 0
|
||||
%define CONFIG_LIBDC1394 0
|
||||
%define CONFIG_LIBEBUR128 0
|
||||
%define CONFIG_LIBFDK_AAC 0
|
||||
%define CONFIG_LIBDRM 0
|
||||
%define CONFIG_LIBFLITE 0
|
||||
%define CONFIG_LIBFONTCONFIG 0
|
||||
%define CONFIG_LIBFREETYPE 0
|
||||
|
@ -425,18 +453,15 @@
|
|||
%define CONFIG_LIBKVAZAAR 0
|
||||
%define CONFIG_LIBMODPLUG 0
|
||||
%define CONFIG_LIBMP3LAME 0
|
||||
%define CONFIG_LIBNUT 0
|
||||
%define CONFIG_LIBOPENCORE_AMRNB 0
|
||||
%define CONFIG_LIBOPENCORE_AMRWB 0
|
||||
%define CONFIG_LIBMYSOFA 0
|
||||
%define CONFIG_LIBOPENCV 0
|
||||
%define CONFIG_LIBOPENH264 0
|
||||
%define CONFIG_LIBOPENJPEG 0
|
||||
%define CONFIG_LIBOPENMPT 0
|
||||
%define CONFIG_LIBOPUS 0
|
||||
%define CONFIG_LIBPULSE 0
|
||||
%define CONFIG_LIBRSVG 0
|
||||
%define CONFIG_LIBRTMP 0
|
||||
%define CONFIG_LIBRUBBERBAND 0
|
||||
%define CONFIG_LIBSCHROEDINGER 0
|
||||
%define CONFIG_LIBSHINE 0
|
||||
%define CONFIG_LIBSMBCLIENT 0
|
||||
%define CONFIG_LIBSNAPPY 0
|
||||
|
@ -447,52 +472,37 @@
|
|||
%define CONFIG_LIBTHEORA 0
|
||||
%define CONFIG_LIBTWOLAME 0
|
||||
%define CONFIG_LIBV4L2 0
|
||||
%define CONFIG_LIBVIDSTAB 0
|
||||
%define CONFIG_LIBVO_AMRWBENC 0
|
||||
%define CONFIG_LIBVMAF 0
|
||||
%define CONFIG_LIBVORBIS 0
|
||||
%define CONFIG_LIBVPX 0
|
||||
%define CONFIG_LIBWAVPACK 0
|
||||
%define CONFIG_LIBWEBP 0
|
||||
%define CONFIG_LIBX264 0
|
||||
%define CONFIG_LIBX265 0
|
||||
%define CONFIG_LIBXAVS 0
|
||||
%define CONFIG_LIBXCB 0
|
||||
%define CONFIG_LIBXCB_SHM 0
|
||||
%define CONFIG_LIBXCB_SHAPE 0
|
||||
%define CONFIG_LIBXCB_XFIXES 0
|
||||
%define CONFIG_LIBXVID 0
|
||||
%define CONFIG_LIBXML2 0
|
||||
%define CONFIG_LIBZIMG 0
|
||||
%define CONFIG_LIBZMQ 0
|
||||
%define CONFIG_LIBZVBI 0
|
||||
%define CONFIG_LZMA 0
|
||||
%define CONFIG_MEDIACODEC 0
|
||||
%define CONFIG_NETCDF 0
|
||||
%define CONFIG_OPENAL 0
|
||||
%define CONFIG_OPENCL 0
|
||||
%define CONFIG_OPENGL 0
|
||||
%define CONFIG_OPENSSL 0
|
||||
%define CONFIG_SCHANNEL 0
|
||||
%define CONFIG_SDL 0
|
||||
%define CONFIG_SDL2 0
|
||||
%define CONFIG_SECURETRANSPORT 0
|
||||
%define CONFIG_VIDEOTOOLBOX 0
|
||||
%define CONFIG_X11GRAB 0
|
||||
%define CONFIG_XLIB 0
|
||||
%define CONFIG_ZLIB 0
|
||||
%define CONFIG_AUDIOTOOLBOX 0
|
||||
%define CONFIG_AUDIOTOOLBOX 1
|
||||
%define CONFIG_CRYSTALHD 0
|
||||
%define CONFIG_CUDA 0
|
||||
%define CONFIG_CUVID 0
|
||||
%define CONFIG_D3D11VA 0
|
||||
%define CONFIG_DXVA2 0
|
||||
%define CONFIG_LIBMFX 0
|
||||
%define CONFIG_LIBNPP 0
|
||||
%define CONFIG_MMAL 0
|
||||
%define CONFIG_NVENC 0
|
||||
%define CONFIG_OMX 0
|
||||
%define CONFIG_VAAPI 0
|
||||
%define CONFIG_VDA 0
|
||||
%define CONFIG_VDPAU 0
|
||||
%define CONFIG_VIDEOTOOLBOX 0
|
||||
%define CONFIG_V4L2_M2M 0
|
||||
%define CONFIG_XVMC 0
|
||||
%define CONFIG_CUDA_SDK 0
|
||||
%define CONFIG_LIBNPP 0
|
||||
%define CONFIG_LIBMFX 0
|
||||
%define CONFIG_MMAL 0
|
||||
%define CONFIG_OMX 0
|
||||
%define CONFIG_FTRAPV 0
|
||||
%define CONFIG_GRAY 0
|
||||
%define CONFIG_HARDCODED_TABLES 0
|
||||
|
@ -531,16 +541,27 @@
|
|||
%define CONFIG_PIXELUTILS 0
|
||||
%define CONFIG_NETWORK 0
|
||||
%define CONFIG_RDFT 0
|
||||
%define CONFIG_AUTODETECT 0
|
||||
%define CONFIG_FONTCONFIG 0
|
||||
%define CONFIG_MEMALIGN_HACK 0
|
||||
%define CONFIG_LINUX_PERF 0
|
||||
%define CONFIG_MEMORY_POISONING 0
|
||||
%define CONFIG_NEON_CLOBBER_TEST 0
|
||||
%define CONFIG_OSSFUZZ 0
|
||||
%define CONFIG_PIC 1
|
||||
%define CONFIG_POD2MAN 1
|
||||
%define CONFIG_RAISE_MAJOR 0
|
||||
%define CONFIG_THUMB 0
|
||||
%define CONFIG_VALGRIND_BACKTRACE 0
|
||||
%define CONFIG_XMM_CLOBBER_TEST 0
|
||||
%define CONFIG_BSFS 1
|
||||
%define CONFIG_DECODERS 1
|
||||
%define CONFIG_ENCODERS 0
|
||||
%define CONFIG_HWACCELS 0
|
||||
%define CONFIG_PARSERS 1
|
||||
%define CONFIG_INDEVS 0
|
||||
%define CONFIG_OUTDEVS 0
|
||||
%define CONFIG_FILTERS 0
|
||||
%define CONFIG_DEMUXERS 0
|
||||
%define CONFIG_MUXERS 0
|
||||
%define CONFIG_PROTOCOLS 0
|
||||
%define CONFIG_AANDCTTABLES 0
|
||||
%define CONFIG_AC3DSP 0
|
||||
%define CONFIG_AUDIO_FRAME_QUEUE 0
|
||||
|
@ -556,21 +577,24 @@
|
|||
%define CONFIG_FDCTDSP 0
|
||||
%define CONFIG_FLACDSP 1
|
||||
%define CONFIG_FMTCONVERT 0
|
||||
%define CONFIG_FRAME_THREAD_ENCODER 0
|
||||
%define CONFIG_G722DSP 0
|
||||
%define CONFIG_GOLOMB 1
|
||||
%define CONFIG_GOLOMB 0
|
||||
%define CONFIG_GPLV3 0
|
||||
%define CONFIG_H263DSP 0
|
||||
%define CONFIG_H264CHROMA 0
|
||||
%define CONFIG_H264DSP 0
|
||||
%define CONFIG_H264PARSE 0
|
||||
%define CONFIG_H264PRED 1
|
||||
%define CONFIG_H264QPEL 0
|
||||
%define CONFIG_HEVCPARSE 0
|
||||
%define CONFIG_HPELDSP 0
|
||||
%define CONFIG_HUFFMAN 0
|
||||
%define CONFIG_HUFFYUVDSP 0
|
||||
%define CONFIG_HUFFYUVENCDSP 0
|
||||
%define CONFIG_IDCTDSP 0
|
||||
%define CONFIG_IIRFILTER 0
|
||||
%define CONFIG_IMDCT15 0
|
||||
%define CONFIG_MDCT15 0
|
||||
%define CONFIG_INTRAX8 0
|
||||
%define CONFIG_ISO_MEDIA 0
|
||||
%define CONFIG_IVIDSP 0
|
||||
|
@ -579,12 +603,14 @@
|
|||
%define CONFIG_LIBX262 0
|
||||
%define CONFIG_LLAUDDSP 0
|
||||
%define CONFIG_LLVIDDSP 0
|
||||
%define CONFIG_LLVIDENCDSP 0
|
||||
%define CONFIG_LPC 0
|
||||
%define CONFIG_LZF 0
|
||||
%define CONFIG_ME_CMP 0
|
||||
%define CONFIG_MPEG_ER 0
|
||||
%define CONFIG_MPEGAUDIO 0
|
||||
%define CONFIG_MPEGAUDIODSP 0
|
||||
%define CONFIG_MPEGAUDIOHEADER 0
|
||||
%define CONFIG_MPEGVIDEO 0
|
||||
%define CONFIG_MPEGVIDEOENC 0
|
||||
%define CONFIG_MSS34DSP 0
|
||||
|
@ -606,13 +632,13 @@
|
|||
%define CONFIG_TEXTUREDSP 0
|
||||
%define CONFIG_TEXTUREDSPENC 0
|
||||
%define CONFIG_TPELDSP 0
|
||||
%define CONFIG_VAAPI_1 0
|
||||
%define CONFIG_VAAPI_ENCODE 0
|
||||
%define CONFIG_VC1DSP 0
|
||||
%define CONFIG_VIDEODSP 1
|
||||
%define CONFIG_VP3DSP 0
|
||||
%define CONFIG_VP56DSP 0
|
||||
%define CONFIG_VP8DSP 1
|
||||
%define CONFIG_VT_BT2020 0
|
||||
%define CONFIG_WMA_FREQS 0
|
||||
%define CONFIG_WMV2DSP 0
|
||||
%define CONFIG_NULL_BSF 1
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
/* Automatically generated by configure - do not modify! */
|
||||
#ifndef FFMPEG_CONFIG_H
|
||||
#define FFMPEG_CONFIG_H
|
||||
#define FFMPEG_CONFIGURATION "--disable-everything --disable-protocols --disable-demuxers --disable-muxers --disable-filters --disable-programs --disable-doc --disable-parsers --enable-parser=vp8 --enable-parser=vp9 --enable-decoder=vp8 --enable-decoder=vp9 --disable-static --enable-shared --disable-debug --disable-sdl --disable-libxcb --disable-securetransport --disable-iconv --disable-swresample --disable-swscale --disable-avdevice --disable-avfilter --disable-avformat --disable-d3d11va --disable-dxva2 --disable-vaapi --disable-vda --disable-vdpau --disable-videotoolbox --enable-asm --enable-yasm"
|
||||
#define FFMPEG_CONFIGURATION "--disable-everything --disable-protocols --disable-demuxers --disable-muxers --disable-filters --disable-programs --disable-doc --disable-parsers --enable-parser=vp8 --enable-parser=vp9 --enable-decoder=vp8 --enable-decoder=vp9 --disable-static --enable-shared --disable-debug --disable-sdl2 --disable-libxcb --disable-securetransport --disable-iconv --disable-swresample --disable-swscale --disable-avdevice --disable-avfilter --disable-avformat --disable-d3d11va --disable-dxva2 --disable-vaapi --disable-vdpau --disable-videotoolbox --enable-decoder=flac --enable-asm --enable-x86asm"
|
||||
#define FFMPEG_LICENSE "LGPL version 2.1 or later"
|
||||
#define CONFIG_THIS_YEAR 2016
|
||||
#define CONFIG_THIS_YEAR 2017
|
||||
#define FFMPEG_DATADIR "/usr/local/share/ffmpeg"
|
||||
#define AVCONV_DATADIR "/usr/local/share/ffmpeg"
|
||||
#define CC_IDENT "Apple LLVM version 7.0.2 (clang-700.1.81)"
|
||||
#define CC_IDENT "Apple LLVM version 9.0.0 (clang-900.0.38)"
|
||||
#define av_restrict restrict
|
||||
#define EXTERN_PREFIX "_"
|
||||
#define EXTERN_ASM _
|
||||
|
@ -79,8 +79,8 @@
|
|||
#define HAVE_MIPSDSP 0
|
||||
#define HAVE_MIPSDSPR2 0
|
||||
#define HAVE_MSA 0
|
||||
#define HAVE_LOONGSON2 1
|
||||
#define HAVE_LOONGSON3 1
|
||||
#define HAVE_LOONGSON2 0
|
||||
#define HAVE_LOONGSON3 0
|
||||
#define HAVE_MMI 0
|
||||
#define HAVE_ARMV5TE_EXTERNAL 0
|
||||
#define HAVE_ARMV6_EXTERNAL 0
|
||||
|
@ -178,33 +178,33 @@
|
|||
#define HAVE_LOCAL_ALIGNED_16 1
|
||||
#define HAVE_LOCAL_ALIGNED_32 1
|
||||
#define HAVE_SIMD_ALIGN_16 1
|
||||
#define HAVE_SIMD_ALIGN_32 1
|
||||
#define HAVE_ATOMICS_GCC 1
|
||||
#define HAVE_ATOMICS_SUNCC 0
|
||||
#define HAVE_ATOMICS_WIN32 0
|
||||
#define HAVE_ATOMIC_CAS_PTR 0
|
||||
#define HAVE_ATOMIC_COMPARE_EXCHANGE 1
|
||||
#define HAVE_MACHINE_RW_BARRIER 0
|
||||
#define HAVE_MEMORYBARRIER 0
|
||||
#define HAVE_MM_EMPTY 1
|
||||
#define HAVE_RDTSC 0
|
||||
#define HAVE_SARESTART 1
|
||||
#define HAVE_SEM_TIMEDWAIT 1
|
||||
#define HAVE_SEM_TIMEDWAIT 0
|
||||
#define HAVE_SYNC_VAL_COMPARE_AND_SWAP 1
|
||||
#define HAVE_CABS 1
|
||||
#define HAVE_CEXP 1
|
||||
#define HAVE_INLINE_ASM 1
|
||||
#define HAVE_SYMVER 1
|
||||
#define HAVE_YASM 1
|
||||
#define HAVE_X86ASM 1
|
||||
#define HAVE_BIGENDIAN 0
|
||||
#define HAVE_FAST_UNALIGNED 1
|
||||
#define HAVE_INCOMPATIBLE_LIBAV_ABI 0
|
||||
#define HAVE_ALSA_ASOUNDLIB_H 0
|
||||
#define HAVE_ALTIVEC_H 0
|
||||
#define HAVE_ARPA_INET_H 1
|
||||
#define HAVE_ASM_TYPES_H 0
|
||||
#define HAVE_CDIO_PARANOIA_H 0
|
||||
#define HAVE_CDIO_PARANOIA_PARANOIA_H 0
|
||||
#define HAVE_DISPATCH_DISPATCH_H 0
|
||||
#define HAVE_CUDA_H 0
|
||||
#define HAVE_D3D11_H 0
|
||||
#define HAVE_DISPATCH_DISPATCH_H 1
|
||||
#define HAVE_DEV_BKTR_IOCTL_BT848_H 0
|
||||
#define HAVE_DEV_BKTR_IOCTL_METEOR_H 0
|
||||
#define HAVE_DEV_IC_BT8XX_H 0
|
||||
|
@ -213,7 +213,7 @@
|
|||
#define HAVE_DIRECT_H 0
|
||||
#define HAVE_DIRENT_H 1
|
||||
#define HAVE_DLFCN_H 1
|
||||
#define HAVE_D3D11_H 0
|
||||
#define HAVE_DXGIDEBUG_H 0
|
||||
#define HAVE_DXVA_H 0
|
||||
#define HAVE_ES2_GL_H 0
|
||||
#define HAVE_GSM_H 0
|
||||
|
@ -222,12 +222,13 @@
|
|||
#define HAVE_MACHINE_IOCTL_BT848_H 0
|
||||
#define HAVE_MACHINE_IOCTL_METEOR_H 0
|
||||
#define HAVE_OPENCV2_CORE_CORE_C_H 0
|
||||
#define HAVE_OPENJPEG_2_3_OPENJPEG_H 0
|
||||
#define HAVE_OPENJPEG_2_2_OPENJPEG_H 0
|
||||
#define HAVE_OPENJPEG_2_1_OPENJPEG_H 0
|
||||
#define HAVE_OPENJPEG_2_0_OPENJPEG_H 0
|
||||
#define HAVE_OPENJPEG_1_5_OPENJPEG_H 0
|
||||
#define HAVE_OPENGL_GL3_H 0
|
||||
#define HAVE_POLL_H 1
|
||||
#define HAVE_SNDIO_H 0
|
||||
#define HAVE_SOUNDCARD_H 0
|
||||
#define HAVE_STDATOMIC_H 1
|
||||
#define HAVE_SYS_MMAN_H 1
|
||||
|
@ -276,12 +277,11 @@
|
|||
#define HAVE_TRUNCF 1
|
||||
#define HAVE_ACCESS 1
|
||||
#define HAVE_ALIGNED_MALLOC 0
|
||||
#define HAVE_CLOCK_GETTIME 0
|
||||
#define HAVE_CLOCK_GETTIME 1
|
||||
#define HAVE_CLOSESOCKET 0
|
||||
#define HAVE_COMMANDLINETOARGVW 0
|
||||
#define HAVE_COTASKMEMFREE 0
|
||||
#define HAVE_CRYPTGENRANDOM 0
|
||||
#define HAVE_DLOPEN 1
|
||||
#define HAVE_FCNTL 1
|
||||
#define HAVE_FLT_LIM 1
|
||||
#define HAVE_FORK 1
|
||||
|
@ -320,19 +320,22 @@
|
|||
#define HAVE_SLEEP 0
|
||||
#define HAVE_STRERROR_R 1
|
||||
#define HAVE_SYSCONF 1
|
||||
#define HAVE_SYSCTL 1
|
||||
#define HAVE_USLEEP 1
|
||||
#define HAVE_UTGETOSTYPEFROMSTRING 1
|
||||
#define HAVE_UTGETOSTYPEFROMSTRING 0
|
||||
#define HAVE_VIRTUALALLOC 0
|
||||
#define HAVE_WGLGETPROCADDRESS 0
|
||||
#define HAVE_PTHREADS 1
|
||||
#define HAVE_OS2THREADS 0
|
||||
#define HAVE_W32THREADS 0
|
||||
#define HAVE_AS_DN_DIRECTIVE 0
|
||||
#define HAVE_AS_FPU_DIRECTIVE 0
|
||||
#define HAVE_AS_FUNC 0
|
||||
#define HAVE_AS_OBJECT_ARCH 0
|
||||
#define HAVE_ASM_MOD_Q 0
|
||||
#define HAVE_ATTRIBUTE_MAY_ALIAS 1
|
||||
#define HAVE_ATTRIBUTE_PACKED 1
|
||||
#define HAVE_BLOCKS_EXTENSION 1
|
||||
#define HAVE_EBP_AVAILABLE 1
|
||||
#define HAVE_EBX_AVAILABLE 1
|
||||
#define HAVE_GNU_AS 0
|
||||
|
@ -349,6 +352,7 @@
|
|||
#define HAVE_XFORM_ASM 0
|
||||
#define HAVE_XMM_CLOBBERS 1
|
||||
#define HAVE_CONDITION_VARIABLE_PTR 0
|
||||
#define HAVE_KCMVIDEOCODECTYPE_HEVC 0
|
||||
#define HAVE_SOCKLEN_T 1
|
||||
#define HAVE_STRUCT_ADDRINFO 1
|
||||
#define HAVE_STRUCT_GROUP_SOURCE_REQ 1
|
||||
|
@ -365,42 +369,38 @@
|
|||
#define HAVE_STRUCT_V4L2_FRMIVALENUM_DISCRETE 0
|
||||
#define HAVE_ATOMICS_NATIVE 1
|
||||
#define HAVE_DOS_PATHS 0
|
||||
#define HAVE_DXVA2_LIB 0
|
||||
#define HAVE_DXVA2API_COBJ 0
|
||||
#define HAVE_LIBC_MSVCRT 0
|
||||
#define HAVE_LIBDC1394_1 0
|
||||
#define HAVE_LIBDC1394_2 0
|
||||
#define HAVE_MAKEINFO 1
|
||||
#define HAVE_MAKEINFO_HTML 1
|
||||
#define HAVE_MAKEINFO_HTML 0
|
||||
#define HAVE_MMAL_PARAMETER_VIDEO_MAX_NUM_CALLBACKS 0
|
||||
#define HAVE_PERL 1
|
||||
#define HAVE_POD2MAN 1
|
||||
#define HAVE_SDL2 0
|
||||
#define HAVE_SECTION_DATA_REL_RO 0
|
||||
#define HAVE_TEXI2HTML 0
|
||||
#define HAVE_THREADS 1
|
||||
#define HAVE_UWP 0
|
||||
#define HAVE_VAAPI_DRM 0
|
||||
#define HAVE_VAAPI_X11 0
|
||||
#define HAVE_VDPAU_X11 0
|
||||
#define HAVE_WINRT 0
|
||||
#define HAVE_XLIB 0
|
||||
#define CONFIG_BSFS 0
|
||||
#define CONFIG_DECODERS 1
|
||||
#define CONFIG_PARSERS 1
|
||||
#define CONFIG_DOC 0
|
||||
#define CONFIG_HTMLPAGES 1
|
||||
#define CONFIG_HTMLPAGES 0
|
||||
#define CONFIG_MANPAGES 1
|
||||
#define CONFIG_PODPAGES 1
|
||||
#define CONFIG_TXTPAGES 1
|
||||
#define CONFIG_AVIO_DIR_CMD_EXAMPLE 1
|
||||
#define CONFIG_AVIO_READING_EXAMPLE 1
|
||||
#define CONFIG_DECODING_ENCODING_EXAMPLE 0
|
||||
#define CONFIG_DECODE_AUDIO_EXAMPLE 1
|
||||
#define CONFIG_DECODE_VIDEO_EXAMPLE 1
|
||||
#define CONFIG_DEMUXING_DECODING_EXAMPLE 0
|
||||
#define CONFIG_ENCODE_AUDIO_EXAMPLE 1
|
||||
#define CONFIG_ENCODE_VIDEO_EXAMPLE 1
|
||||
#define CONFIG_EXTRACT_MVS_EXAMPLE 0
|
||||
#define CONFIG_FILTER_AUDIO_EXAMPLE 0
|
||||
#define CONFIG_FILTERING_AUDIO_EXAMPLE 0
|
||||
#define CONFIG_FILTERING_VIDEO_EXAMPLE 0
|
||||
#define CONFIG_HTTP_MULTICLIENT_EXAMPLE 0
|
||||
#define CONFIG_HW_DECODE_EXAMPLE 0
|
||||
#define CONFIG_METADATA_EXAMPLE 0
|
||||
#define CONFIG_MUXING_EXAMPLE 0
|
||||
#define CONFIG_QSVDEC_EXAMPLE 0
|
||||
|
@ -409,27 +409,55 @@
|
|||
#define CONFIG_SCALING_VIDEO_EXAMPLE 0
|
||||
#define CONFIG_TRANSCODE_AAC_EXAMPLE 0
|
||||
#define CONFIG_TRANSCODING_EXAMPLE 0
|
||||
#define CONFIG_AVISYNTH 0
|
||||
#define CONFIG_BZLIB 0
|
||||
#define CONFIG_CHROMAPRINT 0
|
||||
#define CONFIG_CRYSTALHD 0
|
||||
#define CONFIG_DECKLINK 0
|
||||
#define CONFIG_FREI0R 0
|
||||
#define CONFIG_GCRYPT 0
|
||||
#define CONFIG_GMP 0
|
||||
#define CONFIG_GNUTLS 0
|
||||
#define CONFIG_ALSA 0
|
||||
#define CONFIG_APPKIT 1
|
||||
#define CONFIG_AVFOUNDATION 1
|
||||
#define CONFIG_BZLIB 1
|
||||
#define CONFIG_COREIMAGE 1
|
||||
#define CONFIG_ICONV 0
|
||||
#define CONFIG_JACK 0
|
||||
#define CONFIG_LIBXCB 0
|
||||
#define CONFIG_LIBXCB_SHM 0
|
||||
#define CONFIG_LIBXCB_SHAPE 0
|
||||
#define CONFIG_LIBXCB_XFIXES 0
|
||||
#define CONFIG_LZMA 0
|
||||
#define CONFIG_SCHANNEL 0
|
||||
#define CONFIG_SDL2 0
|
||||
#define CONFIG_SECURETRANSPORT 0
|
||||
#define CONFIG_SNDIO 0
|
||||
#define CONFIG_XLIB 1
|
||||
#define CONFIG_ZLIB 1
|
||||
#define CONFIG_AVISYNTH 0
|
||||
#define CONFIG_FREI0R 0
|
||||
#define CONFIG_LIBCDIO 0
|
||||
#define CONFIG_LIBRUBBERBAND 0
|
||||
#define CONFIG_LIBVIDSTAB 0
|
||||
#define CONFIG_LIBX264 0
|
||||
#define CONFIG_LIBX265 0
|
||||
#define CONFIG_LIBXAVS 0
|
||||
#define CONFIG_LIBXVID 0
|
||||
#define CONFIG_DECKLINK 0
|
||||
#define CONFIG_LIBNDI_NEWTEK 0
|
||||
#define CONFIG_LIBFDK_AAC 0
|
||||
#define CONFIG_OPENSSL 0
|
||||
#define CONFIG_GMP 0
|
||||
#define CONFIG_LIBOPENCORE_AMRNB 0
|
||||
#define CONFIG_LIBOPENCORE_AMRWB 0
|
||||
#define CONFIG_LIBVO_AMRWBENC 0
|
||||
#define CONFIG_RKMPP 0
|
||||
#define CONFIG_LIBSMBCLIENT 0
|
||||
#define CONFIG_CHROMAPRINT 0
|
||||
#define CONFIG_GCRYPT 0
|
||||
#define CONFIG_GNUTLS 0
|
||||
#define CONFIG_JNI 0
|
||||
#define CONFIG_LADSPA 0
|
||||
#define CONFIG_LIBASS 0
|
||||
#define CONFIG_LIBBLURAY 0
|
||||
#define CONFIG_LIBBS2B 0
|
||||
#define CONFIG_LIBCACA 0
|
||||
#define CONFIG_LIBCDIO 0
|
||||
#define CONFIG_LIBCELT 0
|
||||
#define CONFIG_LIBDC1394 0
|
||||
#define CONFIG_LIBEBUR128 0
|
||||
#define CONFIG_LIBFDK_AAC 0
|
||||
#define CONFIG_LIBDRM 0
|
||||
#define CONFIG_LIBFLITE 0
|
||||
#define CONFIG_LIBFONTCONFIG 0
|
||||
#define CONFIG_LIBFREETYPE 0
|
||||
|
@ -441,18 +469,15 @@
|
|||
#define CONFIG_LIBKVAZAAR 0
|
||||
#define CONFIG_LIBMODPLUG 0
|
||||
#define CONFIG_LIBMP3LAME 0
|
||||
#define CONFIG_LIBNUT 0
|
||||
#define CONFIG_LIBOPENCORE_AMRNB 0
|
||||
#define CONFIG_LIBOPENCORE_AMRWB 0
|
||||
#define CONFIG_LIBMYSOFA 0
|
||||
#define CONFIG_LIBOPENCV 0
|
||||
#define CONFIG_LIBOPENH264 0
|
||||
#define CONFIG_LIBOPENJPEG 0
|
||||
#define CONFIG_LIBOPENMPT 0
|
||||
#define CONFIG_LIBOPUS 0
|
||||
#define CONFIG_LIBPULSE 0
|
||||
#define CONFIG_LIBRSVG 0
|
||||
#define CONFIG_LIBRTMP 0
|
||||
#define CONFIG_LIBRUBBERBAND 0
|
||||
#define CONFIG_LIBSCHROEDINGER 0
|
||||
#define CONFIG_LIBSHINE 0
|
||||
#define CONFIG_LIBSMBCLIENT 0
|
||||
#define CONFIG_LIBSNAPPY 0
|
||||
|
@ -463,52 +488,37 @@
|
|||
#define CONFIG_LIBTHEORA 0
|
||||
#define CONFIG_LIBTWOLAME 0
|
||||
#define CONFIG_LIBV4L2 0
|
||||
#define CONFIG_LIBVIDSTAB 0
|
||||
#define CONFIG_LIBVO_AMRWBENC 0
|
||||
#define CONFIG_LIBVMAF 0
|
||||
#define CONFIG_LIBVORBIS 0
|
||||
#define CONFIG_LIBVPX 0
|
||||
#define CONFIG_LIBWAVPACK 0
|
||||
#define CONFIG_LIBWEBP 0
|
||||
#define CONFIG_LIBX264 0
|
||||
#define CONFIG_LIBX265 0
|
||||
#define CONFIG_LIBXAVS 0
|
||||
#define CONFIG_LIBXCB 0
|
||||
#define CONFIG_LIBXCB_SHM 0
|
||||
#define CONFIG_LIBXCB_SHAPE 0
|
||||
#define CONFIG_LIBXCB_XFIXES 0
|
||||
#define CONFIG_LIBXVID 0
|
||||
#define CONFIG_LIBXML2 0
|
||||
#define CONFIG_LIBZIMG 0
|
||||
#define CONFIG_LIBZMQ 0
|
||||
#define CONFIG_LIBZVBI 0
|
||||
#define CONFIG_LZMA 0
|
||||
#define CONFIG_MEDIACODEC 0
|
||||
#define CONFIG_NETCDF 0
|
||||
#define CONFIG_OPENAL 0
|
||||
#define CONFIG_OPENCL 0
|
||||
#define CONFIG_OPENGL 0
|
||||
#define CONFIG_OPENSSL 0
|
||||
#define CONFIG_SCHANNEL 0
|
||||
#define CONFIG_SDL 0
|
||||
#define CONFIG_SDL2 0
|
||||
#define CONFIG_SECURETRANSPORT 0
|
||||
#define CONFIG_VIDEOTOOLBOX 0
|
||||
#define CONFIG_X11GRAB 0
|
||||
#define CONFIG_XLIB 0
|
||||
#define CONFIG_ZLIB 0
|
||||
#define CONFIG_AUDIOTOOLBOX 0
|
||||
#define CONFIG_AUDIOTOOLBOX 1
|
||||
#define CONFIG_CRYSTALHD 0
|
||||
#define CONFIG_CUDA 0
|
||||
#define CONFIG_CUVID 0
|
||||
#define CONFIG_D3D11VA 0
|
||||
#define CONFIG_DXVA2 0
|
||||
#define CONFIG_LIBMFX 0
|
||||
#define CONFIG_LIBNPP 0
|
||||
#define CONFIG_MMAL 0
|
||||
#define CONFIG_NVENC 0
|
||||
#define CONFIG_OMX 0
|
||||
#define CONFIG_VAAPI 0
|
||||
#define CONFIG_VDA 0
|
||||
#define CONFIG_VDPAU 0
|
||||
#define CONFIG_VIDEOTOOLBOX 0
|
||||
#define CONFIG_V4L2_M2M 0
|
||||
#define CONFIG_XVMC 0
|
||||
#define CONFIG_CUDA_SDK 0
|
||||
#define CONFIG_LIBNPP 0
|
||||
#define CONFIG_LIBMFX 0
|
||||
#define CONFIG_MMAL 0
|
||||
#define CONFIG_OMX 0
|
||||
#define CONFIG_FTRAPV 0
|
||||
#define CONFIG_GRAY 0
|
||||
#define CONFIG_HARDCODED_TABLES 0
|
||||
|
@ -547,16 +557,27 @@
|
|||
#define CONFIG_PIXELUTILS 0
|
||||
#define CONFIG_NETWORK 0
|
||||
#define CONFIG_RDFT 0
|
||||
#define CONFIG_AUTODETECT 0
|
||||
#define CONFIG_FONTCONFIG 0
|
||||
#define CONFIG_MEMALIGN_HACK 0
|
||||
#define CONFIG_LINUX_PERF 0
|
||||
#define CONFIG_MEMORY_POISONING 0
|
||||
#define CONFIG_NEON_CLOBBER_TEST 0
|
||||
#define CONFIG_OSSFUZZ 0
|
||||
#define CONFIG_PIC 1
|
||||
#define CONFIG_POD2MAN 1
|
||||
#define CONFIG_RAISE_MAJOR 0
|
||||
#define CONFIG_THUMB 0
|
||||
#define CONFIG_VALGRIND_BACKTRACE 0
|
||||
#define CONFIG_XMM_CLOBBER_TEST 0
|
||||
#define CONFIG_BSFS 1
|
||||
#define CONFIG_DECODERS 1
|
||||
#define CONFIG_ENCODERS 0
|
||||
#define CONFIG_HWACCELS 0
|
||||
#define CONFIG_PARSERS 1
|
||||
#define CONFIG_INDEVS 0
|
||||
#define CONFIG_OUTDEVS 0
|
||||
#define CONFIG_FILTERS 0
|
||||
#define CONFIG_DEMUXERS 0
|
||||
#define CONFIG_MUXERS 0
|
||||
#define CONFIG_PROTOCOLS 0
|
||||
#define CONFIG_AANDCTTABLES 0
|
||||
#define CONFIG_AC3DSP 0
|
||||
#define CONFIG_AUDIO_FRAME_QUEUE 0
|
||||
|
@ -572,21 +593,24 @@
|
|||
#define CONFIG_FDCTDSP 0
|
||||
#define CONFIG_FLACDSP 1
|
||||
#define CONFIG_FMTCONVERT 0
|
||||
#define CONFIG_FRAME_THREAD_ENCODER 0
|
||||
#define CONFIG_G722DSP 0
|
||||
#define CONFIG_GOLOMB 1
|
||||
#define CONFIG_GOLOMB 0
|
||||
#define CONFIG_GPLV3 0
|
||||
#define CONFIG_H263DSP 0
|
||||
#define CONFIG_H264CHROMA 0
|
||||
#define CONFIG_H264DSP 0
|
||||
#define CONFIG_H264PARSE 0
|
||||
#define CONFIG_H264PRED 1
|
||||
#define CONFIG_H264QPEL 0
|
||||
#define CONFIG_HEVCPARSE 0
|
||||
#define CONFIG_HPELDSP 0
|
||||
#define CONFIG_HUFFMAN 0
|
||||
#define CONFIG_HUFFYUVDSP 0
|
||||
#define CONFIG_HUFFYUVENCDSP 0
|
||||
#define CONFIG_IDCTDSP 0
|
||||
#define CONFIG_IIRFILTER 0
|
||||
#define CONFIG_IMDCT15 0
|
||||
#define CONFIG_MDCT15 0
|
||||
#define CONFIG_INTRAX8 0
|
||||
#define CONFIG_ISO_MEDIA 0
|
||||
#define CONFIG_IVIDSP 0
|
||||
|
@ -595,12 +619,14 @@
|
|||
#define CONFIG_LIBX262 0
|
||||
#define CONFIG_LLAUDDSP 0
|
||||
#define CONFIG_LLVIDDSP 0
|
||||
#define CONFIG_LLVIDENCDSP 0
|
||||
#define CONFIG_LPC 0
|
||||
#define CONFIG_LZF 0
|
||||
#define CONFIG_ME_CMP 0
|
||||
#define CONFIG_MPEG_ER 0
|
||||
#define CONFIG_MPEGAUDIO 0
|
||||
#define CONFIG_MPEGAUDIODSP 0
|
||||
#define CONFIG_MPEGAUDIOHEADER 0
|
||||
#define CONFIG_MPEGVIDEO 0
|
||||
#define CONFIG_MPEGVIDEOENC 0
|
||||
#define CONFIG_MSS34DSP 0
|
||||
|
@ -622,13 +648,13 @@
|
|||
#define CONFIG_TEXTUREDSP 0
|
||||
#define CONFIG_TEXTUREDSPENC 0
|
||||
#define CONFIG_TPELDSP 0
|
||||
#define CONFIG_VAAPI_1 0
|
||||
#define CONFIG_VAAPI_ENCODE 0
|
||||
#define CONFIG_VC1DSP 0
|
||||
#define CONFIG_VIDEODSP 1
|
||||
#define CONFIG_VP3DSP 0
|
||||
#define CONFIG_VP56DSP 0
|
||||
#define CONFIG_VP8DSP 1
|
||||
#define CONFIG_VT_BT2020 0
|
||||
#define CONFIG_WMA_FREQS 0
|
||||
#define CONFIG_WMV2DSP 0
|
||||
#define CONFIG_NULL_BSF 1
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
/* Automatically generated by configure - do not modify! */
|
||||
#ifndef FFMPEG_CONFIG_H
|
||||
#define FFMPEG_CONFIG_H
|
||||
#define FFMPEG_CONFIGURATION "--disable-everything --disable-protocols --disable-demuxers --disable-muxers --disable-filters --disable-programs --disable-doc --disable-parsers --enable-parser=vp8 --enable-parser=vp9 --enable-decoder=vp8 --enable-decoder=vp9 --disable-static --enable-shared --disable-debug --disable-sdl --disable-libxcb --disable-securetransport --disable-iconv --disable-swresample --disable-swscale --disable-avdevice --disable-avfilter --disable-avformat --disable-d3d11va --disable-dxva2 --disable-vaapi --disable-vda --disable-vdpau --disable-videotoolbox --enable-asm --enable-yasm --disable-asm --disable-yasm --cc='gcc -m32'"
|
||||
#define FFMPEG_CONFIGURATION "--disable-everything --disable-protocols --disable-demuxers --disable-muxers --disable-filters --disable-programs --disable-doc --disable-parsers --enable-parser=vp8 --enable-parser=vp9 --enable-decoder=vp8 --enable-decoder=vp9 --disable-static --enable-shared --disable-debug --disable-sdl2 --disable-libxcb --disable-securetransport --disable-iconv --disable-swresample --disable-swscale --disable-avdevice --disable-avfilter --disable-avformat --disable-d3d11va --disable-dxva2 --disable-vaapi --disable-vda --disable-vdpau --disable-videotoolbox --enable-decoder=flac --disable-asm --disable-x86asm"
|
||||
#define FFMPEG_LICENSE "LGPL version 2.1 or later"
|
||||
#define CONFIG_THIS_YEAR 2016
|
||||
#define CONFIG_THIS_YEAR 2017
|
||||
#define FFMPEG_DATADIR "/usr/local/share/ffmpeg"
|
||||
#define AVCONV_DATADIR "/usr/local/share/ffmpeg"
|
||||
#define CC_IDENT "gcc 4.6 (Ubuntu/Linaro 4.6.3-1ubuntu5)"
|
||||
#define CC_IDENT "gcc 6.3.0 (Ubuntu 6.3.0-12ubuntu2) 20170406"
|
||||
#define av_restrict restrict
|
||||
#define EXTERN_PREFIX ""
|
||||
#define EXTERN_ASM
|
||||
|
@ -178,11 +178,11 @@
|
|||
#define HAVE_LOCAL_ALIGNED_16 1
|
||||
#define HAVE_LOCAL_ALIGNED_32 1
|
||||
#define HAVE_SIMD_ALIGN_16 0
|
||||
#define HAVE_SIMD_ALIGN_32 0
|
||||
#define HAVE_ATOMICS_GCC 1
|
||||
#define HAVE_ATOMICS_SUNCC 0
|
||||
#define HAVE_ATOMICS_WIN32 0
|
||||
#define HAVE_ATOMIC_CAS_PTR 0
|
||||
#define HAVE_ATOMIC_COMPARE_EXCHANGE 0
|
||||
#define HAVE_MACHINE_RW_BARRIER 0
|
||||
#define HAVE_MEMORYBARRIER 0
|
||||
#define HAVE_MM_EMPTY 0
|
||||
|
@ -194,15 +194,16 @@
|
|||
#define HAVE_CEXP 1
|
||||
#define HAVE_INLINE_ASM 1
|
||||
#define HAVE_SYMVER 1
|
||||
#define HAVE_YASM 0
|
||||
#define HAVE_X86ASM 0
|
||||
#define HAVE_BIGENDIAN 0
|
||||
#define HAVE_FAST_UNALIGNED 0
|
||||
#define HAVE_ALSA_ASOUNDLIB_H 0
|
||||
#define HAVE_ALTIVEC_H 0
|
||||
#define HAVE_ARPA_INET_H 1
|
||||
#define HAVE_ASM_TYPES_H 1
|
||||
#define HAVE_CDIO_PARANOIA_H 0
|
||||
#define HAVE_CDIO_PARANOIA_PARANOIA_H 0
|
||||
#define HAVE_CUDA_H 0
|
||||
#define HAVE_D3D11_H 0
|
||||
#define HAVE_DISPATCH_DISPATCH_H 0
|
||||
#define HAVE_DEV_BKTR_IOCTL_BT848_H 0
|
||||
#define HAVE_DEV_BKTR_IOCTL_METEOR_H 0
|
||||
|
@ -212,7 +213,7 @@
|
|||
#define HAVE_DIRECT_H 0
|
||||
#define HAVE_DIRENT_H 1
|
||||
#define HAVE_DLFCN_H 1
|
||||
#define HAVE_D3D11_H 0
|
||||
#define HAVE_DXGIDEBUG_H 0
|
||||
#define HAVE_DXVA_H 0
|
||||
#define HAVE_ES2_GL_H 0
|
||||
#define HAVE_GSM_H 0
|
||||
|
@ -221,12 +222,13 @@
|
|||
#define HAVE_MACHINE_IOCTL_BT848_H 0
|
||||
#define HAVE_MACHINE_IOCTL_METEOR_H 0
|
||||
#define HAVE_OPENCV2_CORE_CORE_C_H 0
|
||||
#define HAVE_OPENJPEG_2_3_OPENJPEG_H 0
|
||||
#define HAVE_OPENJPEG_2_2_OPENJPEG_H 0
|
||||
#define HAVE_OPENJPEG_2_1_OPENJPEG_H 0
|
||||
#define HAVE_OPENJPEG_2_0_OPENJPEG_H 0
|
||||
#define HAVE_OPENJPEG_1_5_OPENJPEG_H 0
|
||||
#define HAVE_OPENGL_GL3_H 0
|
||||
#define HAVE_POLL_H 1
|
||||
#define HAVE_SNDIO_H 0
|
||||
#define HAVE_SOUNDCARD_H 0
|
||||
#define HAVE_STDATOMIC_H 1
|
||||
#define HAVE_SYS_MMAN_H 1
|
||||
|
@ -280,7 +282,6 @@
|
|||
#define HAVE_COMMANDLINETOARGVW 0
|
||||
#define HAVE_COTASKMEMFREE 0
|
||||
#define HAVE_CRYPTGENRANDOM 0
|
||||
#define HAVE_DLOPEN 1
|
||||
#define HAVE_FCNTL 1
|
||||
#define HAVE_FLT_LIM 1
|
||||
#define HAVE_FORK 1
|
||||
|
@ -319,6 +320,7 @@
|
|||
#define HAVE_SLEEP 0
|
||||
#define HAVE_STRERROR_R 1
|
||||
#define HAVE_SYSCONF 1
|
||||
#define HAVE_SYSCTL 0
|
||||
#define HAVE_USLEEP 1
|
||||
#define HAVE_UTGETOSTYPEFROMSTRING 0
|
||||
#define HAVE_VIRTUALALLOC 0
|
||||
|
@ -327,11 +329,13 @@
|
|||
#define HAVE_OS2THREADS 0
|
||||
#define HAVE_W32THREADS 0
|
||||
#define HAVE_AS_DN_DIRECTIVE 0
|
||||
#define HAVE_AS_FPU_DIRECTIVE 0
|
||||
#define HAVE_AS_FUNC 0
|
||||
#define HAVE_AS_OBJECT_ARCH 0
|
||||
#define HAVE_ASM_MOD_Q 0
|
||||
#define HAVE_ATTRIBUTE_MAY_ALIAS 1
|
||||
#define HAVE_ATTRIBUTE_PACKED 1
|
||||
#define HAVE_BLOCKS_EXTENSION 0
|
||||
#define HAVE_EBP_AVAILABLE 1
|
||||
#define HAVE_EBX_AVAILABLE 1
|
||||
#define HAVE_GNU_AS 0
|
||||
|
@ -348,6 +352,7 @@
|
|||
#define HAVE_XFORM_ASM 0
|
||||
#define HAVE_XMM_CLOBBERS 0
|
||||
#define HAVE_CONDITION_VARIABLE_PTR 0
|
||||
#define HAVE_KCMVIDEOCODECTYPE_HEVC 0
|
||||
#define HAVE_SOCKLEN_T 1
|
||||
#define HAVE_STRUCT_ADDRINFO 1
|
||||
#define HAVE_STRUCT_GROUP_SOURCE_REQ 1
|
||||
|
@ -364,28 +369,20 @@
|
|||
#define HAVE_STRUCT_V4L2_FRMIVALENUM_DISCRETE 1
|
||||
#define HAVE_ATOMICS_NATIVE 1
|
||||
#define HAVE_DOS_PATHS 0
|
||||
#define HAVE_DXVA2_LIB 0
|
||||
#define HAVE_DXVA2API_COBJ 0
|
||||
#define HAVE_LIBC_MSVCRT 0
|
||||
#define HAVE_LIBDC1394_1 0
|
||||
#define HAVE_LIBDC1394_2 0
|
||||
#define HAVE_MAKEINFO 0
|
||||
#define HAVE_MAKEINFO_HTML 0
|
||||
#define HAVE_MMAL_PARAMETER_VIDEO_MAX_NUM_CALLBACKS 0
|
||||
#define HAVE_PERL 1
|
||||
#define HAVE_POD2MAN 1
|
||||
#define HAVE_SDL2 0
|
||||
#define HAVE_SECTION_DATA_REL_RO 1
|
||||
#define HAVE_TEXI2HTML 0
|
||||
#define HAVE_THREADS 1
|
||||
#define HAVE_UWP 0
|
||||
#define HAVE_VAAPI_DRM 0
|
||||
#define HAVE_VAAPI_X11 0
|
||||
#define HAVE_VDPAU_X11 0
|
||||
#define HAVE_WINRT 0
|
||||
#define HAVE_XLIB 0
|
||||
#define CONFIG_BSFS 0
|
||||
#define CONFIG_DECODERS 1
|
||||
#define CONFIG_PARSERS 1
|
||||
#define CONFIG_DOC 0
|
||||
#define CONFIG_HTMLPAGES 0
|
||||
#define CONFIG_MANPAGES 1
|
||||
|
@ -393,13 +390,17 @@
|
|||
#define CONFIG_TXTPAGES 0
|
||||
#define CONFIG_AVIO_DIR_CMD_EXAMPLE 1
|
||||
#define CONFIG_AVIO_READING_EXAMPLE 1
|
||||
#define CONFIG_DECODING_ENCODING_EXAMPLE 0
|
||||
#define CONFIG_DECODE_AUDIO_EXAMPLE 1
|
||||
#define CONFIG_DECODE_VIDEO_EXAMPLE 1
|
||||
#define CONFIG_DEMUXING_DECODING_EXAMPLE 0
|
||||
#define CONFIG_ENCODE_AUDIO_EXAMPLE 1
|
||||
#define CONFIG_ENCODE_VIDEO_EXAMPLE 1
|
||||
#define CONFIG_EXTRACT_MVS_EXAMPLE 0
|
||||
#define CONFIG_FILTER_AUDIO_EXAMPLE 0
|
||||
#define CONFIG_FILTERING_AUDIO_EXAMPLE 0
|
||||
#define CONFIG_FILTERING_VIDEO_EXAMPLE 0
|
||||
#define CONFIG_HTTP_MULTICLIENT_EXAMPLE 0
|
||||
#define CONFIG_HW_DECODE_EXAMPLE 0
|
||||
#define CONFIG_METADATA_EXAMPLE 0
|
||||
#define CONFIG_MUXING_EXAMPLE 0
|
||||
#define CONFIG_QSVDEC_EXAMPLE 0
|
||||
|
@ -408,27 +409,55 @@
|
|||
#define CONFIG_SCALING_VIDEO_EXAMPLE 0
|
||||
#define CONFIG_TRANSCODE_AAC_EXAMPLE 0
|
||||
#define CONFIG_TRANSCODING_EXAMPLE 0
|
||||
#define CONFIG_AVISYNTH 0
|
||||
#define CONFIG_ALSA 0
|
||||
#define CONFIG_APPKIT 0
|
||||
#define CONFIG_AVFOUNDATION 0
|
||||
#define CONFIG_BZLIB 0
|
||||
#define CONFIG_CHROMAPRINT 0
|
||||
#define CONFIG_CRYSTALHD 0
|
||||
#define CONFIG_DECKLINK 0
|
||||
#define CONFIG_FREI0R 0
|
||||
#define CONFIG_GCRYPT 0
|
||||
#define CONFIG_GMP 0
|
||||
#define CONFIG_GNUTLS 0
|
||||
#define CONFIG_COREIMAGE 0
|
||||
#define CONFIG_ICONV 0
|
||||
#define CONFIG_JACK 0
|
||||
#define CONFIG_LIBXCB 0
|
||||
#define CONFIG_LIBXCB_SHM 0
|
||||
#define CONFIG_LIBXCB_SHAPE 0
|
||||
#define CONFIG_LIBXCB_XFIXES 0
|
||||
#define CONFIG_LZMA 0
|
||||
#define CONFIG_SCHANNEL 0
|
||||
#define CONFIG_SDL2 0
|
||||
#define CONFIG_SECURETRANSPORT 0
|
||||
#define CONFIG_SNDIO 0
|
||||
#define CONFIG_XLIB 1
|
||||
#define CONFIG_ZLIB 0
|
||||
#define CONFIG_AVISYNTH 0
|
||||
#define CONFIG_FREI0R 0
|
||||
#define CONFIG_LIBCDIO 0
|
||||
#define CONFIG_LIBRUBBERBAND 0
|
||||
#define CONFIG_LIBVIDSTAB 0
|
||||
#define CONFIG_LIBX264 0
|
||||
#define CONFIG_LIBX265 0
|
||||
#define CONFIG_LIBXAVS 0
|
||||
#define CONFIG_LIBXVID 0
|
||||
#define CONFIG_DECKLINK 0
|
||||
#define CONFIG_LIBNDI_NEWTEK 0
|
||||
#define CONFIG_LIBFDK_AAC 0
|
||||
#define CONFIG_OPENSSL 0
|
||||
#define CONFIG_GMP 0
|
||||
#define CONFIG_LIBOPENCORE_AMRNB 0
|
||||
#define CONFIG_LIBOPENCORE_AMRWB 0
|
||||
#define CONFIG_LIBVO_AMRWBENC 0
|
||||
#define CONFIG_RKMPP 0
|
||||
#define CONFIG_LIBSMBCLIENT 0
|
||||
#define CONFIG_CHROMAPRINT 0
|
||||
#define CONFIG_GCRYPT 0
|
||||
#define CONFIG_GNUTLS 0
|
||||
#define CONFIG_JNI 0
|
||||
#define CONFIG_LADSPA 0
|
||||
#define CONFIG_LIBASS 0
|
||||
#define CONFIG_LIBBLURAY 0
|
||||
#define CONFIG_LIBBS2B 0
|
||||
#define CONFIG_LIBCACA 0
|
||||
#define CONFIG_LIBCDIO 0
|
||||
#define CONFIG_LIBCELT 0
|
||||
#define CONFIG_LIBDC1394 0
|
||||
#define CONFIG_LIBEBUR128 0
|
||||
#define CONFIG_LIBFDK_AAC 0
|
||||
#define CONFIG_LIBDRM 0
|
||||
#define CONFIG_LIBFLITE 0
|
||||
#define CONFIG_LIBFONTCONFIG 0
|
||||
#define CONFIG_LIBFREETYPE 0
|
||||
|
@ -440,18 +469,15 @@
|
|||
#define CONFIG_LIBKVAZAAR 0
|
||||
#define CONFIG_LIBMODPLUG 0
|
||||
#define CONFIG_LIBMP3LAME 0
|
||||
#define CONFIG_LIBNUT 0
|
||||
#define CONFIG_LIBOPENCORE_AMRNB 0
|
||||
#define CONFIG_LIBOPENCORE_AMRWB 0
|
||||
#define CONFIG_LIBMYSOFA 0
|
||||
#define CONFIG_LIBOPENCV 0
|
||||
#define CONFIG_LIBOPENH264 0
|
||||
#define CONFIG_LIBOPENJPEG 0
|
||||
#define CONFIG_LIBOPENMPT 0
|
||||
#define CONFIG_LIBOPUS 0
|
||||
#define CONFIG_LIBPULSE 0
|
||||
#define CONFIG_LIBRSVG 0
|
||||
#define CONFIG_LIBRTMP 0
|
||||
#define CONFIG_LIBRUBBERBAND 0
|
||||
#define CONFIG_LIBSCHROEDINGER 0
|
||||
#define CONFIG_LIBSHINE 0
|
||||
#define CONFIG_LIBSMBCLIENT 0
|
||||
#define CONFIG_LIBSNAPPY 0
|
||||
|
@ -462,51 +488,37 @@
|
|||
#define CONFIG_LIBTHEORA 0
|
||||
#define CONFIG_LIBTWOLAME 0
|
||||
#define CONFIG_LIBV4L2 0
|
||||
#define CONFIG_LIBVIDSTAB 0
|
||||
#define CONFIG_LIBVO_AMRWBENC 0
|
||||
#define CONFIG_LIBVMAF 0
|
||||
#define CONFIG_LIBVORBIS 0
|
||||
#define CONFIG_LIBVPX 0
|
||||
#define CONFIG_LIBWAVPACK 0
|
||||
#define CONFIG_LIBWEBP 0
|
||||
#define CONFIG_LIBX264 0
|
||||
#define CONFIG_LIBX265 0
|
||||
#define CONFIG_LIBXAVS 0
|
||||
#define CONFIG_LIBXCB 0
|
||||
#define CONFIG_LIBXCB_SHM 0
|
||||
#define CONFIG_LIBXCB_SHAPE 0
|
||||
#define CONFIG_LIBXCB_XFIXES 0
|
||||
#define CONFIG_LIBXVID 0
|
||||
#define CONFIG_LIBXML2 0
|
||||
#define CONFIG_LIBZIMG 0
|
||||
#define CONFIG_LIBZMQ 0
|
||||
#define CONFIG_LIBZVBI 0
|
||||
#define CONFIG_LZMA 0
|
||||
#define CONFIG_MEDIACODEC 0
|
||||
#define CONFIG_NETCDF 0
|
||||
#define CONFIG_OPENAL 0
|
||||
#define CONFIG_OPENCL 0
|
||||
#define CONFIG_OPENGL 0
|
||||
#define CONFIG_OPENSSL 0
|
||||
#define CONFIG_SCHANNEL 0
|
||||
#define CONFIG_SDL 0
|
||||
#define CONFIG_SDL2 0
|
||||
#define CONFIG_SECURETRANSPORT 0
|
||||
#define CONFIG_X11GRAB 0
|
||||
#define CONFIG_XLIB 0
|
||||
#define CONFIG_ZLIB 0
|
||||
#define CONFIG_AUDIOTOOLBOX 0
|
||||
#define CONFIG_CUDA 0
|
||||
#define CONFIG_CUVID 0
|
||||
#define CONFIG_CRYSTALHD 0
|
||||
#define CONFIG_CUDA 1
|
||||
#define CONFIG_CUVID 1
|
||||
#define CONFIG_D3D11VA 0
|
||||
#define CONFIG_DXVA2 0
|
||||
#define CONFIG_LIBMFX 0
|
||||
#define CONFIG_LIBNPP 0
|
||||
#define CONFIG_MMAL 0
|
||||
#define CONFIG_NVENC 0
|
||||
#define CONFIG_OMX 0
|
||||
#define CONFIG_NVENC 1
|
||||
#define CONFIG_VAAPI 0
|
||||
#define CONFIG_VDA 0
|
||||
#define CONFIG_VDPAU 0
|
||||
#define CONFIG_VIDEOTOOLBOX 0
|
||||
#define CONFIG_V4L2_M2M 1
|
||||
#define CONFIG_XVMC 0
|
||||
#define CONFIG_CUDA_SDK 0
|
||||
#define CONFIG_LIBNPP 0
|
||||
#define CONFIG_LIBMFX 0
|
||||
#define CONFIG_MMAL 0
|
||||
#define CONFIG_OMX 0
|
||||
#define CONFIG_FTRAPV 0
|
||||
#define CONFIG_GRAY 0
|
||||
#define CONFIG_HARDCODED_TABLES 0
|
||||
|
@ -545,16 +557,27 @@
|
|||
#define CONFIG_PIXELUTILS 0
|
||||
#define CONFIG_NETWORK 0
|
||||
#define CONFIG_RDFT 0
|
||||
#define CONFIG_AUTODETECT 0
|
||||
#define CONFIG_FONTCONFIG 0
|
||||
#define CONFIG_MEMALIGN_HACK 0
|
||||
#define CONFIG_LINUX_PERF 0
|
||||
#define CONFIG_MEMORY_POISONING 0
|
||||
#define CONFIG_NEON_CLOBBER_TEST 0
|
||||
#define CONFIG_PIC 0
|
||||
#define CONFIG_POD2MAN 1
|
||||
#define CONFIG_RAISE_MAJOR 0
|
||||
#define CONFIG_OSSFUZZ 0
|
||||
#define CONFIG_PIC 1
|
||||
#define CONFIG_THUMB 0
|
||||
#define CONFIG_VALGRIND_BACKTRACE 0
|
||||
#define CONFIG_XMM_CLOBBER_TEST 0
|
||||
#define CONFIG_BSFS 1
|
||||
#define CONFIG_DECODERS 1
|
||||
#define CONFIG_ENCODERS 0
|
||||
#define CONFIG_HWACCELS 0
|
||||
#define CONFIG_PARSERS 1
|
||||
#define CONFIG_INDEVS 0
|
||||
#define CONFIG_OUTDEVS 0
|
||||
#define CONFIG_FILTERS 0
|
||||
#define CONFIG_DEMUXERS 0
|
||||
#define CONFIG_MUXERS 0
|
||||
#define CONFIG_PROTOCOLS 0
|
||||
#define CONFIG_AANDCTTABLES 0
|
||||
#define CONFIG_AC3DSP 0
|
||||
#define CONFIG_AUDIO_FRAME_QUEUE 0
|
||||
|
@ -570,21 +593,24 @@
|
|||
#define CONFIG_FDCTDSP 0
|
||||
#define CONFIG_FLACDSP 1
|
||||
#define CONFIG_FMTCONVERT 0
|
||||
#define CONFIG_FRAME_THREAD_ENCODER 0
|
||||
#define CONFIG_G722DSP 0
|
||||
#define CONFIG_GOLOMB 1
|
||||
#define CONFIG_GOLOMB 0
|
||||
#define CONFIG_GPLV3 0
|
||||
#define CONFIG_H263DSP 0
|
||||
#define CONFIG_H264CHROMA 0
|
||||
#define CONFIG_H264DSP 0
|
||||
#define CONFIG_H264PARSE 0
|
||||
#define CONFIG_H264PRED 1
|
||||
#define CONFIG_H264QPEL 0
|
||||
#define CONFIG_HEVCPARSE 0
|
||||
#define CONFIG_HPELDSP 0
|
||||
#define CONFIG_HUFFMAN 0
|
||||
#define CONFIG_HUFFYUVDSP 0
|
||||
#define CONFIG_HUFFYUVENCDSP 0
|
||||
#define CONFIG_IDCTDSP 0
|
||||
#define CONFIG_IIRFILTER 0
|
||||
#define CONFIG_IMDCT15 0
|
||||
#define CONFIG_MDCT15 0
|
||||
#define CONFIG_INTRAX8 0
|
||||
#define CONFIG_ISO_MEDIA 0
|
||||
#define CONFIG_IVIDSP 0
|
||||
|
@ -593,12 +619,14 @@
|
|||
#define CONFIG_LIBX262 0
|
||||
#define CONFIG_LLAUDDSP 0
|
||||
#define CONFIG_LLVIDDSP 0
|
||||
#define CONFIG_LLVIDENCDSP 0
|
||||
#define CONFIG_LPC 0
|
||||
#define CONFIG_LZF 0
|
||||
#define CONFIG_ME_CMP 0
|
||||
#define CONFIG_MPEG_ER 0
|
||||
#define CONFIG_MPEGAUDIO 0
|
||||
#define CONFIG_MPEGAUDIODSP 0
|
||||
#define CONFIG_MPEGAUDIOHEADER 0
|
||||
#define CONFIG_MPEGVIDEO 0
|
||||
#define CONFIG_MPEGVIDEOENC 0
|
||||
#define CONFIG_MSS34DSP 0
|
||||
|
@ -620,13 +648,13 @@
|
|||
#define CONFIG_TEXTUREDSP 0
|
||||
#define CONFIG_TEXTUREDSPENC 0
|
||||
#define CONFIG_TPELDSP 0
|
||||
#define CONFIG_VAAPI_1 0
|
||||
#define CONFIG_VAAPI_ENCODE 0
|
||||
#define CONFIG_VC1DSP 0
|
||||
#define CONFIG_VIDEODSP 1
|
||||
#define CONFIG_VP3DSP 0
|
||||
#define CONFIG_VP56DSP 0
|
||||
#define CONFIG_VP8DSP 1
|
||||
#define CONFIG_VT_BT2020 0
|
||||
#define CONFIG_WMA_FREQS 0
|
||||
#define CONFIG_WMV2DSP 0
|
||||
#define CONFIG_NULL_BSF 1
|
||||
|
|
|
@ -63,8 +63,8 @@
|
|||
%define HAVE_MIPSDSP 0
|
||||
%define HAVE_MIPSDSPR2 0
|
||||
%define HAVE_MSA 0
|
||||
%define HAVE_LOONGSON2 1
|
||||
%define HAVE_LOONGSON3 1
|
||||
%define HAVE_LOONGSON2 0
|
||||
%define HAVE_LOONGSON3 0
|
||||
%define HAVE_MMI 0
|
||||
%define HAVE_ARMV5TE_EXTERNAL 0
|
||||
%define HAVE_ARMV6_EXTERNAL 0
|
||||
|
@ -162,11 +162,11 @@
|
|||
%define HAVE_LOCAL_ALIGNED_16 1
|
||||
%define HAVE_LOCAL_ALIGNED_32 1
|
||||
%define HAVE_SIMD_ALIGN_16 1
|
||||
%define HAVE_SIMD_ALIGN_32 1
|
||||
%define HAVE_ATOMICS_GCC 1
|
||||
%define HAVE_ATOMICS_SUNCC 0
|
||||
%define HAVE_ATOMICS_WIN32 0
|
||||
%define HAVE_ATOMIC_CAS_PTR 0
|
||||
%define HAVE_ATOMIC_COMPARE_EXCHANGE 0
|
||||
%define HAVE_MACHINE_RW_BARRIER 0
|
||||
%define HAVE_MEMORYBARRIER 0
|
||||
%define HAVE_MM_EMPTY 1
|
||||
|
@ -178,15 +178,16 @@
|
|||
%define HAVE_CEXP 1
|
||||
%define HAVE_INLINE_ASM 1
|
||||
%define HAVE_SYMVER 1
|
||||
%define HAVE_YASM 1
|
||||
%define HAVE_X86ASM 1
|
||||
%define HAVE_BIGENDIAN 0
|
||||
%define HAVE_FAST_UNALIGNED 1
|
||||
%define HAVE_ALSA_ASOUNDLIB_H 0
|
||||
%define HAVE_ALTIVEC_H 0
|
||||
%define HAVE_ARPA_INET_H 1
|
||||
%define HAVE_ASM_TYPES_H 1
|
||||
%define HAVE_CDIO_PARANOIA_H 0
|
||||
%define HAVE_CDIO_PARANOIA_PARANOIA_H 0
|
||||
%define HAVE_CUDA_H 0
|
||||
%define HAVE_D3D11_H 0
|
||||
%define HAVE_DISPATCH_DISPATCH_H 0
|
||||
%define HAVE_DEV_BKTR_IOCTL_BT848_H 0
|
||||
%define HAVE_DEV_BKTR_IOCTL_METEOR_H 0
|
||||
|
@ -196,7 +197,7 @@
|
|||
%define HAVE_DIRECT_H 0
|
||||
%define HAVE_DIRENT_H 1
|
||||
%define HAVE_DLFCN_H 1
|
||||
%define HAVE_D3D11_H 0
|
||||
%define HAVE_DXGIDEBUG_H 0
|
||||
%define HAVE_DXVA_H 0
|
||||
%define HAVE_ES2_GL_H 0
|
||||
%define HAVE_GSM_H 0
|
||||
|
@ -205,12 +206,13 @@
|
|||
%define HAVE_MACHINE_IOCTL_BT848_H 0
|
||||
%define HAVE_MACHINE_IOCTL_METEOR_H 0
|
||||
%define HAVE_OPENCV2_CORE_CORE_C_H 0
|
||||
%define HAVE_OPENJPEG_2_3_OPENJPEG_H 0
|
||||
%define HAVE_OPENJPEG_2_2_OPENJPEG_H 0
|
||||
%define HAVE_OPENJPEG_2_1_OPENJPEG_H 0
|
||||
%define HAVE_OPENJPEG_2_0_OPENJPEG_H 0
|
||||
%define HAVE_OPENJPEG_1_5_OPENJPEG_H 0
|
||||
%define HAVE_OPENGL_GL3_H 0
|
||||
%define HAVE_POLL_H 1
|
||||
%define HAVE_SNDIO_H 0
|
||||
%define HAVE_SOUNDCARD_H 0
|
||||
%define HAVE_STDATOMIC_H 1
|
||||
%define HAVE_SYS_MMAN_H 1
|
||||
|
@ -264,7 +266,6 @@
|
|||
%define HAVE_COMMANDLINETOARGVW 0
|
||||
%define HAVE_COTASKMEMFREE 0
|
||||
%define HAVE_CRYPTGENRANDOM 0
|
||||
%define HAVE_DLOPEN 1
|
||||
%define HAVE_FCNTL 1
|
||||
%define HAVE_FLT_LIM 1
|
||||
%define HAVE_FORK 1
|
||||
|
@ -312,11 +313,13 @@
|
|||
%define HAVE_OS2THREADS 0
|
||||
%define HAVE_W32THREADS 0
|
||||
%define HAVE_AS_DN_DIRECTIVE 0
|
||||
%define HAVE_AS_FPU_DIRECTIVE 0
|
||||
%define HAVE_AS_FUNC 0
|
||||
%define HAVE_AS_OBJECT_ARCH 0
|
||||
%define HAVE_ASM_MOD_Q 0
|
||||
%define HAVE_ATTRIBUTE_MAY_ALIAS 1
|
||||
%define HAVE_ATTRIBUTE_PACKED 1
|
||||
%define HAVE_BLOCKS_EXTENSION 0
|
||||
%define HAVE_EBP_AVAILABLE 1
|
||||
%define HAVE_EBX_AVAILABLE 1
|
||||
%define HAVE_GNU_AS 0
|
||||
|
@ -333,6 +336,7 @@
|
|||
%define HAVE_XFORM_ASM 0
|
||||
%define HAVE_XMM_CLOBBERS 1
|
||||
%define HAVE_CONDITION_VARIABLE_PTR 0
|
||||
%define HAVE_KCMVIDEOCODECTYPE_HEVC 0
|
||||
%define HAVE_SOCKLEN_T 1
|
||||
%define HAVE_STRUCT_ADDRINFO 1
|
||||
%define HAVE_STRUCT_GROUP_SOURCE_REQ 1
|
||||
|
@ -349,28 +353,20 @@
|
|||
%define HAVE_STRUCT_V4L2_FRMIVALENUM_DISCRETE 1
|
||||
%define HAVE_ATOMICS_NATIVE 1
|
||||
%define HAVE_DOS_PATHS 0
|
||||
%define HAVE_DXVA2_LIB 0
|
||||
%define HAVE_DXVA2API_COBJ 0
|
||||
%define HAVE_LIBC_MSVCRT 0
|
||||
%define HAVE_LIBDC1394_1 0
|
||||
%define HAVE_LIBDC1394_2 0
|
||||
%define HAVE_MAKEINFO 0
|
||||
%define HAVE_MAKEINFO_HTML 0
|
||||
%define HAVE_MMAL_PARAMETER_VIDEO_MAX_NUM_CALLBACKS 0
|
||||
%define HAVE_PERL 1
|
||||
%define HAVE_POD2MAN 1
|
||||
%define HAVE_SDL2 0
|
||||
%define HAVE_SECTION_DATA_REL_RO 1
|
||||
%define HAVE_TEXI2HTML 0
|
||||
%define HAVE_THREADS 1
|
||||
%define HAVE_UWP 0
|
||||
%define HAVE_VAAPI_DRM 0
|
||||
%define HAVE_VAAPI_X11 0
|
||||
%define HAVE_VDPAU_X11 0
|
||||
%define HAVE_WINRT 0
|
||||
%define HAVE_XLIB 0
|
||||
%define CONFIG_BSFS 0
|
||||
%define CONFIG_DECODERS 1
|
||||
%define CONFIG_PARSERS 1
|
||||
%define CONFIG_DOC 0
|
||||
%define CONFIG_HTMLPAGES 0
|
||||
%define CONFIG_MANPAGES 1
|
||||
|
@ -378,13 +374,17 @@
|
|||
%define CONFIG_TXTPAGES 0
|
||||
%define CONFIG_AVIO_DIR_CMD_EXAMPLE 1
|
||||
%define CONFIG_AVIO_READING_EXAMPLE 1
|
||||
%define CONFIG_DECODING_ENCODING_EXAMPLE 0
|
||||
%define CONFIG_DECODE_AUDIO_EXAMPLE 1
|
||||
%define CONFIG_DECODE_VIDEO_EXAMPLE 1
|
||||
%define CONFIG_DEMUXING_DECODING_EXAMPLE 0
|
||||
%define CONFIG_ENCODE_AUDIO_EXAMPLE 1
|
||||
%define CONFIG_ENCODE_VIDEO_EXAMPLE 1
|
||||
%define CONFIG_EXTRACT_MVS_EXAMPLE 0
|
||||
%define CONFIG_FILTER_AUDIO_EXAMPLE 0
|
||||
%define CONFIG_FILTERING_AUDIO_EXAMPLE 0
|
||||
%define CONFIG_FILTERING_VIDEO_EXAMPLE 0
|
||||
%define CONFIG_HTTP_MULTICLIENT_EXAMPLE 0
|
||||
%define CONFIG_HW_DECODE_EXAMPLE 0
|
||||
%define CONFIG_METADATA_EXAMPLE 0
|
||||
%define CONFIG_MUXING_EXAMPLE 0
|
||||
%define CONFIG_QSVDEC_EXAMPLE 0
|
||||
|
@ -393,27 +393,55 @@
|
|||
%define CONFIG_SCALING_VIDEO_EXAMPLE 0
|
||||
%define CONFIG_TRANSCODE_AAC_EXAMPLE 0
|
||||
%define CONFIG_TRANSCODING_EXAMPLE 0
|
||||
%define CONFIG_AVISYNTH 0
|
||||
%define CONFIG_ALSA 1
|
||||
%define CONFIG_APPKIT 0
|
||||
%define CONFIG_AVFOUNDATION 0
|
||||
%define CONFIG_BZLIB 0
|
||||
%define CONFIG_CHROMAPRINT 0
|
||||
%define CONFIG_CRYSTALHD 0
|
||||
%define CONFIG_DECKLINK 0
|
||||
%define CONFIG_FREI0R 0
|
||||
%define CONFIG_GCRYPT 0
|
||||
%define CONFIG_GMP 0
|
||||
%define CONFIG_GNUTLS 0
|
||||
%define CONFIG_COREIMAGE 0
|
||||
%define CONFIG_ICONV 0
|
||||
%define CONFIG_JACK 0
|
||||
%define CONFIG_LIBXCB 0
|
||||
%define CONFIG_LIBXCB_SHM 0
|
||||
%define CONFIG_LIBXCB_SHAPE 0
|
||||
%define CONFIG_LIBXCB_XFIXES 0
|
||||
%define CONFIG_LZMA 1
|
||||
%define CONFIG_SCHANNEL 0
|
||||
%define CONFIG_SDL2 0
|
||||
%define CONFIG_SECURETRANSPORT 0
|
||||
%define CONFIG_SNDIO 0
|
||||
%define CONFIG_XLIB 1
|
||||
%define CONFIG_ZLIB 1
|
||||
%define CONFIG_AVISYNTH 0
|
||||
%define CONFIG_FREI0R 0
|
||||
%define CONFIG_LIBCDIO 0
|
||||
%define CONFIG_LIBRUBBERBAND 0
|
||||
%define CONFIG_LIBVIDSTAB 0
|
||||
%define CONFIG_LIBX264 0
|
||||
%define CONFIG_LIBX265 0
|
||||
%define CONFIG_LIBXAVS 0
|
||||
%define CONFIG_LIBXVID 0
|
||||
%define CONFIG_DECKLINK 0
|
||||
%define CONFIG_LIBNDI_NEWTEK 0
|
||||
%define CONFIG_LIBFDK_AAC 0
|
||||
%define CONFIG_OPENSSL 0
|
||||
%define CONFIG_GMP 0
|
||||
%define CONFIG_LIBOPENCORE_AMRNB 0
|
||||
%define CONFIG_LIBOPENCORE_AMRWB 0
|
||||
%define CONFIG_LIBVO_AMRWBENC 0
|
||||
%define CONFIG_RKMPP 0
|
||||
%define CONFIG_LIBSMBCLIENT 0
|
||||
%define CONFIG_CHROMAPRINT 0
|
||||
%define CONFIG_GCRYPT 0
|
||||
%define CONFIG_GNUTLS 0
|
||||
%define CONFIG_JNI 0
|
||||
%define CONFIG_LADSPA 0
|
||||
%define CONFIG_LIBASS 0
|
||||
%define CONFIG_LIBBLURAY 0
|
||||
%define CONFIG_LIBBS2B 0
|
||||
%define CONFIG_LIBCACA 0
|
||||
%define CONFIG_LIBCDIO 0
|
||||
%define CONFIG_LIBCELT 0
|
||||
%define CONFIG_LIBDC1394 0
|
||||
%define CONFIG_LIBEBUR128 0
|
||||
%define CONFIG_LIBFDK_AAC 0
|
||||
%define CONFIG_LIBDRM 0
|
||||
%define CONFIG_LIBFLITE 0
|
||||
%define CONFIG_LIBFONTCONFIG 0
|
||||
%define CONFIG_LIBFREETYPE 0
|
||||
|
@ -425,18 +453,15 @@
|
|||
%define CONFIG_LIBKVAZAAR 0
|
||||
%define CONFIG_LIBMODPLUG 0
|
||||
%define CONFIG_LIBMP3LAME 0
|
||||
%define CONFIG_LIBNUT 0
|
||||
%define CONFIG_LIBOPENCORE_AMRNB 0
|
||||
%define CONFIG_LIBOPENCORE_AMRWB 0
|
||||
%define CONFIG_LIBMYSOFA 0
|
||||
%define CONFIG_LIBOPENCV 0
|
||||
%define CONFIG_LIBOPENH264 0
|
||||
%define CONFIG_LIBOPENJPEG 0
|
||||
%define CONFIG_LIBOPENMPT 0
|
||||
%define CONFIG_LIBOPUS 0
|
||||
%define CONFIG_LIBPULSE 0
|
||||
%define CONFIG_LIBRSVG 0
|
||||
%define CONFIG_LIBRTMP 0
|
||||
%define CONFIG_LIBRUBBERBAND 0
|
||||
%define CONFIG_LIBSCHROEDINGER 0
|
||||
%define CONFIG_LIBSHINE 0
|
||||
%define CONFIG_LIBSMBCLIENT 0
|
||||
%define CONFIG_LIBSNAPPY 0
|
||||
|
@ -447,52 +472,37 @@
|
|||
%define CONFIG_LIBTHEORA 0
|
||||
%define CONFIG_LIBTWOLAME 0
|
||||
%define CONFIG_LIBV4L2 0
|
||||
%define CONFIG_LIBVIDSTAB 0
|
||||
%define CONFIG_LIBVO_AMRWBENC 0
|
||||
%define CONFIG_LIBVMAF 0
|
||||
%define CONFIG_LIBVORBIS 0
|
||||
%define CONFIG_LIBVPX 0
|
||||
%define CONFIG_LIBWAVPACK 0
|
||||
%define CONFIG_LIBWEBP 0
|
||||
%define CONFIG_LIBX264 0
|
||||
%define CONFIG_LIBX265 0
|
||||
%define CONFIG_LIBXAVS 0
|
||||
%define CONFIG_LIBXCB 0
|
||||
%define CONFIG_LIBXCB_SHM 0
|
||||
%define CONFIG_LIBXCB_SHAPE 0
|
||||
%define CONFIG_LIBXCB_XFIXES 0
|
||||
%define CONFIG_LIBXVID 0
|
||||
%define CONFIG_LIBXML2 0
|
||||
%define CONFIG_LIBZIMG 0
|
||||
%define CONFIG_LIBZMQ 0
|
||||
%define CONFIG_LIBZVBI 0
|
||||
%define CONFIG_LZMA 0
|
||||
%define CONFIG_MEDIACODEC 0
|
||||
%define CONFIG_NETCDF 0
|
||||
%define CONFIG_OPENAL 0
|
||||
%define CONFIG_OPENCL 0
|
||||
%define CONFIG_OPENGL 0
|
||||
%define CONFIG_OPENSSL 0
|
||||
%define CONFIG_SCHANNEL 0
|
||||
%define CONFIG_SDL 0
|
||||
%define CONFIG_SDL2 0
|
||||
%define CONFIG_SECURETRANSPORT 0
|
||||
%define CONFIG_VIDEOTOOLBOX 0
|
||||
%define CONFIG_X11GRAB 0
|
||||
%define CONFIG_XLIB 0
|
||||
%define CONFIG_ZLIB 0
|
||||
%define CONFIG_AUDIOTOOLBOX 0
|
||||
%define CONFIG_CUDA 0
|
||||
%define CONFIG_CUVID 0
|
||||
%define CONFIG_CRYSTALHD 0
|
||||
%define CONFIG_CUDA 1
|
||||
%define CONFIG_CUVID 1
|
||||
%define CONFIG_D3D11VA 0
|
||||
%define CONFIG_DXVA2 0
|
||||
%define CONFIG_LIBMFX 0
|
||||
%define CONFIG_LIBNPP 0
|
||||
%define CONFIG_MMAL 0
|
||||
%define CONFIG_NVENC 0
|
||||
%define CONFIG_OMX 0
|
||||
%define CONFIG_NVENC 1
|
||||
%define CONFIG_VAAPI 0
|
||||
%define CONFIG_VDA 0
|
||||
%define CONFIG_VDPAU 0
|
||||
%define CONFIG_VIDEOTOOLBOX 0
|
||||
%define CONFIG_V4L2_M2M 1
|
||||
%define CONFIG_XVMC 0
|
||||
%define CONFIG_CUDA_SDK 0
|
||||
%define CONFIG_LIBNPP 0
|
||||
%define CONFIG_LIBMFX 0
|
||||
%define CONFIG_MMAL 0
|
||||
%define CONFIG_OMX 0
|
||||
%define CONFIG_FTRAPV 0
|
||||
%define CONFIG_GRAY 0
|
||||
%define CONFIG_HARDCODED_TABLES 0
|
||||
|
@ -531,16 +541,27 @@
|
|||
%define CONFIG_PIXELUTILS 0
|
||||
%define CONFIG_NETWORK 0
|
||||
%define CONFIG_RDFT 0
|
||||
%define CONFIG_AUTODETECT 0
|
||||
%define CONFIG_FONTCONFIG 0
|
||||
%define CONFIG_MEMALIGN_HACK 0
|
||||
%define CONFIG_LINUX_PERF 0
|
||||
%define CONFIG_MEMORY_POISONING 0
|
||||
%define CONFIG_NEON_CLOBBER_TEST 0
|
||||
%define CONFIG_OSSFUZZ 0
|
||||
%define CONFIG_PIC 1
|
||||
%define CONFIG_POD2MAN 1
|
||||
%define CONFIG_RAISE_MAJOR 0
|
||||
%define CONFIG_THUMB 0
|
||||
%define CONFIG_VALGRIND_BACKTRACE 0
|
||||
%define CONFIG_XMM_CLOBBER_TEST 0
|
||||
%define CONFIG_BSFS 1
|
||||
%define CONFIG_DECODERS 1
|
||||
%define CONFIG_ENCODERS 0
|
||||
%define CONFIG_HWACCELS 0
|
||||
%define CONFIG_PARSERS 1
|
||||
%define CONFIG_INDEVS 0
|
||||
%define CONFIG_OUTDEVS 0
|
||||
%define CONFIG_FILTERS 0
|
||||
%define CONFIG_DEMUXERS 0
|
||||
%define CONFIG_MUXERS 0
|
||||
%define CONFIG_PROTOCOLS 0
|
||||
%define CONFIG_AANDCTTABLES 0
|
||||
%define CONFIG_AC3DSP 0
|
||||
%define CONFIG_AUDIO_FRAME_QUEUE 0
|
||||
|
@ -556,21 +577,24 @@
|
|||
%define CONFIG_FDCTDSP 0
|
||||
%define CONFIG_FLACDSP 1
|
||||
%define CONFIG_FMTCONVERT 0
|
||||
%define CONFIG_FRAME_THREAD_ENCODER 0
|
||||
%define CONFIG_G722DSP 0
|
||||
%define CONFIG_GOLOMB 1
|
||||
%define CONFIG_GOLOMB 0
|
||||
%define CONFIG_GPLV3 0
|
||||
%define CONFIG_H263DSP 0
|
||||
%define CONFIG_H264CHROMA 0
|
||||
%define CONFIG_H264DSP 0
|
||||
%define CONFIG_H264PARSE 0
|
||||
%define CONFIG_H264PRED 1
|
||||
%define CONFIG_H264QPEL 0
|
||||
%define CONFIG_HEVCPARSE 0
|
||||
%define CONFIG_HPELDSP 0
|
||||
%define CONFIG_HUFFMAN 0
|
||||
%define CONFIG_HUFFYUVDSP 0
|
||||
%define CONFIG_HUFFYUVENCDSP 0
|
||||
%define CONFIG_IDCTDSP 0
|
||||
%define CONFIG_IIRFILTER 0
|
||||
%define CONFIG_IMDCT15 0
|
||||
%define CONFIG_MDCT15 0
|
||||
%define CONFIG_INTRAX8 0
|
||||
%define CONFIG_ISO_MEDIA 0
|
||||
%define CONFIG_IVIDSP 0
|
||||
|
@ -579,12 +603,14 @@
|
|||
%define CONFIG_LIBX262 0
|
||||
%define CONFIG_LLAUDDSP 0
|
||||
%define CONFIG_LLVIDDSP 0
|
||||
%define CONFIG_LLVIDENCDSP 0
|
||||
%define CONFIG_LPC 0
|
||||
%define CONFIG_LZF 0
|
||||
%define CONFIG_ME_CMP 0
|
||||
%define CONFIG_MPEG_ER 0
|
||||
%define CONFIG_MPEGAUDIO 0
|
||||
%define CONFIG_MPEGAUDIODSP 0
|
||||
%define CONFIG_MPEGAUDIOHEADER 0
|
||||
%define CONFIG_MPEGVIDEO 0
|
||||
%define CONFIG_MPEGVIDEOENC 0
|
||||
%define CONFIG_MSS34DSP 0
|
||||
|
@ -606,13 +632,13 @@
|
|||
%define CONFIG_TEXTUREDSP 0
|
||||
%define CONFIG_TEXTUREDSPENC 0
|
||||
%define CONFIG_TPELDSP 0
|
||||
%define CONFIG_VAAPI_1 0
|
||||
%define CONFIG_VAAPI_ENCODE 0
|
||||
%define CONFIG_VC1DSP 0
|
||||
%define CONFIG_VIDEODSP 1
|
||||
%define CONFIG_VP3DSP 0
|
||||
%define CONFIG_VP56DSP 0
|
||||
%define CONFIG_VP8DSP 1
|
||||
%define CONFIG_VT_BT2020 0
|
||||
%define CONFIG_WMA_FREQS 0
|
||||
%define CONFIG_WMV2DSP 0
|
||||
%define CONFIG_NULL_BSF 1
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
/* Automatically generated by configure - do not modify! */
|
||||
#ifndef FFMPEG_CONFIG_H
|
||||
#define FFMPEG_CONFIG_H
|
||||
#define FFMPEG_CONFIGURATION "--disable-everything --disable-protocols --disable-demuxers --disable-muxers --disable-filters --disable-programs --disable-doc --disable-parsers --enable-parser=vp8 --enable-parser=vp9 --enable-decoder=vp8 --enable-decoder=vp9 --disable-static --enable-shared --disable-debug --disable-sdl --disable-libxcb --disable-securetransport --disable-iconv --disable-swresample --disable-swscale --disable-avdevice --disable-avfilter --disable-avformat --disable-d3d11va --disable-dxva2 --disable-vaapi --disable-vda --disable-vdpau --disable-videotoolbox --enable-asm --enable-yasm --disable-avx2"
|
||||
#define FFMPEG_CONFIGURATION "--disable-everything --disable-protocols --disable-demuxers --disable-muxers --disable-filters --disable-programs --disable-doc --disable-parsers --enable-parser=vp8 --enable-parser=vp9 --enable-decoder=vp8 --enable-decoder=vp9 --disable-static --enable-shared --disable-debug --disable-sdl2 --disable-libxcb --disable-securetransport --disable-iconv --disable-swresample --disable-swscale --disable-avdevice --disable-avfilter --disable-avformat --disable-d3d11va --disable-dxva2 --disable-vaapi --disable-vda --disable-vdpau --disable-videotoolbox --enable-decoder=flac --enable-asm --enable-x86asm"
|
||||
#define FFMPEG_LICENSE "LGPL version 2.1 or later"
|
||||
#define CONFIG_THIS_YEAR 2016
|
||||
#define CONFIG_THIS_YEAR 2017
|
||||
#define FFMPEG_DATADIR "/usr/local/share/ffmpeg"
|
||||
#define AVCONV_DATADIR "/usr/local/share/ffmpeg"
|
||||
#define CC_IDENT "gcc 4.6 (Ubuntu/Linaro 4.6.3-1ubuntu5)"
|
||||
#define CC_IDENT "gcc 6.3.0 (Ubuntu 6.3.0-12ubuntu2) 20170406"
|
||||
#define av_restrict restrict
|
||||
#define EXTERN_PREFIX ""
|
||||
#define EXTERN_ASM
|
||||
|
@ -79,8 +79,8 @@
|
|||
#define HAVE_MIPSDSP 0
|
||||
#define HAVE_MIPSDSPR2 0
|
||||
#define HAVE_MSA 0
|
||||
#define HAVE_LOONGSON2 1
|
||||
#define HAVE_LOONGSON3 1
|
||||
#define HAVE_LOONGSON2 0
|
||||
#define HAVE_LOONGSON3 0
|
||||
#define HAVE_MMI 0
|
||||
#define HAVE_ARMV5TE_EXTERNAL 0
|
||||
#define HAVE_ARMV6_EXTERNAL 0
|
||||
|
@ -183,7 +183,6 @@
|
|||
#define HAVE_ATOMICS_SUNCC 0
|
||||
#define HAVE_ATOMICS_WIN32 0
|
||||
#define HAVE_ATOMIC_CAS_PTR 0
|
||||
#define HAVE_ATOMIC_COMPARE_EXCHANGE 0
|
||||
#define HAVE_MACHINE_RW_BARRIER 0
|
||||
#define HAVE_MEMORYBARRIER 0
|
||||
#define HAVE_MM_EMPTY 1
|
||||
|
@ -198,12 +197,13 @@
|
|||
#define HAVE_X86ASM 1
|
||||
#define HAVE_BIGENDIAN 0
|
||||
#define HAVE_FAST_UNALIGNED 1
|
||||
#define HAVE_ALSA_ASOUNDLIB_H 0
|
||||
#define HAVE_ALTIVEC_H 0
|
||||
#define HAVE_ARPA_INET_H 1
|
||||
#define HAVE_ASM_TYPES_H 1
|
||||
#define HAVE_CDIO_PARANOIA_H 0
|
||||
#define HAVE_CDIO_PARANOIA_PARANOIA_H 0
|
||||
#define HAVE_CUDA_H 0
|
||||
#define HAVE_D3D11_H 0
|
||||
#define HAVE_DISPATCH_DISPATCH_H 0
|
||||
#define HAVE_DEV_BKTR_IOCTL_BT848_H 0
|
||||
#define HAVE_DEV_BKTR_IOCTL_METEOR_H 0
|
||||
|
@ -213,7 +213,7 @@
|
|||
#define HAVE_DIRECT_H 0
|
||||
#define HAVE_DIRENT_H 1
|
||||
#define HAVE_DLFCN_H 1
|
||||
#define HAVE_D3D11_H 0
|
||||
#define HAVE_DXGIDEBUG_H 0
|
||||
#define HAVE_DXVA_H 0
|
||||
#define HAVE_ES2_GL_H 0
|
||||
#define HAVE_GSM_H 0
|
||||
|
@ -222,12 +222,13 @@
|
|||
#define HAVE_MACHINE_IOCTL_BT848_H 0
|
||||
#define HAVE_MACHINE_IOCTL_METEOR_H 0
|
||||
#define HAVE_OPENCV2_CORE_CORE_C_H 0
|
||||
#define HAVE_OPENJPEG_2_3_OPENJPEG_H 0
|
||||
#define HAVE_OPENJPEG_2_2_OPENJPEG_H 0
|
||||
#define HAVE_OPENJPEG_2_1_OPENJPEG_H 0
|
||||
#define HAVE_OPENJPEG_2_0_OPENJPEG_H 0
|
||||
#define HAVE_OPENJPEG_1_5_OPENJPEG_H 0
|
||||
#define HAVE_OPENGL_GL3_H 0
|
||||
#define HAVE_POLL_H 1
|
||||
#define HAVE_SNDIO_H 0
|
||||
#define HAVE_SOUNDCARD_H 0
|
||||
#define HAVE_STDATOMIC_H 1
|
||||
#define HAVE_SYS_MMAN_H 1
|
||||
|
@ -281,7 +282,6 @@
|
|||
#define HAVE_COMMANDLINETOARGVW 0
|
||||
#define HAVE_COTASKMEMFREE 0
|
||||
#define HAVE_CRYPTGENRANDOM 0
|
||||
#define HAVE_DLOPEN 1
|
||||
#define HAVE_FCNTL 1
|
||||
#define HAVE_FLT_LIM 1
|
||||
#define HAVE_FORK 1
|
||||
|
@ -320,6 +320,7 @@
|
|||
#define HAVE_SLEEP 0
|
||||
#define HAVE_STRERROR_R 1
|
||||
#define HAVE_SYSCONF 1
|
||||
#define HAVE_SYSCTL 0
|
||||
#define HAVE_USLEEP 1
|
||||
#define HAVE_UTGETOSTYPEFROMSTRING 0
|
||||
#define HAVE_VIRTUALALLOC 0
|
||||
|
@ -328,11 +329,13 @@
|
|||
#define HAVE_OS2THREADS 0
|
||||
#define HAVE_W32THREADS 0
|
||||
#define HAVE_AS_DN_DIRECTIVE 0
|
||||
#define HAVE_AS_FPU_DIRECTIVE 0
|
||||
#define HAVE_AS_FUNC 0
|
||||
#define HAVE_AS_OBJECT_ARCH 0
|
||||
#define HAVE_ASM_MOD_Q 0
|
||||
#define HAVE_ATTRIBUTE_MAY_ALIAS 1
|
||||
#define HAVE_ATTRIBUTE_PACKED 1
|
||||
#define HAVE_BLOCKS_EXTENSION 0
|
||||
#define HAVE_EBP_AVAILABLE 1
|
||||
#define HAVE_EBX_AVAILABLE 1
|
||||
#define HAVE_GNU_AS 0
|
||||
|
@ -349,6 +352,7 @@
|
|||
#define HAVE_XFORM_ASM 0
|
||||
#define HAVE_XMM_CLOBBERS 1
|
||||
#define HAVE_CONDITION_VARIABLE_PTR 0
|
||||
#define HAVE_KCMVIDEOCODECTYPE_HEVC 0
|
||||
#define HAVE_SOCKLEN_T 1
|
||||
#define HAVE_STRUCT_ADDRINFO 1
|
||||
#define HAVE_STRUCT_GROUP_SOURCE_REQ 1
|
||||
|
@ -365,28 +369,20 @@
|
|||
#define HAVE_STRUCT_V4L2_FRMIVALENUM_DISCRETE 1
|
||||
#define HAVE_ATOMICS_NATIVE 1
|
||||
#define HAVE_DOS_PATHS 0
|
||||
#define HAVE_DXVA2_LIB 0
|
||||
#define HAVE_DXVA2API_COBJ 0
|
||||
#define HAVE_LIBC_MSVCRT 0
|
||||
#define HAVE_LIBDC1394_1 0
|
||||
#define HAVE_LIBDC1394_2 0
|
||||
#define HAVE_MAKEINFO 0
|
||||
#define HAVE_MAKEINFO_HTML 0
|
||||
#define HAVE_MMAL_PARAMETER_VIDEO_MAX_NUM_CALLBACKS 0
|
||||
#define HAVE_PERL 1
|
||||
#define HAVE_POD2MAN 1
|
||||
#define HAVE_SDL2 0
|
||||
#define HAVE_SECTION_DATA_REL_RO 1
|
||||
#define HAVE_TEXI2HTML 0
|
||||
#define HAVE_THREADS 1
|
||||
#define HAVE_UWP 0
|
||||
#define HAVE_VAAPI_DRM 0
|
||||
#define HAVE_VAAPI_X11 0
|
||||
#define HAVE_VDPAU_X11 0
|
||||
#define HAVE_WINRT 0
|
||||
#define HAVE_XLIB 0
|
||||
#define CONFIG_BSFS 0
|
||||
#define CONFIG_DECODERS 1
|
||||
#define CONFIG_PARSERS 1
|
||||
#define CONFIG_DOC 0
|
||||
#define CONFIG_HTMLPAGES 0
|
||||
#define CONFIG_MANPAGES 1
|
||||
|
@ -394,13 +390,17 @@
|
|||
#define CONFIG_TXTPAGES 0
|
||||
#define CONFIG_AVIO_DIR_CMD_EXAMPLE 1
|
||||
#define CONFIG_AVIO_READING_EXAMPLE 1
|
||||
#define CONFIG_DECODING_ENCODING_EXAMPLE 0
|
||||
#define CONFIG_DECODE_AUDIO_EXAMPLE 1
|
||||
#define CONFIG_DECODE_VIDEO_EXAMPLE 1
|
||||
#define CONFIG_DEMUXING_DECODING_EXAMPLE 0
|
||||
#define CONFIG_ENCODE_AUDIO_EXAMPLE 1
|
||||
#define CONFIG_ENCODE_VIDEO_EXAMPLE 1
|
||||
#define CONFIG_EXTRACT_MVS_EXAMPLE 0
|
||||
#define CONFIG_FILTER_AUDIO_EXAMPLE 0
|
||||
#define CONFIG_FILTERING_AUDIO_EXAMPLE 0
|
||||
#define CONFIG_FILTERING_VIDEO_EXAMPLE 0
|
||||
#define CONFIG_HTTP_MULTICLIENT_EXAMPLE 0
|
||||
#define CONFIG_HW_DECODE_EXAMPLE 0
|
||||
#define CONFIG_METADATA_EXAMPLE 0
|
||||
#define CONFIG_MUXING_EXAMPLE 0
|
||||
#define CONFIG_QSVDEC_EXAMPLE 0
|
||||
|
@ -409,27 +409,55 @@
|
|||
#define CONFIG_SCALING_VIDEO_EXAMPLE 0
|
||||
#define CONFIG_TRANSCODE_AAC_EXAMPLE 0
|
||||
#define CONFIG_TRANSCODING_EXAMPLE 0
|
||||
#define CONFIG_AVISYNTH 0
|
||||
#define CONFIG_ALSA 1
|
||||
#define CONFIG_APPKIT 0
|
||||
#define CONFIG_AVFOUNDATION 0
|
||||
#define CONFIG_BZLIB 0
|
||||
#define CONFIG_CHROMAPRINT 0
|
||||
#define CONFIG_CRYSTALHD 0
|
||||
#define CONFIG_DECKLINK 0
|
||||
#define CONFIG_FREI0R 0
|
||||
#define CONFIG_GCRYPT 0
|
||||
#define CONFIG_GMP 0
|
||||
#define CONFIG_GNUTLS 0
|
||||
#define CONFIG_COREIMAGE 0
|
||||
#define CONFIG_ICONV 0
|
||||
#define CONFIG_JACK 0
|
||||
#define CONFIG_LIBXCB 0
|
||||
#define CONFIG_LIBXCB_SHM 0
|
||||
#define CONFIG_LIBXCB_SHAPE 0
|
||||
#define CONFIG_LIBXCB_XFIXES 0
|
||||
#define CONFIG_LZMA 1
|
||||
#define CONFIG_SCHANNEL 0
|
||||
#define CONFIG_SDL2 0
|
||||
#define CONFIG_SECURETRANSPORT 0
|
||||
#define CONFIG_SNDIO 0
|
||||
#define CONFIG_XLIB 1
|
||||
#define CONFIG_ZLIB 1
|
||||
#define CONFIG_AVISYNTH 0
|
||||
#define CONFIG_FREI0R 0
|
||||
#define CONFIG_LIBCDIO 0
|
||||
#define CONFIG_LIBRUBBERBAND 0
|
||||
#define CONFIG_LIBVIDSTAB 0
|
||||
#define CONFIG_LIBX264 0
|
||||
#define CONFIG_LIBX265 0
|
||||
#define CONFIG_LIBXAVS 0
|
||||
#define CONFIG_LIBXVID 0
|
||||
#define CONFIG_DECKLINK 0
|
||||
#define CONFIG_LIBNDI_NEWTEK 0
|
||||
#define CONFIG_LIBFDK_AAC 0
|
||||
#define CONFIG_OPENSSL 0
|
||||
#define CONFIG_GMP 0
|
||||
#define CONFIG_LIBOPENCORE_AMRNB 0
|
||||
#define CONFIG_LIBOPENCORE_AMRWB 0
|
||||
#define CONFIG_LIBVO_AMRWBENC 0
|
||||
#define CONFIG_RKMPP 0
|
||||
#define CONFIG_LIBSMBCLIENT 0
|
||||
#define CONFIG_CHROMAPRINT 0
|
||||
#define CONFIG_GCRYPT 0
|
||||
#define CONFIG_GNUTLS 0
|
||||
#define CONFIG_JNI 0
|
||||
#define CONFIG_LADSPA 0
|
||||
#define CONFIG_LIBASS 0
|
||||
#define CONFIG_LIBBLURAY 0
|
||||
#define CONFIG_LIBBS2B 0
|
||||
#define CONFIG_LIBCACA 0
|
||||
#define CONFIG_LIBCDIO 0
|
||||
#define CONFIG_LIBCELT 0
|
||||
#define CONFIG_LIBDC1394 0
|
||||
#define CONFIG_LIBEBUR128 0
|
||||
#define CONFIG_LIBFDK_AAC 0
|
||||
#define CONFIG_LIBDRM 0
|
||||
#define CONFIG_LIBFLITE 0
|
||||
#define CONFIG_LIBFONTCONFIG 0
|
||||
#define CONFIG_LIBFREETYPE 0
|
||||
|
@ -441,18 +469,15 @@
|
|||
#define CONFIG_LIBKVAZAAR 0
|
||||
#define CONFIG_LIBMODPLUG 0
|
||||
#define CONFIG_LIBMP3LAME 0
|
||||
#define CONFIG_LIBNUT 0
|
||||
#define CONFIG_LIBOPENCORE_AMRNB 0
|
||||
#define CONFIG_LIBOPENCORE_AMRWB 0
|
||||
#define CONFIG_LIBMYSOFA 0
|
||||
#define CONFIG_LIBOPENCV 0
|
||||
#define CONFIG_LIBOPENH264 0
|
||||
#define CONFIG_LIBOPENJPEG 0
|
||||
#define CONFIG_LIBOPENMPT 0
|
||||
#define CONFIG_LIBOPUS 0
|
||||
#define CONFIG_LIBPULSE 0
|
||||
#define CONFIG_LIBRSVG 0
|
||||
#define CONFIG_LIBRTMP 0
|
||||
#define CONFIG_LIBRUBBERBAND 0
|
||||
#define CONFIG_LIBSCHROEDINGER 0
|
||||
#define CONFIG_LIBSHINE 0
|
||||
#define CONFIG_LIBSMBCLIENT 0
|
||||
#define CONFIG_LIBSNAPPY 0
|
||||
|
@ -463,52 +488,37 @@
|
|||
#define CONFIG_LIBTHEORA 0
|
||||
#define CONFIG_LIBTWOLAME 0
|
||||
#define CONFIG_LIBV4L2 0
|
||||
#define CONFIG_LIBVIDSTAB 0
|
||||
#define CONFIG_LIBVO_AMRWBENC 0
|
||||
#define CONFIG_LIBVMAF 0
|
||||
#define CONFIG_LIBVORBIS 0
|
||||
#define CONFIG_LIBVPX 0
|
||||
#define CONFIG_LIBWAVPACK 0
|
||||
#define CONFIG_LIBWEBP 0
|
||||
#define CONFIG_LIBX264 0
|
||||
#define CONFIG_LIBX265 0
|
||||
#define CONFIG_LIBXAVS 0
|
||||
#define CONFIG_LIBXCB 0
|
||||
#define CONFIG_LIBXCB_SHM 0
|
||||
#define CONFIG_LIBXCB_SHAPE 0
|
||||
#define CONFIG_LIBXCB_XFIXES 0
|
||||
#define CONFIG_LIBXVID 0
|
||||
#define CONFIG_LIBXML2 0
|
||||
#define CONFIG_LIBZIMG 0
|
||||
#define CONFIG_LIBZMQ 0
|
||||
#define CONFIG_LIBZVBI 0
|
||||
#define CONFIG_LZMA 0
|
||||
#define CONFIG_MEDIACODEC 0
|
||||
#define CONFIG_NETCDF 0
|
||||
#define CONFIG_OPENAL 0
|
||||
#define CONFIG_OPENCL 0
|
||||
#define CONFIG_OPENGL 0
|
||||
#define CONFIG_OPENSSL 0
|
||||
#define CONFIG_SCHANNEL 0
|
||||
#define CONFIG_SDL 0
|
||||
#define CONFIG_SDL2 0
|
||||
#define CONFIG_SECURETRANSPORT 0
|
||||
#define CONFIG_VIDEOTOOLBOX 0
|
||||
#define CONFIG_X11GRAB 0
|
||||
#define CONFIG_XLIB 0
|
||||
#define CONFIG_ZLIB 0
|
||||
#define CONFIG_AUDIOTOOLBOX 0
|
||||
#define CONFIG_CUDA 0
|
||||
#define CONFIG_CUVID 0
|
||||
#define CONFIG_CRYSTALHD 0
|
||||
#define CONFIG_CUDA 1
|
||||
#define CONFIG_CUVID 1
|
||||
#define CONFIG_D3D11VA 0
|
||||
#define CONFIG_DXVA2 0
|
||||
#define CONFIG_LIBMFX 0
|
||||
#define CONFIG_LIBNPP 0
|
||||
#define CONFIG_MMAL 0
|
||||
#define CONFIG_NVENC 0
|
||||
#define CONFIG_OMX 0
|
||||
#define CONFIG_NVENC 1
|
||||
#define CONFIG_VAAPI 0
|
||||
#define CONFIG_VDA 0
|
||||
#define CONFIG_VDPAU 0
|
||||
#define CONFIG_VIDEOTOOLBOX 0
|
||||
#define CONFIG_V4L2_M2M 1
|
||||
#define CONFIG_XVMC 0
|
||||
#define CONFIG_CUDA_SDK 0
|
||||
#define CONFIG_LIBNPP 0
|
||||
#define CONFIG_LIBMFX 0
|
||||
#define CONFIG_MMAL 0
|
||||
#define CONFIG_OMX 0
|
||||
#define CONFIG_FTRAPV 0
|
||||
#define CONFIG_GRAY 0
|
||||
#define CONFIG_HARDCODED_TABLES 0
|
||||
|
@ -547,16 +557,27 @@
|
|||
#define CONFIG_PIXELUTILS 0
|
||||
#define CONFIG_NETWORK 0
|
||||
#define CONFIG_RDFT 0
|
||||
#define CONFIG_AUTODETECT 0
|
||||
#define CONFIG_FONTCONFIG 0
|
||||
#define CONFIG_MEMALIGN_HACK 0
|
||||
#define CONFIG_LINUX_PERF 0
|
||||
#define CONFIG_MEMORY_POISONING 0
|
||||
#define CONFIG_NEON_CLOBBER_TEST 0
|
||||
#define CONFIG_OSSFUZZ 0
|
||||
#define CONFIG_PIC 1
|
||||
#define CONFIG_POD2MAN 1
|
||||
#define CONFIG_RAISE_MAJOR 0
|
||||
#define CONFIG_THUMB 0
|
||||
#define CONFIG_VALGRIND_BACKTRACE 0
|
||||
#define CONFIG_XMM_CLOBBER_TEST 0
|
||||
#define CONFIG_BSFS 1
|
||||
#define CONFIG_DECODERS 1
|
||||
#define CONFIG_ENCODERS 0
|
||||
#define CONFIG_HWACCELS 0
|
||||
#define CONFIG_PARSERS 1
|
||||
#define CONFIG_INDEVS 0
|
||||
#define CONFIG_OUTDEVS 0
|
||||
#define CONFIG_FILTERS 0
|
||||
#define CONFIG_DEMUXERS 0
|
||||
#define CONFIG_MUXERS 0
|
||||
#define CONFIG_PROTOCOLS 0
|
||||
#define CONFIG_AANDCTTABLES 0
|
||||
#define CONFIG_AC3DSP 0
|
||||
#define CONFIG_AUDIO_FRAME_QUEUE 0
|
||||
|
@ -572,21 +593,24 @@
|
|||
#define CONFIG_FDCTDSP 0
|
||||
#define CONFIG_FLACDSP 1
|
||||
#define CONFIG_FMTCONVERT 0
|
||||
#define CONFIG_FRAME_THREAD_ENCODER 0
|
||||
#define CONFIG_G722DSP 0
|
||||
#define CONFIG_GOLOMB 1
|
||||
#define CONFIG_GOLOMB 0
|
||||
#define CONFIG_GPLV3 0
|
||||
#define CONFIG_H263DSP 0
|
||||
#define CONFIG_H264CHROMA 0
|
||||
#define CONFIG_H264DSP 0
|
||||
#define CONFIG_H264PARSE 0
|
||||
#define CONFIG_H264PRED 1
|
||||
#define CONFIG_H264QPEL 0
|
||||
#define CONFIG_HEVCPARSE 0
|
||||
#define CONFIG_HPELDSP 0
|
||||
#define CONFIG_HUFFMAN 0
|
||||
#define CONFIG_HUFFYUVDSP 0
|
||||
#define CONFIG_HUFFYUVENCDSP 0
|
||||
#define CONFIG_IDCTDSP 0
|
||||
#define CONFIG_IIRFILTER 0
|
||||
#define CONFIG_IMDCT15 0
|
||||
#define CONFIG_MDCT15 0
|
||||
#define CONFIG_INTRAX8 0
|
||||
#define CONFIG_ISO_MEDIA 0
|
||||
#define CONFIG_IVIDSP 0
|
||||
|
@ -595,12 +619,14 @@
|
|||
#define CONFIG_LIBX262 0
|
||||
#define CONFIG_LLAUDDSP 0
|
||||
#define CONFIG_LLVIDDSP 0
|
||||
#define CONFIG_LLVIDENCDSP 0
|
||||
#define CONFIG_LPC 0
|
||||
#define CONFIG_LZF 0
|
||||
#define CONFIG_ME_CMP 0
|
||||
#define CONFIG_MPEG_ER 0
|
||||
#define CONFIG_MPEGAUDIO 0
|
||||
#define CONFIG_MPEGAUDIODSP 0
|
||||
#define CONFIG_MPEGAUDIOHEADER 0
|
||||
#define CONFIG_MPEGVIDEO 0
|
||||
#define CONFIG_MPEGVIDEOENC 0
|
||||
#define CONFIG_MSS34DSP 0
|
||||
|
@ -622,13 +648,13 @@
|
|||
#define CONFIG_TEXTUREDSP 0
|
||||
#define CONFIG_TEXTUREDSPENC 0
|
||||
#define CONFIG_TPELDSP 0
|
||||
#define CONFIG_VAAPI_1 0
|
||||
#define CONFIG_VAAPI_ENCODE 0
|
||||
#define CONFIG_VC1DSP 0
|
||||
#define CONFIG_VIDEODSP 1
|
||||
#define CONFIG_VP3DSP 0
|
||||
#define CONFIG_VP56DSP 0
|
||||
#define CONFIG_VP8DSP 1
|
||||
#define CONFIG_VT_BT2020 0
|
||||
#define CONFIG_WMA_FREQS 0
|
||||
#define CONFIG_WMV2DSP 0
|
||||
#define CONFIG_NULL_BSF 1
|
||||
|
|
|
@ -63,8 +63,8 @@
|
|||
%define HAVE_MIPSDSP 0
|
||||
%define HAVE_MIPSDSPR2 0
|
||||
%define HAVE_MSA 0
|
||||
%define HAVE_LOONGSON2 1
|
||||
%define HAVE_LOONGSON3 1
|
||||
%define HAVE_LOONGSON2 0
|
||||
%define HAVE_LOONGSON3 0
|
||||
%define HAVE_MMI 0
|
||||
%define HAVE_ARMV5TE_EXTERNAL 0
|
||||
%define HAVE_ARMV6_EXTERNAL 0
|
||||
|
@ -156,37 +156,38 @@
|
|||
%define HAVE_MMI_INLINE 0
|
||||
%define HAVE_ALIGNED_STACK 0
|
||||
%define HAVE_FAST_64BIT 0
|
||||
%define HAVE_FAST_CLZ 0
|
||||
%define HAVE_FAST_CLZ 1
|
||||
%define HAVE_FAST_CMOV 0
|
||||
%define HAVE_LOCAL_ALIGNED_8 1
|
||||
%define HAVE_LOCAL_ALIGNED_16 1
|
||||
%define HAVE_LOCAL_ALIGNED_32 1
|
||||
%define HAVE_SIMD_ALIGN_16 1
|
||||
%define HAVE_SIMD_ALIGN_32 1
|
||||
%define HAVE_ATOMICS_GCC 0
|
||||
%define HAVE_ATOMICS_SUNCC 0
|
||||
%define HAVE_ATOMICS_WIN32 1
|
||||
%define HAVE_ATOMIC_CAS_PTR 0
|
||||
%define HAVE_ATOMIC_COMPARE_EXCHANGE 0
|
||||
%define HAVE_MACHINE_RW_BARRIER 0
|
||||
%define HAVE_MEMORYBARRIER 1
|
||||
%define HAVE_MM_EMPTY 1
|
||||
%define HAVE_RDTSC 1
|
||||
%define HAVE_SARESTART 0
|
||||
%define HAVE_SEM_TIMEDWAIT 1
|
||||
%define HAVE_SEM_TIMEDWAIT 0
|
||||
%define HAVE_SYNC_VAL_COMPARE_AND_SWAP 0
|
||||
%define HAVE_CABS 0
|
||||
%define HAVE_CEXP 0
|
||||
%define HAVE_INLINE_ASM 0
|
||||
%define HAVE_SYMVER 0
|
||||
%define HAVE_YASM 1
|
||||
%define HAVE_X86ASM 1
|
||||
%define HAVE_BIGENDIAN 0
|
||||
%define HAVE_FAST_UNALIGNED 1
|
||||
%define HAVE_ALSA_ASOUNDLIB_H 0
|
||||
%define HAVE_ALTIVEC_H 0
|
||||
%define HAVE_ARPA_INET_H 0
|
||||
%define HAVE_ASM_TYPES_H 0
|
||||
%define HAVE_CDIO_PARANOIA_H 0
|
||||
%define HAVE_CDIO_PARANOIA_PARANOIA_H 0
|
||||
%define HAVE_CUDA_H 0
|
||||
%define HAVE_D3D11_H 1
|
||||
%define HAVE_DISPATCH_DISPATCH_H 0
|
||||
%define HAVE_DEV_BKTR_IOCTL_BT848_H 0
|
||||
%define HAVE_DEV_BKTR_IOCTL_METEOR_H 0
|
||||
|
@ -196,7 +197,7 @@
|
|||
%define HAVE_DIRECT_H 1
|
||||
%define HAVE_DIRENT_H 0
|
||||
%define HAVE_DLFCN_H 0
|
||||
%define HAVE_D3D11_H 1
|
||||
%define HAVE_DXGIDEBUG_H 1
|
||||
%define HAVE_DXVA_H 1
|
||||
%define HAVE_ES2_GL_H 0
|
||||
%define HAVE_GSM_H 0
|
||||
|
@ -205,12 +206,13 @@
|
|||
%define HAVE_MACHINE_IOCTL_BT848_H 0
|
||||
%define HAVE_MACHINE_IOCTL_METEOR_H 0
|
||||
%define HAVE_OPENCV2_CORE_CORE_C_H 0
|
||||
%define HAVE_OPENJPEG_2_3_OPENJPEG_H 0
|
||||
%define HAVE_OPENJPEG_2_2_OPENJPEG_H 0
|
||||
%define HAVE_OPENJPEG_2_1_OPENJPEG_H 0
|
||||
%define HAVE_OPENJPEG_2_0_OPENJPEG_H 0
|
||||
%define HAVE_OPENJPEG_1_5_OPENJPEG_H 0
|
||||
%define HAVE_OPENGL_GL3_H 0
|
||||
%define HAVE_POLL_H 0
|
||||
%define HAVE_SNDIO_H 0
|
||||
%define HAVE_SOUNDCARD_H 0
|
||||
%define HAVE_STDATOMIC_H 0
|
||||
%define HAVE_SYS_MMAN_H 0
|
||||
|
@ -264,7 +266,6 @@
|
|||
%define HAVE_COMMANDLINETOARGVW 1
|
||||
%define HAVE_COTASKMEMFREE 1
|
||||
%define HAVE_CRYPTGENRANDOM 1
|
||||
%define HAVE_DLOPEN 0
|
||||
%define HAVE_FCNTL 0
|
||||
%define HAVE_FLT_LIM 1
|
||||
%define HAVE_FORK 0
|
||||
|
@ -284,7 +285,7 @@
|
|||
%define HAVE_ISATTY 1
|
||||
%define HAVE_JACK_PORT_GET_LATENCY_RANGE 0
|
||||
%define HAVE_KBHIT 1
|
||||
%define HAVE_LOADLIBRARY 0
|
||||
%define HAVE_LOADLIBRARY 1
|
||||
%define HAVE_LSTAT 0
|
||||
%define HAVE_LZO1X_999_COMPRESS 0
|
||||
%define HAVE_MACH_ABSOLUTE_TIME 0
|
||||
|
@ -312,11 +313,13 @@
|
|||
%define HAVE_OS2THREADS 0
|
||||
%define HAVE_W32THREADS 1
|
||||
%define HAVE_AS_DN_DIRECTIVE 0
|
||||
%define HAVE_AS_FPU_DIRECTIVE 0
|
||||
%define HAVE_AS_FUNC 0
|
||||
%define HAVE_AS_OBJECT_ARCH 0
|
||||
%define HAVE_ASM_MOD_Q 0
|
||||
%define HAVE_ATTRIBUTE_MAY_ALIAS 0
|
||||
%define HAVE_ATTRIBUTE_PACKED 0
|
||||
%define HAVE_BLOCKS_EXTENSION 0
|
||||
%define HAVE_EBP_AVAILABLE 0
|
||||
%define HAVE_EBX_AVAILABLE 0
|
||||
%define HAVE_GNU_AS 0
|
||||
|
@ -333,12 +336,13 @@
|
|||
%define HAVE_XFORM_ASM 0
|
||||
%define HAVE_XMM_CLOBBERS 0
|
||||
%define HAVE_CONDITION_VARIABLE_PTR 1
|
||||
%define HAVE_KCMVIDEOCODECTYPE_HEVC 0
|
||||
%define HAVE_SOCKLEN_T 1
|
||||
%define HAVE_STRUCT_ADDRINFO 1
|
||||
%define HAVE_STRUCT_GROUP_SOURCE_REQ 1
|
||||
%define HAVE_STRUCT_IP_MREQ_SOURCE 1
|
||||
%define HAVE_STRUCT_IPV6_MREQ 1
|
||||
%define HAVE_STRUCT_MSGHDR_MSG_FLAGS 1
|
||||
%define HAVE_STRUCT_MSGHDR_MSG_FLAGS 0
|
||||
%define HAVE_STRUCT_POLLFD 0
|
||||
%define HAVE_STRUCT_RUSAGE_RU_MAXRSS 0
|
||||
%define HAVE_STRUCT_SCTP_EVENT_SUBSCRIBE 0
|
||||
|
@ -349,28 +353,20 @@
|
|||
%define HAVE_STRUCT_V4L2_FRMIVALENUM_DISCRETE 0
|
||||
%define HAVE_ATOMICS_NATIVE 1
|
||||
%define HAVE_DOS_PATHS 1
|
||||
%define HAVE_DXVA2_LIB 0
|
||||
%define HAVE_DXVA2API_COBJ 1
|
||||
%define HAVE_LIBC_MSVCRT 1
|
||||
%define HAVE_LIBDC1394_1 0
|
||||
%define HAVE_LIBDC1394_2 0
|
||||
%define HAVE_MAKEINFO 1
|
||||
%define HAVE_MAKEINFO_HTML 0
|
||||
%define HAVE_MMAL_PARAMETER_VIDEO_MAX_NUM_CALLBACKS 0
|
||||
%define HAVE_PERL 1
|
||||
%define HAVE_POD2MAN 1
|
||||
%define HAVE_SDL2 0
|
||||
%define HAVE_SECTION_DATA_REL_RO 0
|
||||
%define HAVE_TEXI2HTML 0
|
||||
%define HAVE_THREADS 1
|
||||
%define HAVE_UWP 0
|
||||
%define HAVE_VAAPI_DRM 0
|
||||
%define HAVE_VAAPI_X11 0
|
||||
%define HAVE_VDPAU_X11 0
|
||||
%define HAVE_WINRT 0
|
||||
%define HAVE_XLIB 0
|
||||
%define CONFIG_BSFS 0
|
||||
%define CONFIG_DECODERS 1
|
||||
%define CONFIG_PARSERS 1
|
||||
%define CONFIG_DOC 0
|
||||
%define CONFIG_HTMLPAGES 0
|
||||
%define CONFIG_MANPAGES 1
|
||||
|
@ -378,13 +374,17 @@
|
|||
%define CONFIG_TXTPAGES 1
|
||||
%define CONFIG_AVIO_DIR_CMD_EXAMPLE 1
|
||||
%define CONFIG_AVIO_READING_EXAMPLE 1
|
||||
%define CONFIG_DECODING_ENCODING_EXAMPLE 0
|
||||
%define CONFIG_DECODE_AUDIO_EXAMPLE 1
|
||||
%define CONFIG_DECODE_VIDEO_EXAMPLE 1
|
||||
%define CONFIG_DEMUXING_DECODING_EXAMPLE 0
|
||||
%define CONFIG_ENCODE_AUDIO_EXAMPLE 1
|
||||
%define CONFIG_ENCODE_VIDEO_EXAMPLE 1
|
||||
%define CONFIG_EXTRACT_MVS_EXAMPLE 0
|
||||
%define CONFIG_FILTER_AUDIO_EXAMPLE 0
|
||||
%define CONFIG_FILTERING_AUDIO_EXAMPLE 0
|
||||
%define CONFIG_FILTERING_VIDEO_EXAMPLE 0
|
||||
%define CONFIG_HTTP_MULTICLIENT_EXAMPLE 0
|
||||
%define CONFIG_HW_DECODE_EXAMPLE 0
|
||||
%define CONFIG_METADATA_EXAMPLE 0
|
||||
%define CONFIG_MUXING_EXAMPLE 0
|
||||
%define CONFIG_QSVDEC_EXAMPLE 0
|
||||
|
@ -393,27 +393,55 @@
|
|||
%define CONFIG_SCALING_VIDEO_EXAMPLE 0
|
||||
%define CONFIG_TRANSCODE_AAC_EXAMPLE 0
|
||||
%define CONFIG_TRANSCODING_EXAMPLE 0
|
||||
%define CONFIG_AVISYNTH 0
|
||||
%define CONFIG_ALSA 0
|
||||
%define CONFIG_APPKIT 0
|
||||
%define CONFIG_AVFOUNDATION 0
|
||||
%define CONFIG_BZLIB 0
|
||||
%define CONFIG_CHROMAPRINT 0
|
||||
%define CONFIG_CRYSTALHD 0
|
||||
%define CONFIG_DECKLINK 0
|
||||
%define CONFIG_FREI0R 0
|
||||
%define CONFIG_GCRYPT 0
|
||||
%define CONFIG_GMP 0
|
||||
%define CONFIG_GNUTLS 0
|
||||
%define CONFIG_COREIMAGE 0
|
||||
%define CONFIG_ICONV 0
|
||||
%define CONFIG_JACK 0
|
||||
%define CONFIG_LIBXCB 0
|
||||
%define CONFIG_LIBXCB_SHM 0
|
||||
%define CONFIG_LIBXCB_SHAPE 0
|
||||
%define CONFIG_LIBXCB_XFIXES 0
|
||||
%define CONFIG_LZMA 0
|
||||
%define CONFIG_SCHANNEL 1
|
||||
%define CONFIG_SDL2 0
|
||||
%define CONFIG_SECURETRANSPORT 0
|
||||
%define CONFIG_SNDIO 0
|
||||
%define CONFIG_XLIB 1
|
||||
%define CONFIG_ZLIB 0
|
||||
%define CONFIG_AVISYNTH 0
|
||||
%define CONFIG_FREI0R 0
|
||||
%define CONFIG_LIBCDIO 0
|
||||
%define CONFIG_LIBRUBBERBAND 0
|
||||
%define CONFIG_LIBVIDSTAB 0
|
||||
%define CONFIG_LIBX264 0
|
||||
%define CONFIG_LIBX265 0
|
||||
%define CONFIG_LIBXAVS 0
|
||||
%define CONFIG_LIBXVID 0
|
||||
%define CONFIG_DECKLINK 0
|
||||
%define CONFIG_LIBNDI_NEWTEK 0
|
||||
%define CONFIG_LIBFDK_AAC 0
|
||||
%define CONFIG_OPENSSL 0
|
||||
%define CONFIG_GMP 0
|
||||
%define CONFIG_LIBOPENCORE_AMRNB 0
|
||||
%define CONFIG_LIBOPENCORE_AMRWB 0
|
||||
%define CONFIG_LIBVO_AMRWBENC 0
|
||||
%define CONFIG_RKMPP 0
|
||||
%define CONFIG_LIBSMBCLIENT 0
|
||||
%define CONFIG_CHROMAPRINT 0
|
||||
%define CONFIG_GCRYPT 0
|
||||
%define CONFIG_GNUTLS 0
|
||||
%define CONFIG_JNI 0
|
||||
%define CONFIG_LADSPA 0
|
||||
%define CONFIG_LIBASS 0
|
||||
%define CONFIG_LIBBLURAY 0
|
||||
%define CONFIG_LIBBS2B 0
|
||||
%define CONFIG_LIBCACA 0
|
||||
%define CONFIG_LIBCDIO 0
|
||||
%define CONFIG_LIBCELT 0
|
||||
%define CONFIG_LIBDC1394 0
|
||||
%define CONFIG_LIBEBUR128 0
|
||||
%define CONFIG_LIBFDK_AAC 0
|
||||
%define CONFIG_LIBDRM 0
|
||||
%define CONFIG_LIBFLITE 0
|
||||
%define CONFIG_LIBFONTCONFIG 0
|
||||
%define CONFIG_LIBFREETYPE 0
|
||||
|
@ -425,18 +453,15 @@
|
|||
%define CONFIG_LIBKVAZAAR 0
|
||||
%define CONFIG_LIBMODPLUG 0
|
||||
%define CONFIG_LIBMP3LAME 0
|
||||
%define CONFIG_LIBNUT 0
|
||||
%define CONFIG_LIBOPENCORE_AMRNB 0
|
||||
%define CONFIG_LIBOPENCORE_AMRWB 0
|
||||
%define CONFIG_LIBMYSOFA 0
|
||||
%define CONFIG_LIBOPENCV 0
|
||||
%define CONFIG_LIBOPENH264 0
|
||||
%define CONFIG_LIBOPENJPEG 0
|
||||
%define CONFIG_LIBOPENMPT 0
|
||||
%define CONFIG_LIBOPUS 0
|
||||
%define CONFIG_LIBPULSE 0
|
||||
%define CONFIG_LIBRSVG 0
|
||||
%define CONFIG_LIBRTMP 0
|
||||
%define CONFIG_LIBRUBBERBAND 0
|
||||
%define CONFIG_LIBSCHROEDINGER 0
|
||||
%define CONFIG_LIBSHINE 0
|
||||
%define CONFIG_LIBSMBCLIENT 0
|
||||
%define CONFIG_LIBSNAPPY 0
|
||||
|
@ -447,52 +472,37 @@
|
|||
%define CONFIG_LIBTHEORA 0
|
||||
%define CONFIG_LIBTWOLAME 0
|
||||
%define CONFIG_LIBV4L2 0
|
||||
%define CONFIG_LIBVIDSTAB 0
|
||||
%define CONFIG_LIBVO_AMRWBENC 0
|
||||
%define CONFIG_LIBVMAF 0
|
||||
%define CONFIG_LIBVORBIS 0
|
||||
%define CONFIG_LIBVPX 0
|
||||
%define CONFIG_LIBWAVPACK 0
|
||||
%define CONFIG_LIBWEBP 0
|
||||
%define CONFIG_LIBX264 0
|
||||
%define CONFIG_LIBX265 0
|
||||
%define CONFIG_LIBXAVS 0
|
||||
%define CONFIG_LIBXCB 0
|
||||
%define CONFIG_LIBXCB_SHM 0
|
||||
%define CONFIG_LIBXCB_SHAPE 0
|
||||
%define CONFIG_LIBXCB_XFIXES 0
|
||||
%define CONFIG_LIBXVID 0
|
||||
%define CONFIG_LIBXML2 0
|
||||
%define CONFIG_LIBZIMG 0
|
||||
%define CONFIG_LIBZMQ 0
|
||||
%define CONFIG_LIBZVBI 0
|
||||
%define CONFIG_LZMA 0
|
||||
%define CONFIG_MEDIACODEC 0
|
||||
%define CONFIG_NETCDF 0
|
||||
%define CONFIG_OPENAL 0
|
||||
%define CONFIG_OPENCL 0
|
||||
%define CONFIG_OPENGL 0
|
||||
%define CONFIG_OPENSSL 0
|
||||
%define CONFIG_SCHANNEL 1
|
||||
%define CONFIG_SDL 0
|
||||
%define CONFIG_SDL2 0
|
||||
%define CONFIG_SECURETRANSPORT 0
|
||||
%define CONFIG_VIDEOTOOLBOX 0
|
||||
%define CONFIG_X11GRAB 0
|
||||
%define CONFIG_XLIB 0
|
||||
%define CONFIG_ZLIB 0
|
||||
%define CONFIG_AUDIOTOOLBOX 0
|
||||
%define CONFIG_CUDA 0
|
||||
%define CONFIG_CUVID 0
|
||||
%define CONFIG_CRYSTALHD 0
|
||||
%define CONFIG_CUDA 1
|
||||
%define CONFIG_CUVID 1
|
||||
%define CONFIG_D3D11VA 0
|
||||
%define CONFIG_DXVA2 0
|
||||
%define CONFIG_LIBMFX 0
|
||||
%define CONFIG_LIBNPP 0
|
||||
%define CONFIG_MMAL 0
|
||||
%define CONFIG_NVENC 0
|
||||
%define CONFIG_OMX 0
|
||||
%define CONFIG_NVENC 1
|
||||
%define CONFIG_VAAPI 0
|
||||
%define CONFIG_VDA 0
|
||||
%define CONFIG_VDPAU 0
|
||||
%define CONFIG_VIDEOTOOLBOX 0
|
||||
%define CONFIG_V4L2_M2M 0
|
||||
%define CONFIG_XVMC 0
|
||||
%define CONFIG_CUDA_SDK 0
|
||||
%define CONFIG_LIBNPP 0
|
||||
%define CONFIG_LIBMFX 0
|
||||
%define CONFIG_MMAL 0
|
||||
%define CONFIG_OMX 0
|
||||
%define CONFIG_FTRAPV 0
|
||||
%define CONFIG_GRAY 0
|
||||
%define CONFIG_HARDCODED_TABLES 0
|
||||
|
@ -531,16 +541,27 @@
|
|||
%define CONFIG_PIXELUTILS 0
|
||||
%define CONFIG_NETWORK 0
|
||||
%define CONFIG_RDFT 0
|
||||
%define CONFIG_AUTODETECT 0
|
||||
%define CONFIG_FONTCONFIG 0
|
||||
%define CONFIG_MEMALIGN_HACK 0
|
||||
%define CONFIG_LINUX_PERF 0
|
||||
%define CONFIG_MEMORY_POISONING 0
|
||||
%define CONFIG_NEON_CLOBBER_TEST 0
|
||||
%define CONFIG_OSSFUZZ 0
|
||||
%define CONFIG_PIC 0
|
||||
%define CONFIG_POD2MAN 1
|
||||
%define CONFIG_RAISE_MAJOR 0
|
||||
%define CONFIG_THUMB 0
|
||||
%define CONFIG_VALGRIND_BACKTRACE 0
|
||||
%define CONFIG_XMM_CLOBBER_TEST 0
|
||||
%define CONFIG_BSFS 1
|
||||
%define CONFIG_DECODERS 1
|
||||
%define CONFIG_ENCODERS 0
|
||||
%define CONFIG_HWACCELS 0
|
||||
%define CONFIG_PARSERS 1
|
||||
%define CONFIG_INDEVS 0
|
||||
%define CONFIG_OUTDEVS 0
|
||||
%define CONFIG_FILTERS 0
|
||||
%define CONFIG_DEMUXERS 0
|
||||
%define CONFIG_MUXERS 0
|
||||
%define CONFIG_PROTOCOLS 0
|
||||
%define CONFIG_AANDCTTABLES 0
|
||||
%define CONFIG_AC3DSP 0
|
||||
%define CONFIG_AUDIO_FRAME_QUEUE 0
|
||||
|
@ -556,21 +577,24 @@
|
|||
%define CONFIG_FDCTDSP 0
|
||||
%define CONFIG_FLACDSP 1
|
||||
%define CONFIG_FMTCONVERT 0
|
||||
%define CONFIG_FRAME_THREAD_ENCODER 0
|
||||
%define CONFIG_G722DSP 0
|
||||
%define CONFIG_GOLOMB 1
|
||||
%define CONFIG_GOLOMB 0
|
||||
%define CONFIG_GPLV3 0
|
||||
%define CONFIG_H263DSP 0
|
||||
%define CONFIG_H264CHROMA 0
|
||||
%define CONFIG_H264DSP 0
|
||||
%define CONFIG_H264PARSE 0
|
||||
%define CONFIG_H264PRED 1
|
||||
%define CONFIG_H264QPEL 0
|
||||
%define CONFIG_HEVCPARSE 0
|
||||
%define CONFIG_HPELDSP 0
|
||||
%define CONFIG_HUFFMAN 0
|
||||
%define CONFIG_HUFFYUVDSP 0
|
||||
%define CONFIG_HUFFYUVENCDSP 0
|
||||
%define CONFIG_IDCTDSP 0
|
||||
%define CONFIG_IIRFILTER 0
|
||||
%define CONFIG_IMDCT15 0
|
||||
%define CONFIG_MDCT15 0
|
||||
%define CONFIG_INTRAX8 0
|
||||
%define CONFIG_ISO_MEDIA 0
|
||||
%define CONFIG_IVIDSP 0
|
||||
|
@ -579,12 +603,14 @@
|
|||
%define CONFIG_LIBX262 0
|
||||
%define CONFIG_LLAUDDSP 0
|
||||
%define CONFIG_LLVIDDSP 0
|
||||
%define CONFIG_LLVIDENCDSP 0
|
||||
%define CONFIG_LPC 0
|
||||
%define CONFIG_LZF 0
|
||||
%define CONFIG_ME_CMP 0
|
||||
%define CONFIG_MPEG_ER 0
|
||||
%define CONFIG_MPEGAUDIO 0
|
||||
%define CONFIG_MPEGAUDIODSP 0
|
||||
%define CONFIG_MPEGAUDIOHEADER 0
|
||||
%define CONFIG_MPEGVIDEO 0
|
||||
%define CONFIG_MPEGVIDEOENC 0
|
||||
%define CONFIG_MSS34DSP 0
|
||||
|
@ -606,13 +632,13 @@
|
|||
%define CONFIG_TEXTUREDSP 0
|
||||
%define CONFIG_TEXTUREDSPENC 0
|
||||
%define CONFIG_TPELDSP 0
|
||||
%define CONFIG_VAAPI_1 0
|
||||
%define CONFIG_VAAPI_ENCODE 0
|
||||
%define CONFIG_VC1DSP 0
|
||||
%define CONFIG_VIDEODSP 1
|
||||
%define CONFIG_VP3DSP 0
|
||||
%define CONFIG_VP56DSP 0
|
||||
%define CONFIG_VP8DSP 1
|
||||
%define CONFIG_VT_BT2020 0
|
||||
%define CONFIG_WMA_FREQS 0
|
||||
%define CONFIG_WMV2DSP 0
|
||||
%define CONFIG_NULL_BSF 1
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
/* Automatically generated by configure - do not modify! */
|
||||
#ifndef FFMPEG_CONFIG_H
|
||||
#define FFMPEG_CONFIG_H
|
||||
#define FFMPEG_CONFIGURATION "--disable-everything --disable-protocols --disable-demuxers --disable-muxers --disable-filters --disable-programs --disable-doc --disable-parsers --enable-parser=vp8 --enable-parser=vp9 --enable-decoder=vp8 --enable-decoder=vp9 --disable-static --enable-shared --disable-debug --disable-sdl --disable-libxcb --disable-securetransport --disable-iconv --disable-swresample --disable-swscale --disable-avdevice --disable-avfilter --disable-avformat --disable-d3d11va --disable-dxva2 --disable-vaapi --disable-vda --disable-vdpau --disable-videotoolbox --enable-asm --enable-yasm --toolchain=msvc"
|
||||
#define FFMPEG_CONFIGURATION "--disable-everything --disable-protocols --disable-demuxers --disable-muxers --disable-filters --disable-programs --disable-doc --disable-parsers --enable-parser=vp8 --enable-parser=vp9 --enable-decoder=vp8 --enable-decoder=vp9 --disable-static --enable-shared --disable-debug --disable-sdl2 --disable-libxcb --disable-securetransport --disable-iconv --disable-swresample --disable-swscale --disable-avdevice --disable-avfilter --disable-avformat --disable-d3d11va --disable-dxva2 --disable-vaapi --disable-vdpau --disable-videotoolbox --enable-decoder=flac --enable-asm --enable-x86asm --toolchain=msvc"
|
||||
#define FFMPEG_LICENSE "LGPL version 2.1 or later"
|
||||
#define CONFIG_THIS_YEAR 2016
|
||||
#define CONFIG_THIS_YEAR 2017
|
||||
#define FFMPEG_DATADIR "/usr/local/share/ffmpeg"
|
||||
#define AVCONV_DATADIR "/usr/local/share/ffmpeg"
|
||||
#define CC_IDENT "Microsoft (R) C/C++ Optimizing Compiler Version 19.00.23506 for x86"
|
||||
#define CC_IDENT "Microsoft (R) C/C++ Optimizing Compiler Version 19.11.25508.2 for x86"
|
||||
#define av_restrict __restrict
|
||||
#define EXTERN_PREFIX "_"
|
||||
#define EXTERN_ASM _
|
||||
|
@ -79,8 +79,8 @@
|
|||
#define HAVE_MIPSDSP 0
|
||||
#define HAVE_MIPSDSPR2 0
|
||||
#define HAVE_MSA 0
|
||||
#define HAVE_LOONGSON2 1
|
||||
#define HAVE_LOONGSON3 1
|
||||
#define HAVE_LOONGSON2 0
|
||||
#define HAVE_LOONGSON3 0
|
||||
#define HAVE_MMI 0
|
||||
#define HAVE_ARMV5TE_EXTERNAL 0
|
||||
#define HAVE_ARMV6_EXTERNAL 0
|
||||
|
@ -178,31 +178,32 @@
|
|||
#define HAVE_LOCAL_ALIGNED_16 1
|
||||
#define HAVE_LOCAL_ALIGNED_32 1
|
||||
#define HAVE_SIMD_ALIGN_16 1
|
||||
#define HAVE_SIMD_ALIGN_32 1
|
||||
#define HAVE_ATOMICS_GCC 0
|
||||
#define HAVE_ATOMICS_SUNCC 0
|
||||
#define HAVE_ATOMICS_WIN32 1
|
||||
#define HAVE_ATOMIC_CAS_PTR 0
|
||||
#define HAVE_ATOMIC_COMPARE_EXCHANGE 0
|
||||
#define HAVE_MACHINE_RW_BARRIER 0
|
||||
#define HAVE_MEMORYBARRIER 1
|
||||
#define HAVE_MM_EMPTY 1
|
||||
#define HAVE_RDTSC 1
|
||||
#define HAVE_SARESTART 0
|
||||
#define HAVE_SEM_TIMEDWAIT 1
|
||||
#define HAVE_SEM_TIMEDWAIT 0
|
||||
#define HAVE_SYNC_VAL_COMPARE_AND_SWAP 0
|
||||
#define HAVE_CABS 0
|
||||
#define HAVE_CEXP 0
|
||||
#define HAVE_INLINE_ASM 0
|
||||
#define HAVE_SYMVER 0
|
||||
#define HAVE_YASM 1
|
||||
#define HAVE_X86ASM 1
|
||||
#define HAVE_BIGENDIAN 0
|
||||
#define HAVE_FAST_UNALIGNED 1
|
||||
#define HAVE_ALSA_ASOUNDLIB_H 0
|
||||
#define HAVE_ALTIVEC_H 0
|
||||
#define HAVE_ARPA_INET_H 0
|
||||
#define HAVE_ASM_TYPES_H 0
|
||||
#define HAVE_CDIO_PARANOIA_H 0
|
||||
#define HAVE_CDIO_PARANOIA_PARANOIA_H 0
|
||||
#define HAVE_CUDA_H 0
|
||||
#define HAVE_D3D11_H 1
|
||||
#define HAVE_DISPATCH_DISPATCH_H 0
|
||||
#define HAVE_DEV_BKTR_IOCTL_BT848_H 0
|
||||
#define HAVE_DEV_BKTR_IOCTL_METEOR_H 0
|
||||
|
@ -212,7 +213,7 @@
|
|||
#define HAVE_DIRECT_H 1
|
||||
#define HAVE_DIRENT_H 0
|
||||
#define HAVE_DLFCN_H 0
|
||||
#define HAVE_D3D11_H 1
|
||||
#define HAVE_DXGIDEBUG_H 1
|
||||
#define HAVE_DXVA_H 1
|
||||
#define HAVE_ES2_GL_H 0
|
||||
#define HAVE_GSM_H 0
|
||||
|
@ -221,12 +222,13 @@
|
|||
#define HAVE_MACHINE_IOCTL_BT848_H 0
|
||||
#define HAVE_MACHINE_IOCTL_METEOR_H 0
|
||||
#define HAVE_OPENCV2_CORE_CORE_C_H 0
|
||||
#define HAVE_OPENJPEG_2_3_OPENJPEG_H 0
|
||||
#define HAVE_OPENJPEG_2_2_OPENJPEG_H 0
|
||||
#define HAVE_OPENJPEG_2_1_OPENJPEG_H 0
|
||||
#define HAVE_OPENJPEG_2_0_OPENJPEG_H 0
|
||||
#define HAVE_OPENJPEG_1_5_OPENJPEG_H 0
|
||||
#define HAVE_OPENGL_GL3_H 0
|
||||
#define HAVE_POLL_H 0
|
||||
#define HAVE_SNDIO_H 0
|
||||
#define HAVE_SOUNDCARD_H 0
|
||||
#define HAVE_STDATOMIC_H 0
|
||||
#define HAVE_SYS_MMAN_H 0
|
||||
|
@ -280,7 +282,6 @@
|
|||
#define HAVE_COMMANDLINETOARGVW 1
|
||||
#define HAVE_COTASKMEMFREE 1
|
||||
#define HAVE_CRYPTGENRANDOM 1
|
||||
#define HAVE_DLOPEN 0
|
||||
#define HAVE_FCNTL 0
|
||||
#define HAVE_FLT_LIM 1
|
||||
#define HAVE_FORK 0
|
||||
|
@ -300,7 +301,7 @@
|
|||
#define HAVE_ISATTY 1
|
||||
#define HAVE_JACK_PORT_GET_LATENCY_RANGE 0
|
||||
#define HAVE_KBHIT 1
|
||||
#define HAVE_LOADLIBRARY 0
|
||||
#define HAVE_LOADLIBRARY 1
|
||||
#define HAVE_LSTAT 0
|
||||
#define HAVE_LZO1X_999_COMPRESS 0
|
||||
#define HAVE_MACH_ABSOLUTE_TIME 0
|
||||
|
@ -319,6 +320,7 @@
|
|||
#define HAVE_SLEEP 1
|
||||
#define HAVE_STRERROR_R 0
|
||||
#define HAVE_SYSCONF 0
|
||||
#define HAVE_SYSCTL 0
|
||||
#define HAVE_USLEEP 0
|
||||
#define HAVE_UTGETOSTYPEFROMSTRING 0
|
||||
#define HAVE_VIRTUALALLOC 1
|
||||
|
@ -327,11 +329,13 @@
|
|||
#define HAVE_OS2THREADS 0
|
||||
#define HAVE_W32THREADS 1
|
||||
#define HAVE_AS_DN_DIRECTIVE 0
|
||||
#define HAVE_AS_FPU_DIRECTIVE 0
|
||||
#define HAVE_AS_FUNC 0
|
||||
#define HAVE_AS_OBJECT_ARCH 0
|
||||
#define HAVE_ASM_MOD_Q 0
|
||||
#define HAVE_ATTRIBUTE_MAY_ALIAS 0
|
||||
#define HAVE_ATTRIBUTE_PACKED 0
|
||||
#define HAVE_BLOCKS_EXTENSION 0
|
||||
#define HAVE_EBP_AVAILABLE 0
|
||||
#define HAVE_EBX_AVAILABLE 0
|
||||
#define HAVE_GNU_AS 0
|
||||
|
@ -348,12 +352,13 @@
|
|||
#define HAVE_XFORM_ASM 0
|
||||
#define HAVE_XMM_CLOBBERS 0
|
||||
#define HAVE_CONDITION_VARIABLE_PTR 1
|
||||
#define HAVE_KCMVIDEOCODECTYPE_HEVC 0
|
||||
#define HAVE_SOCKLEN_T 1
|
||||
#define HAVE_STRUCT_ADDRINFO 1
|
||||
#define HAVE_STRUCT_GROUP_SOURCE_REQ 1
|
||||
#define HAVE_STRUCT_IP_MREQ_SOURCE 1
|
||||
#define HAVE_STRUCT_IPV6_MREQ 1
|
||||
#define HAVE_STRUCT_MSGHDR_MSG_FLAGS 1
|
||||
#define HAVE_STRUCT_MSGHDR_MSG_FLAGS 0
|
||||
#define HAVE_STRUCT_POLLFD 0
|
||||
#define HAVE_STRUCT_RUSAGE_RU_MAXRSS 0
|
||||
#define HAVE_STRUCT_SCTP_EVENT_SUBSCRIBE 0
|
||||
|
@ -364,28 +369,20 @@
|
|||
#define HAVE_STRUCT_V4L2_FRMIVALENUM_DISCRETE 0
|
||||
#define HAVE_ATOMICS_NATIVE 1
|
||||
#define HAVE_DOS_PATHS 1
|
||||
#define HAVE_DXVA2_LIB 0
|
||||
#define HAVE_DXVA2API_COBJ 1
|
||||
#define HAVE_LIBC_MSVCRT 1
|
||||
#define HAVE_LIBDC1394_1 0
|
||||
#define HAVE_LIBDC1394_2 0
|
||||
#define HAVE_MAKEINFO 1
|
||||
#define HAVE_MAKEINFO_HTML 0
|
||||
#define HAVE_MMAL_PARAMETER_VIDEO_MAX_NUM_CALLBACKS 0
|
||||
#define HAVE_PERL 1
|
||||
#define HAVE_POD2MAN 1
|
||||
#define HAVE_SDL2 0
|
||||
#define HAVE_SECTION_DATA_REL_RO 0
|
||||
#define HAVE_TEXI2HTML 0
|
||||
#define HAVE_THREADS 1
|
||||
#define HAVE_UWP 0
|
||||
#define HAVE_VAAPI_DRM 0
|
||||
#define HAVE_VAAPI_X11 0
|
||||
#define HAVE_VDPAU_X11 0
|
||||
#define HAVE_WINRT 0
|
||||
#define HAVE_XLIB 0
|
||||
#define CONFIG_BSFS 0
|
||||
#define CONFIG_DECODERS 1
|
||||
#define CONFIG_PARSERS 1
|
||||
#define CONFIG_DOC 0
|
||||
#define CONFIG_HTMLPAGES 0
|
||||
#define CONFIG_MANPAGES 1
|
||||
|
@ -393,13 +390,17 @@
|
|||
#define CONFIG_TXTPAGES 1
|
||||
#define CONFIG_AVIO_DIR_CMD_EXAMPLE 1
|
||||
#define CONFIG_AVIO_READING_EXAMPLE 1
|
||||
#define CONFIG_DECODING_ENCODING_EXAMPLE 0
|
||||
#define CONFIG_DECODE_AUDIO_EXAMPLE 1
|
||||
#define CONFIG_DECODE_VIDEO_EXAMPLE 1
|
||||
#define CONFIG_DEMUXING_DECODING_EXAMPLE 0
|
||||
#define CONFIG_ENCODE_AUDIO_EXAMPLE 1
|
||||
#define CONFIG_ENCODE_VIDEO_EXAMPLE 1
|
||||
#define CONFIG_EXTRACT_MVS_EXAMPLE 0
|
||||
#define CONFIG_FILTER_AUDIO_EXAMPLE 0
|
||||
#define CONFIG_FILTERING_AUDIO_EXAMPLE 0
|
||||
#define CONFIG_FILTERING_VIDEO_EXAMPLE 0
|
||||
#define CONFIG_HTTP_MULTICLIENT_EXAMPLE 0
|
||||
#define CONFIG_HW_DECODE_EXAMPLE 0
|
||||
#define CONFIG_METADATA_EXAMPLE 0
|
||||
#define CONFIG_MUXING_EXAMPLE 0
|
||||
#define CONFIG_QSVDEC_EXAMPLE 0
|
||||
|
@ -408,27 +409,55 @@
|
|||
#define CONFIG_SCALING_VIDEO_EXAMPLE 0
|
||||
#define CONFIG_TRANSCODE_AAC_EXAMPLE 0
|
||||
#define CONFIG_TRANSCODING_EXAMPLE 0
|
||||
#define CONFIG_AVISYNTH 0
|
||||
#define CONFIG_ALSA 0
|
||||
#define CONFIG_APPKIT 0
|
||||
#define CONFIG_AVFOUNDATION 0
|
||||
#define CONFIG_BZLIB 0
|
||||
#define CONFIG_CHROMAPRINT 0
|
||||
#define CONFIG_CRYSTALHD 0
|
||||
#define CONFIG_DECKLINK 0
|
||||
#define CONFIG_FREI0R 0
|
||||
#define CONFIG_GCRYPT 0
|
||||
#define CONFIG_GMP 0
|
||||
#define CONFIG_GNUTLS 0
|
||||
#define CONFIG_COREIMAGE 0
|
||||
#define CONFIG_ICONV 0
|
||||
#define CONFIG_JACK 0
|
||||
#define CONFIG_LIBXCB 0
|
||||
#define CONFIG_LIBXCB_SHM 0
|
||||
#define CONFIG_LIBXCB_SHAPE 0
|
||||
#define CONFIG_LIBXCB_XFIXES 0
|
||||
#define CONFIG_LZMA 0
|
||||
#define CONFIG_SCHANNEL 1
|
||||
#define CONFIG_SDL2 0
|
||||
#define CONFIG_SECURETRANSPORT 0
|
||||
#define CONFIG_SNDIO 0
|
||||
#define CONFIG_XLIB 1
|
||||
#define CONFIG_ZLIB 0
|
||||
#define CONFIG_AVISYNTH 0
|
||||
#define CONFIG_FREI0R 0
|
||||
#define CONFIG_LIBCDIO 0
|
||||
#define CONFIG_LIBRUBBERBAND 0
|
||||
#define CONFIG_LIBVIDSTAB 0
|
||||
#define CONFIG_LIBX264 0
|
||||
#define CONFIG_LIBX265 0
|
||||
#define CONFIG_LIBXAVS 0
|
||||
#define CONFIG_LIBXVID 0
|
||||
#define CONFIG_DECKLINK 0
|
||||
#define CONFIG_LIBNDI_NEWTEK 0
|
||||
#define CONFIG_LIBFDK_AAC 0
|
||||
#define CONFIG_OPENSSL 0
|
||||
#define CONFIG_GMP 0
|
||||
#define CONFIG_LIBOPENCORE_AMRNB 0
|
||||
#define CONFIG_LIBOPENCORE_AMRWB 0
|
||||
#define CONFIG_LIBVO_AMRWBENC 0
|
||||
#define CONFIG_RKMPP 0
|
||||
#define CONFIG_LIBSMBCLIENT 0
|
||||
#define CONFIG_CHROMAPRINT 0
|
||||
#define CONFIG_GCRYPT 0
|
||||
#define CONFIG_GNUTLS 0
|
||||
#define CONFIG_JNI 0
|
||||
#define CONFIG_LADSPA 0
|
||||
#define CONFIG_LIBASS 0
|
||||
#define CONFIG_LIBBLURAY 0
|
||||
#define CONFIG_LIBBS2B 0
|
||||
#define CONFIG_LIBCACA 0
|
||||
#define CONFIG_LIBCDIO 0
|
||||
#define CONFIG_LIBCELT 0
|
||||
#define CONFIG_LIBDC1394 0
|
||||
#define CONFIG_LIBEBUR128 0
|
||||
#define CONFIG_LIBFDK_AAC 0
|
||||
#define CONFIG_LIBDRM 0
|
||||
#define CONFIG_LIBFLITE 0
|
||||
#define CONFIG_LIBFONTCONFIG 0
|
||||
#define CONFIG_LIBFREETYPE 0
|
||||
|
@ -440,18 +469,15 @@
|
|||
#define CONFIG_LIBKVAZAAR 0
|
||||
#define CONFIG_LIBMODPLUG 0
|
||||
#define CONFIG_LIBMP3LAME 0
|
||||
#define CONFIG_LIBNUT 0
|
||||
#define CONFIG_LIBOPENCORE_AMRNB 0
|
||||
#define CONFIG_LIBOPENCORE_AMRWB 0
|
||||
#define CONFIG_LIBMYSOFA 0
|
||||
#define CONFIG_LIBOPENCV 0
|
||||
#define CONFIG_LIBOPENH264 0
|
||||
#define CONFIG_LIBOPENJPEG 0
|
||||
#define CONFIG_LIBOPENMPT 0
|
||||
#define CONFIG_LIBOPUS 0
|
||||
#define CONFIG_LIBPULSE 0
|
||||
#define CONFIG_LIBRSVG 0
|
||||
#define CONFIG_LIBRTMP 0
|
||||
#define CONFIG_LIBRUBBERBAND 0
|
||||
#define CONFIG_LIBSCHROEDINGER 0
|
||||
#define CONFIG_LIBSHINE 0
|
||||
#define CONFIG_LIBSMBCLIENT 0
|
||||
#define CONFIG_LIBSNAPPY 0
|
||||
|
@ -462,52 +488,37 @@
|
|||
#define CONFIG_LIBTHEORA 0
|
||||
#define CONFIG_LIBTWOLAME 0
|
||||
#define CONFIG_LIBV4L2 0
|
||||
#define CONFIG_LIBVIDSTAB 0
|
||||
#define CONFIG_LIBVO_AMRWBENC 0
|
||||
#define CONFIG_LIBVMAF 0
|
||||
#define CONFIG_LIBVORBIS 0
|
||||
#define CONFIG_LIBVPX 0
|
||||
#define CONFIG_LIBWAVPACK 0
|
||||
#define CONFIG_LIBWEBP 0
|
||||
#define CONFIG_LIBX264 0
|
||||
#define CONFIG_LIBX265 0
|
||||
#define CONFIG_LIBXAVS 0
|
||||
#define CONFIG_LIBXCB 0
|
||||
#define CONFIG_LIBXCB_SHM 0
|
||||
#define CONFIG_LIBXCB_SHAPE 0
|
||||
#define CONFIG_LIBXCB_XFIXES 0
|
||||
#define CONFIG_LIBXVID 0
|
||||
#define CONFIG_LIBXML2 0
|
||||
#define CONFIG_LIBZIMG 0
|
||||
#define CONFIG_LIBZMQ 0
|
||||
#define CONFIG_LIBZVBI 0
|
||||
#define CONFIG_LZMA 0
|
||||
#define CONFIG_MEDIACODEC 0
|
||||
#define CONFIG_NETCDF 0
|
||||
#define CONFIG_OPENAL 0
|
||||
#define CONFIG_OPENCL 0
|
||||
#define CONFIG_OPENGL 0
|
||||
#define CONFIG_OPENSSL 0
|
||||
#define CONFIG_SCHANNEL 1
|
||||
#define CONFIG_SDL 0
|
||||
#define CONFIG_SDL2 0
|
||||
#define CONFIG_SECURETRANSPORT 0
|
||||
#define CONFIG_VIDEOTOOLBOX 0
|
||||
#define CONFIG_X11GRAB 0
|
||||
#define CONFIG_XLIB 0
|
||||
#define CONFIG_ZLIB 0
|
||||
#define CONFIG_AUDIOTOOLBOX 0
|
||||
#define CONFIG_CUDA 0
|
||||
#define CONFIG_CUVID 0
|
||||
#define CONFIG_CRYSTALHD 0
|
||||
#define CONFIG_CUDA 1
|
||||
#define CONFIG_CUVID 1
|
||||
#define CONFIG_D3D11VA 0
|
||||
#define CONFIG_DXVA2 0
|
||||
#define CONFIG_LIBMFX 0
|
||||
#define CONFIG_LIBNPP 0
|
||||
#define CONFIG_MMAL 0
|
||||
#define CONFIG_NVENC 0
|
||||
#define CONFIG_OMX 0
|
||||
#define CONFIG_NVENC 1
|
||||
#define CONFIG_VAAPI 0
|
||||
#define CONFIG_VDA 0
|
||||
#define CONFIG_VDPAU 0
|
||||
#define CONFIG_VIDEOTOOLBOX 0
|
||||
#define CONFIG_V4L2_M2M 0
|
||||
#define CONFIG_XVMC 0
|
||||
#define CONFIG_CUDA_SDK 0
|
||||
#define CONFIG_LIBNPP 0
|
||||
#define CONFIG_LIBMFX 0
|
||||
#define CONFIG_MMAL 0
|
||||
#define CONFIG_OMX 0
|
||||
#define CONFIG_FTRAPV 0
|
||||
#define CONFIG_GRAY 0
|
||||
#define CONFIG_HARDCODED_TABLES 0
|
||||
|
@ -546,16 +557,27 @@
|
|||
#define CONFIG_PIXELUTILS 0
|
||||
#define CONFIG_NETWORK 0
|
||||
#define CONFIG_RDFT 0
|
||||
#define CONFIG_AUTODETECT 0
|
||||
#define CONFIG_FONTCONFIG 0
|
||||
#define CONFIG_MEMALIGN_HACK 0
|
||||
#define CONFIG_LINUX_PERF 0
|
||||
#define CONFIG_MEMORY_POISONING 0
|
||||
#define CONFIG_NEON_CLOBBER_TEST 0
|
||||
#define CONFIG_OSSFUZZ 0
|
||||
#define CONFIG_PIC 0
|
||||
#define CONFIG_POD2MAN 1
|
||||
#define CONFIG_RAISE_MAJOR 0
|
||||
#define CONFIG_THUMB 0
|
||||
#define CONFIG_VALGRIND_BACKTRACE 0
|
||||
#define CONFIG_XMM_CLOBBER_TEST 0
|
||||
#define CONFIG_BSFS 1
|
||||
#define CONFIG_DECODERS 1
|
||||
#define CONFIG_ENCODERS 0
|
||||
#define CONFIG_HWACCELS 0
|
||||
#define CONFIG_PARSERS 1
|
||||
#define CONFIG_INDEVS 0
|
||||
#define CONFIG_OUTDEVS 0
|
||||
#define CONFIG_FILTERS 0
|
||||
#define CONFIG_DEMUXERS 0
|
||||
#define CONFIG_MUXERS 0
|
||||
#define CONFIG_PROTOCOLS 0
|
||||
#define CONFIG_AANDCTTABLES 0
|
||||
#define CONFIG_AC3DSP 0
|
||||
#define CONFIG_AUDIO_FRAME_QUEUE 0
|
||||
|
@ -571,21 +593,24 @@
|
|||
#define CONFIG_FDCTDSP 0
|
||||
#define CONFIG_FLACDSP 1
|
||||
#define CONFIG_FMTCONVERT 0
|
||||
#define CONFIG_FRAME_THREAD_ENCODER 0
|
||||
#define CONFIG_G722DSP 0
|
||||
#define CONFIG_GOLOMB 1
|
||||
#define CONFIG_GOLOMB 0
|
||||
#define CONFIG_GPLV3 0
|
||||
#define CONFIG_H263DSP 0
|
||||
#define CONFIG_H264CHROMA 0
|
||||
#define CONFIG_H264DSP 0
|
||||
#define CONFIG_H264PARSE 0
|
||||
#define CONFIG_H264PRED 1
|
||||
#define CONFIG_H264QPEL 0
|
||||
#define CONFIG_HEVCPARSE 0
|
||||
#define CONFIG_HPELDSP 0
|
||||
#define CONFIG_HUFFMAN 0
|
||||
#define CONFIG_HUFFYUVDSP 0
|
||||
#define CONFIG_HUFFYUVENCDSP 0
|
||||
#define CONFIG_IDCTDSP 0
|
||||
#define CONFIG_IIRFILTER 0
|
||||
#define CONFIG_IMDCT15 0
|
||||
#define CONFIG_MDCT15 0
|
||||
#define CONFIG_INTRAX8 0
|
||||
#define CONFIG_ISO_MEDIA 0
|
||||
#define CONFIG_IVIDSP 0
|
||||
|
@ -594,12 +619,14 @@
|
|||
#define CONFIG_LIBX262 0
|
||||
#define CONFIG_LLAUDDSP 0
|
||||
#define CONFIG_LLVIDDSP 0
|
||||
#define CONFIG_LLVIDENCDSP 0
|
||||
#define CONFIG_LPC 0
|
||||
#define CONFIG_LZF 0
|
||||
#define CONFIG_ME_CMP 0
|
||||
#define CONFIG_MPEG_ER 0
|
||||
#define CONFIG_MPEGAUDIO 0
|
||||
#define CONFIG_MPEGAUDIODSP 0
|
||||
#define CONFIG_MPEGAUDIOHEADER 0
|
||||
#define CONFIG_MPEGVIDEO 0
|
||||
#define CONFIG_MPEGVIDEOENC 0
|
||||
#define CONFIG_MSS34DSP 0
|
||||
|
@ -621,13 +648,13 @@
|
|||
#define CONFIG_TEXTUREDSP 0
|
||||
#define CONFIG_TEXTUREDSPENC 0
|
||||
#define CONFIG_TPELDSP 0
|
||||
#define CONFIG_VAAPI_1 0
|
||||
#define CONFIG_VAAPI_ENCODE 0
|
||||
#define CONFIG_VC1DSP 0
|
||||
#define CONFIG_VIDEODSP 1
|
||||
#define CONFIG_VP3DSP 0
|
||||
#define CONFIG_VP56DSP 0
|
||||
#define CONFIG_VP8DSP 1
|
||||
#define CONFIG_VT_BT2020 0
|
||||
#define CONFIG_WMA_FREQS 0
|
||||
#define CONFIG_WMV2DSP 0
|
||||
#define CONFIG_NULL_BSF 1
|
||||
|
|
|
@ -63,8 +63,8 @@
|
|||
%define HAVE_MIPSDSP 0
|
||||
%define HAVE_MIPSDSPR2 0
|
||||
%define HAVE_MSA 0
|
||||
%define HAVE_LOONGSON2 1
|
||||
%define HAVE_LOONGSON3 1
|
||||
%define HAVE_LOONGSON2 0
|
||||
%define HAVE_LOONGSON3 0
|
||||
%define HAVE_MMI 0
|
||||
%define HAVE_ARMV5TE_EXTERNAL 0
|
||||
%define HAVE_ARMV6_EXTERNAL 0
|
||||
|
@ -162,31 +162,32 @@
|
|||
%define HAVE_LOCAL_ALIGNED_16 1
|
||||
%define HAVE_LOCAL_ALIGNED_32 1
|
||||
%define HAVE_SIMD_ALIGN_16 1
|
||||
%define HAVE_SIMD_ALIGN_32 1
|
||||
%define HAVE_ATOMICS_GCC 0
|
||||
%define HAVE_ATOMICS_SUNCC 0
|
||||
%define HAVE_ATOMICS_WIN32 1
|
||||
%define HAVE_ATOMIC_CAS_PTR 0
|
||||
%define HAVE_ATOMIC_COMPARE_EXCHANGE 0
|
||||
%define HAVE_MACHINE_RW_BARRIER 0
|
||||
%define HAVE_MEMORYBARRIER 1
|
||||
%define HAVE_MM_EMPTY 0
|
||||
%define HAVE_RDTSC 1
|
||||
%define HAVE_SARESTART 0
|
||||
%define HAVE_SEM_TIMEDWAIT 1
|
||||
%define HAVE_SEM_TIMEDWAIT 0
|
||||
%define HAVE_SYNC_VAL_COMPARE_AND_SWAP 0
|
||||
%define HAVE_CABS 0
|
||||
%define HAVE_CEXP 0
|
||||
%define HAVE_INLINE_ASM 0
|
||||
%define HAVE_SYMVER 0
|
||||
%define HAVE_YASM 1
|
||||
%define HAVE_X86ASM 1
|
||||
%define HAVE_BIGENDIAN 0
|
||||
%define HAVE_FAST_UNALIGNED 1
|
||||
%define HAVE_ALSA_ASOUNDLIB_H 0
|
||||
%define HAVE_ALTIVEC_H 0
|
||||
%define HAVE_ARPA_INET_H 0
|
||||
%define HAVE_ASM_TYPES_H 0
|
||||
%define HAVE_CDIO_PARANOIA_H 0
|
||||
%define HAVE_CDIO_PARANOIA_PARANOIA_H 0
|
||||
%define HAVE_CUDA_H 0
|
||||
%define HAVE_D3D11_H 1
|
||||
%define HAVE_DISPATCH_DISPATCH_H 0
|
||||
%define HAVE_DEV_BKTR_IOCTL_BT848_H 0
|
||||
%define HAVE_DEV_BKTR_IOCTL_METEOR_H 0
|
||||
|
@ -196,7 +197,7 @@
|
|||
%define HAVE_DIRECT_H 1
|
||||
%define HAVE_DIRENT_H 0
|
||||
%define HAVE_DLFCN_H 0
|
||||
%define HAVE_D3D11_H 1
|
||||
%define HAVE_DXGIDEBUG_H 1
|
||||
%define HAVE_DXVA_H 1
|
||||
%define HAVE_ES2_GL_H 0
|
||||
%define HAVE_GSM_H 0
|
||||
|
@ -205,12 +206,13 @@
|
|||
%define HAVE_MACHINE_IOCTL_BT848_H 0
|
||||
%define HAVE_MACHINE_IOCTL_METEOR_H 0
|
||||
%define HAVE_OPENCV2_CORE_CORE_C_H 0
|
||||
%define HAVE_OPENJPEG_2_3_OPENJPEG_H 0
|
||||
%define HAVE_OPENJPEG_2_2_OPENJPEG_H 0
|
||||
%define HAVE_OPENJPEG_2_1_OPENJPEG_H 0
|
||||
%define HAVE_OPENJPEG_2_0_OPENJPEG_H 0
|
||||
%define HAVE_OPENJPEG_1_5_OPENJPEG_H 0
|
||||
%define HAVE_OPENGL_GL3_H 0
|
||||
%define HAVE_POLL_H 0
|
||||
%define HAVE_SNDIO_H 0
|
||||
%define HAVE_SOUNDCARD_H 0
|
||||
%define HAVE_STDATOMIC_H 0
|
||||
%define HAVE_SYS_MMAN_H 0
|
||||
|
@ -264,7 +266,6 @@
|
|||
%define HAVE_COMMANDLINETOARGVW 1
|
||||
%define HAVE_COTASKMEMFREE 1
|
||||
%define HAVE_CRYPTGENRANDOM 1
|
||||
%define HAVE_DLOPEN 0
|
||||
%define HAVE_FCNTL 0
|
||||
%define HAVE_FLT_LIM 1
|
||||
%define HAVE_FORK 0
|
||||
|
@ -284,7 +285,7 @@
|
|||
%define HAVE_ISATTY 1
|
||||
%define HAVE_JACK_PORT_GET_LATENCY_RANGE 0
|
||||
%define HAVE_KBHIT 1
|
||||
%define HAVE_LOADLIBRARY 0
|
||||
%define HAVE_LOADLIBRARY 1
|
||||
%define HAVE_LSTAT 0
|
||||
%define HAVE_LZO1X_999_COMPRESS 0
|
||||
%define HAVE_MACH_ABSOLUTE_TIME 0
|
||||
|
@ -312,11 +313,13 @@
|
|||
%define HAVE_OS2THREADS 0
|
||||
%define HAVE_W32THREADS 1
|
||||
%define HAVE_AS_DN_DIRECTIVE 0
|
||||
%define HAVE_AS_FPU_DIRECTIVE 0
|
||||
%define HAVE_AS_FUNC 0
|
||||
%define HAVE_AS_OBJECT_ARCH 0
|
||||
%define HAVE_ASM_MOD_Q 0
|
||||
%define HAVE_ATTRIBUTE_MAY_ALIAS 0
|
||||
%define HAVE_ATTRIBUTE_PACKED 0
|
||||
%define HAVE_BLOCKS_EXTENSION 0
|
||||
%define HAVE_EBP_AVAILABLE 0
|
||||
%define HAVE_EBX_AVAILABLE 0
|
||||
%define HAVE_GNU_AS 0
|
||||
|
@ -333,12 +336,13 @@
|
|||
%define HAVE_XFORM_ASM 0
|
||||
%define HAVE_XMM_CLOBBERS 0
|
||||
%define HAVE_CONDITION_VARIABLE_PTR 1
|
||||
%define HAVE_KCMVIDEOCODECTYPE_HEVC 0
|
||||
%define HAVE_SOCKLEN_T 1
|
||||
%define HAVE_STRUCT_ADDRINFO 1
|
||||
%define HAVE_STRUCT_GROUP_SOURCE_REQ 1
|
||||
%define HAVE_STRUCT_IP_MREQ_SOURCE 1
|
||||
%define HAVE_STRUCT_IPV6_MREQ 1
|
||||
%define HAVE_STRUCT_MSGHDR_MSG_FLAGS 1
|
||||
%define HAVE_STRUCT_MSGHDR_MSG_FLAGS 0
|
||||
%define HAVE_STRUCT_POLLFD 0
|
||||
%define HAVE_STRUCT_RUSAGE_RU_MAXRSS 0
|
||||
%define HAVE_STRUCT_SCTP_EVENT_SUBSCRIBE 0
|
||||
|
@ -349,28 +353,20 @@
|
|||
%define HAVE_STRUCT_V4L2_FRMIVALENUM_DISCRETE 0
|
||||
%define HAVE_ATOMICS_NATIVE 1
|
||||
%define HAVE_DOS_PATHS 1
|
||||
%define HAVE_DXVA2_LIB 0
|
||||
%define HAVE_DXVA2API_COBJ 1
|
||||
%define HAVE_LIBC_MSVCRT 1
|
||||
%define HAVE_LIBDC1394_1 0
|
||||
%define HAVE_LIBDC1394_2 0
|
||||
%define HAVE_MAKEINFO 1
|
||||
%define HAVE_MAKEINFO_HTML 0
|
||||
%define HAVE_MMAL_PARAMETER_VIDEO_MAX_NUM_CALLBACKS 0
|
||||
%define HAVE_PERL 1
|
||||
%define HAVE_POD2MAN 1
|
||||
%define HAVE_SDL2 0
|
||||
%define HAVE_SECTION_DATA_REL_RO 0
|
||||
%define HAVE_TEXI2HTML 0
|
||||
%define HAVE_THREADS 1
|
||||
%define HAVE_UWP 0
|
||||
%define HAVE_VAAPI_DRM 0
|
||||
%define HAVE_VAAPI_X11 0
|
||||
%define HAVE_VDPAU_X11 0
|
||||
%define HAVE_WINRT 0
|
||||
%define HAVE_XLIB 0
|
||||
%define CONFIG_BSFS 0
|
||||
%define CONFIG_DECODERS 1
|
||||
%define CONFIG_PARSERS 1
|
||||
%define CONFIG_DOC 0
|
||||
%define CONFIG_HTMLPAGES 0
|
||||
%define CONFIG_MANPAGES 1
|
||||
|
@ -378,13 +374,17 @@
|
|||
%define CONFIG_TXTPAGES 1
|
||||
%define CONFIG_AVIO_DIR_CMD_EXAMPLE 1
|
||||
%define CONFIG_AVIO_READING_EXAMPLE 1
|
||||
%define CONFIG_DECODING_ENCODING_EXAMPLE 0
|
||||
%define CONFIG_DECODE_AUDIO_EXAMPLE 1
|
||||
%define CONFIG_DECODE_VIDEO_EXAMPLE 1
|
||||
%define CONFIG_DEMUXING_DECODING_EXAMPLE 0
|
||||
%define CONFIG_ENCODE_AUDIO_EXAMPLE 1
|
||||
%define CONFIG_ENCODE_VIDEO_EXAMPLE 1
|
||||
%define CONFIG_EXTRACT_MVS_EXAMPLE 0
|
||||
%define CONFIG_FILTER_AUDIO_EXAMPLE 0
|
||||
%define CONFIG_FILTERING_AUDIO_EXAMPLE 0
|
||||
%define CONFIG_FILTERING_VIDEO_EXAMPLE 0
|
||||
%define CONFIG_HTTP_MULTICLIENT_EXAMPLE 0
|
||||
%define CONFIG_HW_DECODE_EXAMPLE 0
|
||||
%define CONFIG_METADATA_EXAMPLE 0
|
||||
%define CONFIG_MUXING_EXAMPLE 0
|
||||
%define CONFIG_QSVDEC_EXAMPLE 0
|
||||
|
@ -393,27 +393,55 @@
|
|||
%define CONFIG_SCALING_VIDEO_EXAMPLE 0
|
||||
%define CONFIG_TRANSCODE_AAC_EXAMPLE 0
|
||||
%define CONFIG_TRANSCODING_EXAMPLE 0
|
||||
%define CONFIG_AVISYNTH 0
|
||||
%define CONFIG_ALSA 0
|
||||
%define CONFIG_APPKIT 0
|
||||
%define CONFIG_AVFOUNDATION 0
|
||||
%define CONFIG_BZLIB 0
|
||||
%define CONFIG_CHROMAPRINT 0
|
||||
%define CONFIG_CRYSTALHD 0
|
||||
%define CONFIG_DECKLINK 0
|
||||
%define CONFIG_FREI0R 0
|
||||
%define CONFIG_GCRYPT 0
|
||||
%define CONFIG_GMP 0
|
||||
%define CONFIG_GNUTLS 0
|
||||
%define CONFIG_COREIMAGE 0
|
||||
%define CONFIG_ICONV 0
|
||||
%define CONFIG_JACK 0
|
||||
%define CONFIG_LIBXCB 0
|
||||
%define CONFIG_LIBXCB_SHM 0
|
||||
%define CONFIG_LIBXCB_SHAPE 0
|
||||
%define CONFIG_LIBXCB_XFIXES 0
|
||||
%define CONFIG_LZMA 0
|
||||
%define CONFIG_SCHANNEL 1
|
||||
%define CONFIG_SDL2 0
|
||||
%define CONFIG_SECURETRANSPORT 0
|
||||
%define CONFIG_SNDIO 0
|
||||
%define CONFIG_XLIB 1
|
||||
%define CONFIG_ZLIB 0
|
||||
%define CONFIG_AVISYNTH 0
|
||||
%define CONFIG_FREI0R 0
|
||||
%define CONFIG_LIBCDIO 0
|
||||
%define CONFIG_LIBRUBBERBAND 0
|
||||
%define CONFIG_LIBVIDSTAB 0
|
||||
%define CONFIG_LIBX264 0
|
||||
%define CONFIG_LIBX265 0
|
||||
%define CONFIG_LIBXAVS 0
|
||||
%define CONFIG_LIBXVID 0
|
||||
%define CONFIG_DECKLINK 0
|
||||
%define CONFIG_LIBNDI_NEWTEK 0
|
||||
%define CONFIG_LIBFDK_AAC 0
|
||||
%define CONFIG_OPENSSL 0
|
||||
%define CONFIG_GMP 0
|
||||
%define CONFIG_LIBOPENCORE_AMRNB 0
|
||||
%define CONFIG_LIBOPENCORE_AMRWB 0
|
||||
%define CONFIG_LIBVO_AMRWBENC 0
|
||||
%define CONFIG_RKMPP 0
|
||||
%define CONFIG_LIBSMBCLIENT 0
|
||||
%define CONFIG_CHROMAPRINT 0
|
||||
%define CONFIG_GCRYPT 0
|
||||
%define CONFIG_GNUTLS 0
|
||||
%define CONFIG_JNI 0
|
||||
%define CONFIG_LADSPA 0
|
||||
%define CONFIG_LIBASS 0
|
||||
%define CONFIG_LIBBLURAY 0
|
||||
%define CONFIG_LIBBS2B 0
|
||||
%define CONFIG_LIBCACA 0
|
||||
%define CONFIG_LIBCDIO 0
|
||||
%define CONFIG_LIBCELT 0
|
||||
%define CONFIG_LIBDC1394 0
|
||||
%define CONFIG_LIBEBUR128 0
|
||||
%define CONFIG_LIBFDK_AAC 0
|
||||
%define CONFIG_LIBDRM 0
|
||||
%define CONFIG_LIBFLITE 0
|
||||
%define CONFIG_LIBFONTCONFIG 0
|
||||
%define CONFIG_LIBFREETYPE 0
|
||||
|
@ -425,18 +453,15 @@
|
|||
%define CONFIG_LIBKVAZAAR 0
|
||||
%define CONFIG_LIBMODPLUG 0
|
||||
%define CONFIG_LIBMP3LAME 0
|
||||
%define CONFIG_LIBNUT 0
|
||||
%define CONFIG_LIBOPENCORE_AMRNB 0
|
||||
%define CONFIG_LIBOPENCORE_AMRWB 0
|
||||
%define CONFIG_LIBMYSOFA 0
|
||||
%define CONFIG_LIBOPENCV 0
|
||||
%define CONFIG_LIBOPENH264 0
|
||||
%define CONFIG_LIBOPENJPEG 0
|
||||
%define CONFIG_LIBOPENMPT 0
|
||||
%define CONFIG_LIBOPUS 0
|
||||
%define CONFIG_LIBPULSE 0
|
||||
%define CONFIG_LIBRSVG 0
|
||||
%define CONFIG_LIBRTMP 0
|
||||
%define CONFIG_LIBRUBBERBAND 0
|
||||
%define CONFIG_LIBSCHROEDINGER 0
|
||||
%define CONFIG_LIBSHINE 0
|
||||
%define CONFIG_LIBSMBCLIENT 0
|
||||
%define CONFIG_LIBSNAPPY 0
|
||||
|
@ -447,52 +472,37 @@
|
|||
%define CONFIG_LIBTHEORA 0
|
||||
%define CONFIG_LIBTWOLAME 0
|
||||
%define CONFIG_LIBV4L2 0
|
||||
%define CONFIG_LIBVIDSTAB 0
|
||||
%define CONFIG_LIBVO_AMRWBENC 0
|
||||
%define CONFIG_LIBVMAF 0
|
||||
%define CONFIG_LIBVORBIS 0
|
||||
%define CONFIG_LIBVPX 0
|
||||
%define CONFIG_LIBWAVPACK 0
|
||||
%define CONFIG_LIBWEBP 0
|
||||
%define CONFIG_LIBX264 0
|
||||
%define CONFIG_LIBX265 0
|
||||
%define CONFIG_LIBXAVS 0
|
||||
%define CONFIG_LIBXCB 0
|
||||
%define CONFIG_LIBXCB_SHM 0
|
||||
%define CONFIG_LIBXCB_SHAPE 0
|
||||
%define CONFIG_LIBXCB_XFIXES 0
|
||||
%define CONFIG_LIBXVID 0
|
||||
%define CONFIG_LIBXML2 0
|
||||
%define CONFIG_LIBZIMG 0
|
||||
%define CONFIG_LIBZMQ 0
|
||||
%define CONFIG_LIBZVBI 0
|
||||
%define CONFIG_LZMA 0
|
||||
%define CONFIG_MEDIACODEC 0
|
||||
%define CONFIG_NETCDF 0
|
||||
%define CONFIG_OPENAL 0
|
||||
%define CONFIG_OPENCL 0
|
||||
%define CONFIG_OPENGL 0
|
||||
%define CONFIG_OPENSSL 0
|
||||
%define CONFIG_SCHANNEL 1
|
||||
%define CONFIG_SDL 0
|
||||
%define CONFIG_SDL2 0
|
||||
%define CONFIG_SECURETRANSPORT 0
|
||||
%define CONFIG_VIDEOTOOLBOX 0
|
||||
%define CONFIG_X11GRAB 0
|
||||
%define CONFIG_XLIB 0
|
||||
%define CONFIG_ZLIB 0
|
||||
%define CONFIG_AUDIOTOOLBOX 0
|
||||
%define CONFIG_CUDA 0
|
||||
%define CONFIG_CUVID 0
|
||||
%define CONFIG_CRYSTALHD 0
|
||||
%define CONFIG_CUDA 1
|
||||
%define CONFIG_CUVID 1
|
||||
%define CONFIG_D3D11VA 0
|
||||
%define CONFIG_DXVA2 0
|
||||
%define CONFIG_LIBMFX 0
|
||||
%define CONFIG_LIBNPP 0
|
||||
%define CONFIG_MMAL 0
|
||||
%define CONFIG_NVENC 0
|
||||
%define CONFIG_OMX 0
|
||||
%define CONFIG_NVENC 1
|
||||
%define CONFIG_VAAPI 0
|
||||
%define CONFIG_VDA 0
|
||||
%define CONFIG_VDPAU 0
|
||||
%define CONFIG_VIDEOTOOLBOX 0
|
||||
%define CONFIG_V4L2_M2M 0
|
||||
%define CONFIG_XVMC 0
|
||||
%define CONFIG_CUDA_SDK 0
|
||||
%define CONFIG_LIBNPP 0
|
||||
%define CONFIG_LIBMFX 0
|
||||
%define CONFIG_MMAL 0
|
||||
%define CONFIG_OMX 0
|
||||
%define CONFIG_FTRAPV 0
|
||||
%define CONFIG_GRAY 0
|
||||
%define CONFIG_HARDCODED_TABLES 0
|
||||
|
@ -531,16 +541,27 @@
|
|||
%define CONFIG_PIXELUTILS 0
|
||||
%define CONFIG_NETWORK 0
|
||||
%define CONFIG_RDFT 0
|
||||
%define CONFIG_AUTODETECT 0
|
||||
%define CONFIG_FONTCONFIG 0
|
||||
%define CONFIG_MEMALIGN_HACK 0
|
||||
%define CONFIG_LINUX_PERF 0
|
||||
%define CONFIG_MEMORY_POISONING 0
|
||||
%define CONFIG_NEON_CLOBBER_TEST 0
|
||||
%define CONFIG_OSSFUZZ 0
|
||||
%define CONFIG_PIC 1
|
||||
%define CONFIG_POD2MAN 1
|
||||
%define CONFIG_RAISE_MAJOR 0
|
||||
%define CONFIG_THUMB 0
|
||||
%define CONFIG_VALGRIND_BACKTRACE 0
|
||||
%define CONFIG_XMM_CLOBBER_TEST 0
|
||||
%define CONFIG_BSFS 1
|
||||
%define CONFIG_DECODERS 1
|
||||
%define CONFIG_ENCODERS 0
|
||||
%define CONFIG_HWACCELS 0
|
||||
%define CONFIG_PARSERS 1
|
||||
%define CONFIG_INDEVS 0
|
||||
%define CONFIG_OUTDEVS 0
|
||||
%define CONFIG_FILTERS 0
|
||||
%define CONFIG_DEMUXERS 0
|
||||
%define CONFIG_MUXERS 0
|
||||
%define CONFIG_PROTOCOLS 0
|
||||
%define CONFIG_AANDCTTABLES 0
|
||||
%define CONFIG_AC3DSP 0
|
||||
%define CONFIG_AUDIO_FRAME_QUEUE 0
|
||||
|
@ -556,21 +577,24 @@
|
|||
%define CONFIG_FDCTDSP 0
|
||||
%define CONFIG_FLACDSP 1
|
||||
%define CONFIG_FMTCONVERT 0
|
||||
%define CONFIG_FRAME_THREAD_ENCODER 0
|
||||
%define CONFIG_G722DSP 0
|
||||
%define CONFIG_GOLOMB 1
|
||||
%define CONFIG_GOLOMB 0
|
||||
%define CONFIG_GPLV3 0
|
||||
%define CONFIG_H263DSP 0
|
||||
%define CONFIG_H264CHROMA 0
|
||||
%define CONFIG_H264DSP 0
|
||||
%define CONFIG_H264PARSE 0
|
||||
%define CONFIG_H264PRED 1
|
||||
%define CONFIG_H264QPEL 0
|
||||
%define CONFIG_HEVCPARSE 0
|
||||
%define CONFIG_HPELDSP 0
|
||||
%define CONFIG_HUFFMAN 0
|
||||
%define CONFIG_HUFFYUVDSP 0
|
||||
%define CONFIG_HUFFYUVENCDSP 0
|
||||
%define CONFIG_IDCTDSP 0
|
||||
%define CONFIG_IIRFILTER 0
|
||||
%define CONFIG_IMDCT15 0
|
||||
%define CONFIG_MDCT15 0
|
||||
%define CONFIG_INTRAX8 0
|
||||
%define CONFIG_ISO_MEDIA 0
|
||||
%define CONFIG_IVIDSP 0
|
||||
|
@ -579,12 +603,14 @@
|
|||
%define CONFIG_LIBX262 0
|
||||
%define CONFIG_LLAUDDSP 0
|
||||
%define CONFIG_LLVIDDSP 0
|
||||
%define CONFIG_LLVIDENCDSP 0
|
||||
%define CONFIG_LPC 0
|
||||
%define CONFIG_LZF 0
|
||||
%define CONFIG_ME_CMP 0
|
||||
%define CONFIG_MPEG_ER 0
|
||||
%define CONFIG_MPEGAUDIO 0
|
||||
%define CONFIG_MPEGAUDIODSP 0
|
||||
%define CONFIG_MPEGAUDIOHEADER 0
|
||||
%define CONFIG_MPEGVIDEO 0
|
||||
%define CONFIG_MPEGVIDEOENC 0
|
||||
%define CONFIG_MSS34DSP 0
|
||||
|
@ -606,13 +632,13 @@
|
|||
%define CONFIG_TEXTUREDSP 0
|
||||
%define CONFIG_TEXTUREDSPENC 0
|
||||
%define CONFIG_TPELDSP 0
|
||||
%define CONFIG_VAAPI_1 0
|
||||
%define CONFIG_VAAPI_ENCODE 0
|
||||
%define CONFIG_VC1DSP 0
|
||||
%define CONFIG_VIDEODSP 1
|
||||
%define CONFIG_VP3DSP 0
|
||||
%define CONFIG_VP56DSP 0
|
||||
%define CONFIG_VP8DSP 1
|
||||
%define CONFIG_VT_BT2020 0
|
||||
%define CONFIG_WMA_FREQS 0
|
||||
%define CONFIG_WMV2DSP 0
|
||||
%define CONFIG_NULL_BSF 1
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
/* Automatically generated by configure - do not modify! */
|
||||
#ifndef FFMPEG_CONFIG_H
|
||||
#define FFMPEG_CONFIG_H
|
||||
#define FFMPEG_CONFIGURATION "--disable-everything --disable-protocols --disable-demuxers --disable-muxers --disable-filters --disable-programs --disable-doc --disable-parsers --enable-parser=vp8 --enable-parser=vp9 --enable-decoder=vp8 --enable-decoder=vp9 --disable-static --enable-shared --disable-debug --disable-sdl --disable-libxcb --disable-securetransport --disable-iconv --disable-swresample --disable-swscale --disable-avdevice --disable-avfilter --disable-avformat --disable-d3d11va --disable-dxva2 --disable-vaapi --disable-vda --disable-vdpau --disable-videotoolbox --enable-asm --enable-yasm --toolchain=msvc"
|
||||
#define FFMPEG_CONFIGURATION "--disable-everything --disable-protocols --disable-demuxers --disable-muxers --disable-filters --disable-programs --disable-doc --disable-parsers --enable-parser=vp8 --enable-parser=vp9 --enable-decoder=vp8 --enable-decoder=vp9 --disable-static --enable-shared --disable-debug --disable-sdl2 --disable-libxcb --disable-securetransport --disable-iconv --disable-swresample --disable-swscale --disable-avdevice --disable-avfilter --disable-avformat --disable-d3d11va --disable-dxva2 --disable-vaapi --disable-vdpau --disable-videotoolbox --enable-decoder=flac --enable-asm --enable-yasm --toolchain=msvc"
|
||||
#define FFMPEG_LICENSE "LGPL version 2.1 or later"
|
||||
#define CONFIG_THIS_YEAR 2016
|
||||
#define CONFIG_THIS_YEAR 2017
|
||||
#define FFMPEG_DATADIR "/usr/local/share/ffmpeg"
|
||||
#define AVCONV_DATADIR "/usr/local/share/ffmpeg"
|
||||
#define CC_IDENT "Microsoft (R) C/C++ Optimizing Compiler Version 19.00.23506 for x64"
|
||||
#define CC_IDENT "Microsoft (R) C/C++ Optimizing Compiler Version 19.11.25508.2 for x64"
|
||||
#define av_restrict __restrict
|
||||
#define EXTERN_PREFIX ""
|
||||
#define EXTERN_ASM
|
||||
|
@ -79,8 +79,8 @@
|
|||
#define HAVE_MIPSDSP 0
|
||||
#define HAVE_MIPSDSPR2 0
|
||||
#define HAVE_MSA 0
|
||||
#define HAVE_LOONGSON2 1
|
||||
#define HAVE_LOONGSON3 1
|
||||
#define HAVE_LOONGSON2 0
|
||||
#define HAVE_LOONGSON3 0
|
||||
#define HAVE_MMI 0
|
||||
#define HAVE_ARMV5TE_EXTERNAL 0
|
||||
#define HAVE_ARMV6_EXTERNAL 0
|
||||
|
@ -178,31 +178,32 @@
|
|||
#define HAVE_LOCAL_ALIGNED_16 1
|
||||
#define HAVE_LOCAL_ALIGNED_32 1
|
||||
#define HAVE_SIMD_ALIGN_16 1
|
||||
#define HAVE_SIMD_ALIGN_32 1
|
||||
#define HAVE_ATOMICS_GCC 0
|
||||
#define HAVE_ATOMICS_SUNCC 0
|
||||
#define HAVE_ATOMICS_WIN32 1
|
||||
#define HAVE_ATOMIC_CAS_PTR 0
|
||||
#define HAVE_ATOMIC_COMPARE_EXCHANGE 0
|
||||
#define HAVE_MACHINE_RW_BARRIER 0
|
||||
#define HAVE_MEMORYBARRIER 1
|
||||
#define HAVE_MM_EMPTY 0
|
||||
#define HAVE_RDTSC 1
|
||||
#define HAVE_SARESTART 0
|
||||
#define HAVE_SEM_TIMEDWAIT 1
|
||||
#define HAVE_SEM_TIMEDWAIT 0
|
||||
#define HAVE_SYNC_VAL_COMPARE_AND_SWAP 0
|
||||
#define HAVE_CABS 0
|
||||
#define HAVE_CEXP 0
|
||||
#define HAVE_INLINE_ASM 0
|
||||
#define HAVE_SYMVER 0
|
||||
#define HAVE_YASM 1
|
||||
#define HAVE_X86ASM 1
|
||||
#define HAVE_BIGENDIAN 0
|
||||
#define HAVE_FAST_UNALIGNED 1
|
||||
#define HAVE_ALSA_ASOUNDLIB_H 0
|
||||
#define HAVE_ALTIVEC_H 0
|
||||
#define HAVE_ARPA_INET_H 0
|
||||
#define HAVE_ASM_TYPES_H 0
|
||||
#define HAVE_CDIO_PARANOIA_H 0
|
||||
#define HAVE_CDIO_PARANOIA_PARANOIA_H 0
|
||||
#define HAVE_CUDA_H 0
|
||||
#define HAVE_D3D11_H 1
|
||||
#define HAVE_DISPATCH_DISPATCH_H 0
|
||||
#define HAVE_DEV_BKTR_IOCTL_BT848_H 0
|
||||
#define HAVE_DEV_BKTR_IOCTL_METEOR_H 0
|
||||
|
@ -212,7 +213,7 @@
|
|||
#define HAVE_DIRECT_H 1
|
||||
#define HAVE_DIRENT_H 0
|
||||
#define HAVE_DLFCN_H 0
|
||||
#define HAVE_D3D11_H 1
|
||||
#define HAVE_DXGIDEBUG_H 1
|
||||
#define HAVE_DXVA_H 1
|
||||
#define HAVE_ES2_GL_H 0
|
||||
#define HAVE_GSM_H 0
|
||||
|
@ -221,12 +222,13 @@
|
|||
#define HAVE_MACHINE_IOCTL_BT848_H 0
|
||||
#define HAVE_MACHINE_IOCTL_METEOR_H 0
|
||||
#define HAVE_OPENCV2_CORE_CORE_C_H 0
|
||||
#define HAVE_OPENJPEG_2_3_OPENJPEG_H 0
|
||||
#define HAVE_OPENJPEG_2_2_OPENJPEG_H 0
|
||||
#define HAVE_OPENJPEG_2_1_OPENJPEG_H 0
|
||||
#define HAVE_OPENJPEG_2_0_OPENJPEG_H 0
|
||||
#define HAVE_OPENJPEG_1_5_OPENJPEG_H 0
|
||||
#define HAVE_OPENGL_GL3_H 0
|
||||
#define HAVE_POLL_H 0
|
||||
#define HAVE_SNDIO_H 0
|
||||
#define HAVE_SOUNDCARD_H 0
|
||||
#define HAVE_STDATOMIC_H 0
|
||||
#define HAVE_SYS_MMAN_H 0
|
||||
|
@ -280,7 +282,6 @@
|
|||
#define HAVE_COMMANDLINETOARGVW 1
|
||||
#define HAVE_COTASKMEMFREE 1
|
||||
#define HAVE_CRYPTGENRANDOM 1
|
||||
#define HAVE_DLOPEN 0
|
||||
#define HAVE_FCNTL 0
|
||||
#define HAVE_FLT_LIM 1
|
||||
#define HAVE_FORK 0
|
||||
|
@ -300,7 +301,7 @@
|
|||
#define HAVE_ISATTY 1
|
||||
#define HAVE_JACK_PORT_GET_LATENCY_RANGE 0
|
||||
#define HAVE_KBHIT 1
|
||||
#define HAVE_LOADLIBRARY 0
|
||||
#define HAVE_LOADLIBRARY 1
|
||||
#define HAVE_LSTAT 0
|
||||
#define HAVE_LZO1X_999_COMPRESS 0
|
||||
#define HAVE_MACH_ABSOLUTE_TIME 0
|
||||
|
@ -327,11 +328,13 @@
|
|||
#define HAVE_OS2THREADS 0
|
||||
#define HAVE_W32THREADS 1
|
||||
#define HAVE_AS_DN_DIRECTIVE 0
|
||||
#define HAVE_AS_FPU_DIRECTIVE 0
|
||||
#define HAVE_AS_FUNC 0
|
||||
#define HAVE_AS_OBJECT_ARCH 0
|
||||
#define HAVE_ASM_MOD_Q 0
|
||||
#define HAVE_ATTRIBUTE_MAY_ALIAS 0
|
||||
#define HAVE_ATTRIBUTE_PACKED 0
|
||||
#define HAVE_BLOCKS_EXTENSION 0
|
||||
#define HAVE_EBP_AVAILABLE 0
|
||||
#define HAVE_EBX_AVAILABLE 0
|
||||
#define HAVE_GNU_AS 0
|
||||
|
@ -348,12 +351,13 @@
|
|||
#define HAVE_XFORM_ASM 0
|
||||
#define HAVE_XMM_CLOBBERS 0
|
||||
#define HAVE_CONDITION_VARIABLE_PTR 1
|
||||
#define HAVE_KCMVIDEOCODECTYPE_HEVC 0
|
||||
#define HAVE_SOCKLEN_T 1
|
||||
#define HAVE_STRUCT_ADDRINFO 1
|
||||
#define HAVE_STRUCT_GROUP_SOURCE_REQ 1
|
||||
#define HAVE_STRUCT_IP_MREQ_SOURCE 1
|
||||
#define HAVE_STRUCT_IPV6_MREQ 1
|
||||
#define HAVE_STRUCT_MSGHDR_MSG_FLAGS 1
|
||||
#define HAVE_STRUCT_MSGHDR_MSG_FLAGS 0
|
||||
#define HAVE_STRUCT_POLLFD 0
|
||||
#define HAVE_STRUCT_RUSAGE_RU_MAXRSS 0
|
||||
#define HAVE_STRUCT_SCTP_EVENT_SUBSCRIBE 0
|
||||
|
@ -364,28 +368,20 @@
|
|||
#define HAVE_STRUCT_V4L2_FRMIVALENUM_DISCRETE 0
|
||||
#define HAVE_ATOMICS_NATIVE 1
|
||||
#define HAVE_DOS_PATHS 1
|
||||
#define HAVE_DXVA2_LIB 0
|
||||
#define HAVE_DXVA2API_COBJ 1
|
||||
#define HAVE_LIBC_MSVCRT 1
|
||||
#define HAVE_LIBDC1394_1 0
|
||||
#define HAVE_LIBDC1394_2 0
|
||||
#define HAVE_MAKEINFO 1
|
||||
#define HAVE_MAKEINFO_HTML 0
|
||||
#define HAVE_MMAL_PARAMETER_VIDEO_MAX_NUM_CALLBACKS 0
|
||||
#define HAVE_PERL 1
|
||||
#define HAVE_POD2MAN 1
|
||||
#define HAVE_SDL2 0
|
||||
#define HAVE_SECTION_DATA_REL_RO 0
|
||||
#define HAVE_TEXI2HTML 0
|
||||
#define HAVE_THREADS 1
|
||||
#define HAVE_UWP 0
|
||||
#define HAVE_VAAPI_DRM 0
|
||||
#define HAVE_VAAPI_X11 0
|
||||
#define HAVE_VDPAU_X11 0
|
||||
#define HAVE_WINRT 0
|
||||
#define HAVE_XLIB 0
|
||||
#define CONFIG_BSFS 0
|
||||
#define CONFIG_DECODERS 1
|
||||
#define CONFIG_PARSERS 1
|
||||
#define CONFIG_DOC 0
|
||||
#define CONFIG_HTMLPAGES 0
|
||||
#define CONFIG_MANPAGES 1
|
||||
|
@ -393,13 +389,17 @@
|
|||
#define CONFIG_TXTPAGES 1
|
||||
#define CONFIG_AVIO_DIR_CMD_EXAMPLE 1
|
||||
#define CONFIG_AVIO_READING_EXAMPLE 1
|
||||
#define CONFIG_DECODING_ENCODING_EXAMPLE 0
|
||||
#define CONFIG_DECODE_AUDIO_EXAMPLE 1
|
||||
#define CONFIG_DECODE_VIDEO_EXAMPLE 1
|
||||
#define CONFIG_DEMUXING_DECODING_EXAMPLE 0
|
||||
#define CONFIG_ENCODE_AUDIO_EXAMPLE 1
|
||||
#define CONFIG_ENCODE_VIDEO_EXAMPLE 1
|
||||
#define CONFIG_EXTRACT_MVS_EXAMPLE 0
|
||||
#define CONFIG_FILTER_AUDIO_EXAMPLE 0
|
||||
#define CONFIG_FILTERING_AUDIO_EXAMPLE 0
|
||||
#define CONFIG_FILTERING_VIDEO_EXAMPLE 0
|
||||
#define CONFIG_HTTP_MULTICLIENT_EXAMPLE 0
|
||||
#define CONFIG_HW_DECODE_EXAMPLE 0
|
||||
#define CONFIG_METADATA_EXAMPLE 0
|
||||
#define CONFIG_MUXING_EXAMPLE 0
|
||||
#define CONFIG_QSVDEC_EXAMPLE 0
|
||||
|
@ -408,27 +408,55 @@
|
|||
#define CONFIG_SCALING_VIDEO_EXAMPLE 0
|
||||
#define CONFIG_TRANSCODE_AAC_EXAMPLE 0
|
||||
#define CONFIG_TRANSCODING_EXAMPLE 0
|
||||
#define CONFIG_AVISYNTH 0
|
||||
#define CONFIG_ALSA 0
|
||||
#define CONFIG_APPKIT 0
|
||||
#define CONFIG_AVFOUNDATION 0
|
||||
#define CONFIG_BZLIB 0
|
||||
#define CONFIG_CHROMAPRINT 0
|
||||
#define CONFIG_CRYSTALHD 0
|
||||
#define CONFIG_DECKLINK 0
|
||||
#define CONFIG_FREI0R 0
|
||||
#define CONFIG_GCRYPT 0
|
||||
#define CONFIG_GMP 0
|
||||
#define CONFIG_GNUTLS 0
|
||||
#define CONFIG_COREIMAGE 0
|
||||
#define CONFIG_ICONV 0
|
||||
#define CONFIG_JACK 0
|
||||
#define CONFIG_LIBXCB 0
|
||||
#define CONFIG_LIBXCB_SHM 0
|
||||
#define CONFIG_LIBXCB_SHAPE 0
|
||||
#define CONFIG_LIBXCB_XFIXES 0
|
||||
#define CONFIG_LZMA 0
|
||||
#define CONFIG_SCHANNEL 1
|
||||
#define CONFIG_SDL2 0
|
||||
#define CONFIG_SECURETRANSPORT 0
|
||||
#define CONFIG_SNDIO 0
|
||||
#define CONFIG_XLIB 1
|
||||
#define CONFIG_ZLIB 0
|
||||
#define CONFIG_AVISYNTH 0
|
||||
#define CONFIG_FREI0R 0
|
||||
#define CONFIG_LIBCDIO 0
|
||||
#define CONFIG_LIBRUBBERBAND 0
|
||||
#define CONFIG_LIBVIDSTAB 0
|
||||
#define CONFIG_LIBX264 0
|
||||
#define CONFIG_LIBX265 0
|
||||
#define CONFIG_LIBXAVS 0
|
||||
#define CONFIG_LIBXVID 0
|
||||
#define CONFIG_DECKLINK 0
|
||||
#define CONFIG_LIBNDI_NEWTEK 0
|
||||
#define CONFIG_LIBFDK_AAC 0
|
||||
#define CONFIG_OPENSSL 0
|
||||
#define CONFIG_GMP 0
|
||||
#define CONFIG_LIBOPENCORE_AMRNB 0
|
||||
#define CONFIG_LIBOPENCORE_AMRWB 0
|
||||
#define CONFIG_LIBVO_AMRWBENC 0
|
||||
#define CONFIG_RKMPP 0
|
||||
#define CONFIG_LIBSMBCLIENT 0
|
||||
#define CONFIG_CHROMAPRINT 0
|
||||
#define CONFIG_GCRYPT 0
|
||||
#define CONFIG_GNUTLS 0
|
||||
#define CONFIG_JNI 0
|
||||
#define CONFIG_LADSPA 0
|
||||
#define CONFIG_LIBASS 0
|
||||
#define CONFIG_LIBBLURAY 0
|
||||
#define CONFIG_LIBBS2B 0
|
||||
#define CONFIG_LIBCACA 0
|
||||
#define CONFIG_LIBCDIO 0
|
||||
#define CONFIG_LIBCELT 0
|
||||
#define CONFIG_LIBDC1394 0
|
||||
#define CONFIG_LIBEBUR128 0
|
||||
#define CONFIG_LIBFDK_AAC 0
|
||||
#define CONFIG_LIBDRM 0
|
||||
#define CONFIG_LIBFLITE 0
|
||||
#define CONFIG_LIBFONTCONFIG 0
|
||||
#define CONFIG_LIBFREETYPE 0
|
||||
|
@ -440,18 +468,15 @@
|
|||
#define CONFIG_LIBKVAZAAR 0
|
||||
#define CONFIG_LIBMODPLUG 0
|
||||
#define CONFIG_LIBMP3LAME 0
|
||||
#define CONFIG_LIBNUT 0
|
||||
#define CONFIG_LIBOPENCORE_AMRNB 0
|
||||
#define CONFIG_LIBOPENCORE_AMRWB 0
|
||||
#define CONFIG_LIBMYSOFA 0
|
||||
#define CONFIG_LIBOPENCV 0
|
||||
#define CONFIG_LIBOPENH264 0
|
||||
#define CONFIG_LIBOPENJPEG 0
|
||||
#define CONFIG_LIBOPENMPT 0
|
||||
#define CONFIG_LIBOPUS 0
|
||||
#define CONFIG_LIBPULSE 0
|
||||
#define CONFIG_LIBRSVG 0
|
||||
#define CONFIG_LIBRTMP 0
|
||||
#define CONFIG_LIBRUBBERBAND 0
|
||||
#define CONFIG_LIBSCHROEDINGER 0
|
||||
#define CONFIG_LIBSHINE 0
|
||||
#define CONFIG_LIBSMBCLIENT 0
|
||||
#define CONFIG_LIBSNAPPY 0
|
||||
|
@ -462,52 +487,37 @@
|
|||
#define CONFIG_LIBTHEORA 0
|
||||
#define CONFIG_LIBTWOLAME 0
|
||||
#define CONFIG_LIBV4L2 0
|
||||
#define CONFIG_LIBVIDSTAB 0
|
||||
#define CONFIG_LIBVO_AMRWBENC 0
|
||||
#define CONFIG_LIBVMAF 0
|
||||
#define CONFIG_LIBVORBIS 0
|
||||
#define CONFIG_LIBVPX 0
|
||||
#define CONFIG_LIBWAVPACK 0
|
||||
#define CONFIG_LIBWEBP 0
|
||||
#define CONFIG_LIBX264 0
|
||||
#define CONFIG_LIBX265 0
|
||||
#define CONFIG_LIBXAVS 0
|
||||
#define CONFIG_LIBXCB 0
|
||||
#define CONFIG_LIBXCB_SHM 0
|
||||
#define CONFIG_LIBXCB_SHAPE 0
|
||||
#define CONFIG_LIBXCB_XFIXES 0
|
||||
#define CONFIG_LIBXVID 0
|
||||
#define CONFIG_LIBXML2 0
|
||||
#define CONFIG_LIBZIMG 0
|
||||
#define CONFIG_LIBZMQ 0
|
||||
#define CONFIG_LIBZVBI 0
|
||||
#define CONFIG_LZMA 0
|
||||
#define CONFIG_MEDIACODEC 0
|
||||
#define CONFIG_NETCDF 0
|
||||
#define CONFIG_OPENAL 0
|
||||
#define CONFIG_OPENCL 0
|
||||
#define CONFIG_OPENGL 0
|
||||
#define CONFIG_OPENSSL 0
|
||||
#define CONFIG_SCHANNEL 1
|
||||
#define CONFIG_SDL 0
|
||||
#define CONFIG_SDL2 0
|
||||
#define CONFIG_SECURETRANSPORT 0
|
||||
#define CONFIG_VIDEOTOOLBOX 0
|
||||
#define CONFIG_X11GRAB 0
|
||||
#define CONFIG_XLIB 0
|
||||
#define CONFIG_ZLIB 0
|
||||
#define CONFIG_AUDIOTOOLBOX 0
|
||||
#define CONFIG_CUDA 0
|
||||
#define CONFIG_CUVID 0
|
||||
#define CONFIG_CRYSTALHD 0
|
||||
#define CONFIG_CUDA 1
|
||||
#define CONFIG_CUVID 1
|
||||
#define CONFIG_D3D11VA 0
|
||||
#define CONFIG_DXVA2 0
|
||||
#define CONFIG_LIBMFX 0
|
||||
#define CONFIG_LIBNPP 0
|
||||
#define CONFIG_MMAL 0
|
||||
#define CONFIG_NVENC 0
|
||||
#define CONFIG_OMX 0
|
||||
#define CONFIG_NVENC 1
|
||||
#define CONFIG_VAAPI 0
|
||||
#define CONFIG_VDA 0
|
||||
#define CONFIG_VDPAU 0
|
||||
#define CONFIG_VIDEOTOOLBOX 0
|
||||
#define CONFIG_V4L2_M2M 0
|
||||
#define CONFIG_XVMC 0
|
||||
#define CONFIG_CUDA_SDK 0
|
||||
#define CONFIG_LIBNPP 0
|
||||
#define CONFIG_LIBMFX 0
|
||||
#define CONFIG_MMAL 0
|
||||
#define CONFIG_OMX 0
|
||||
#define CONFIG_FTRAPV 0
|
||||
#define CONFIG_GRAY 0
|
||||
#define CONFIG_HARDCODED_TABLES 0
|
||||
|
@ -546,16 +556,27 @@
|
|||
#define CONFIG_PIXELUTILS 0
|
||||
#define CONFIG_NETWORK 0
|
||||
#define CONFIG_RDFT 0
|
||||
#define CONFIG_AUTODETECT 0
|
||||
#define CONFIG_FONTCONFIG 0
|
||||
#define CONFIG_MEMALIGN_HACK 0
|
||||
#define CONFIG_LINUX_PERF 0
|
||||
#define CONFIG_MEMORY_POISONING 0
|
||||
#define CONFIG_NEON_CLOBBER_TEST 0
|
||||
#define CONFIG_OSSFUZZ 0
|
||||
#define CONFIG_PIC 1
|
||||
#define CONFIG_POD2MAN 1
|
||||
#define CONFIG_RAISE_MAJOR 0
|
||||
#define CONFIG_THUMB 0
|
||||
#define CONFIG_VALGRIND_BACKTRACE 0
|
||||
#define CONFIG_XMM_CLOBBER_TEST 0
|
||||
#define CONFIG_BSFS 1
|
||||
#define CONFIG_DECODERS 1
|
||||
#define CONFIG_ENCODERS 0
|
||||
#define CONFIG_HWACCELS 0
|
||||
#define CONFIG_PARSERS 1
|
||||
#define CONFIG_INDEVS 0
|
||||
#define CONFIG_OUTDEVS 0
|
||||
#define CONFIG_FILTERS 0
|
||||
#define CONFIG_DEMUXERS 0
|
||||
#define CONFIG_MUXERS 0
|
||||
#define CONFIG_PROTOCOLS 0
|
||||
#define CONFIG_AANDCTTABLES 0
|
||||
#define CONFIG_AC3DSP 0
|
||||
#define CONFIG_AUDIO_FRAME_QUEUE 0
|
||||
|
@ -571,21 +592,24 @@
|
|||
#define CONFIG_FDCTDSP 0
|
||||
#define CONFIG_FLACDSP 1
|
||||
#define CONFIG_FMTCONVERT 0
|
||||
#define CONFIG_FRAME_THREAD_ENCODER 0
|
||||
#define CONFIG_G722DSP 0
|
||||
#define CONFIG_GOLOMB 1
|
||||
#define CONFIG_GOLOMB 0
|
||||
#define CONFIG_GPLV3 0
|
||||
#define CONFIG_H263DSP 0
|
||||
#define CONFIG_H264CHROMA 0
|
||||
#define CONFIG_H264DSP 0
|
||||
#define CONFIG_H264PARSE 0
|
||||
#define CONFIG_H264PRED 1
|
||||
#define CONFIG_H264QPEL 0
|
||||
#define CONFIG_HEVCPARSE 0
|
||||
#define CONFIG_HPELDSP 0
|
||||
#define CONFIG_HUFFMAN 0
|
||||
#define CONFIG_HUFFYUVDSP 0
|
||||
#define CONFIG_HUFFYUVENCDSP 0
|
||||
#define CONFIG_IDCTDSP 0
|
||||
#define CONFIG_IIRFILTER 0
|
||||
#define CONFIG_IMDCT15 0
|
||||
#define CONFIG_MDCT15 0
|
||||
#define CONFIG_INTRAX8 0
|
||||
#define CONFIG_ISO_MEDIA 0
|
||||
#define CONFIG_IVIDSP 0
|
||||
|
@ -594,12 +618,14 @@
|
|||
#define CONFIG_LIBX262 0
|
||||
#define CONFIG_LLAUDDSP 0
|
||||
#define CONFIG_LLVIDDSP 0
|
||||
#define CONFIG_LLVIDENCDSP 0
|
||||
#define CONFIG_LPC 0
|
||||
#define CONFIG_LZF 0
|
||||
#define CONFIG_ME_CMP 0
|
||||
#define CONFIG_MPEG_ER 0
|
||||
#define CONFIG_MPEGAUDIO 0
|
||||
#define CONFIG_MPEGAUDIODSP 0
|
||||
#define CONFIG_MPEGAUDIOHEADER 0
|
||||
#define CONFIG_MPEGVIDEO 0
|
||||
#define CONFIG_MPEGVIDEOENC 0
|
||||
#define CONFIG_MSS34DSP 0
|
||||
|
@ -621,13 +647,13 @@
|
|||
#define CONFIG_TEXTUREDSP 0
|
||||
#define CONFIG_TEXTUREDSPENC 0
|
||||
#define CONFIG_TPELDSP 0
|
||||
#define CONFIG_VAAPI_1 0
|
||||
#define CONFIG_VAAPI_ENCODE 0
|
||||
#define CONFIG_VC1DSP 0
|
||||
#define CONFIG_VIDEODSP 1
|
||||
#define CONFIG_VP3DSP 0
|
||||
#define CONFIG_VP56DSP 0
|
||||
#define CONFIG_VP8DSP 1
|
||||
#define CONFIG_VT_BT2020 0
|
||||
#define CONFIG_WMA_FREQS 0
|
||||
#define CONFIG_WMV2DSP 0
|
||||
#define CONFIG_NULL_BSF 1
|
||||
|
|
|
@ -87,27 +87,27 @@ FindData(const MetaData* aMetaData, uint32_t aKey, mozilla::MediaByteBuffer* aDe
|
|||
return FindData(aMetaData, aKey, static_cast<nsTArray<uint8_t>*>(aDest));
|
||||
}
|
||||
|
||||
Result<Ok, nsresult>
|
||||
mozilla::Result<mozilla::Ok, nsresult>
|
||||
CryptoFile::DoUpdate(const uint8_t* aData, size_t aLength)
|
||||
{
|
||||
BufferReader reader(aData, aLength);
|
||||
while (reader.Remaining()) {
|
||||
PsshInfo psshInfo;
|
||||
if (!reader.ReadArray(psshInfo.uuid, 16)) {
|
||||
return Err(NS_ERROR_FAILURE);
|
||||
return mozilla::Err(NS_ERROR_FAILURE);
|
||||
}
|
||||
|
||||
if (!reader.CanReadType<uint32_t>()) {
|
||||
return Err(NS_ERROR_FAILURE);
|
||||
return mozilla::Err(NS_ERROR_FAILURE);
|
||||
}
|
||||
auto length = reader.ReadType<uint32_t>();
|
||||
|
||||
if (!reader.ReadArray(psshInfo.data, length)) {
|
||||
return Err(NS_ERROR_FAILURE);
|
||||
return mozilla::Err(NS_ERROR_FAILURE);
|
||||
}
|
||||
pssh.AppendElement(psshInfo);
|
||||
}
|
||||
return Ok();
|
||||
return mozilla::Ok();
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
|
||||
#include "mozilla/ArrayUtils.h"
|
||||
#include "mozilla/PodOperations.h"
|
||||
#include "mozilla/ResultExtensions.h"
|
||||
#include "mp4_demuxer/AnnexB.h"
|
||||
#include "mp4_demuxer/BitReader.h"
|
||||
#include "mp4_demuxer/BufferReader.h"
|
||||
|
|
|
@ -447,7 +447,7 @@ Moof::Moof(Box& aBox, Trex& aTrex, Mvhd& aMvhd, Mdhd& aMdhd, Edts& aEdts, Sinf&
|
|||
int64_t endDecodeTime = decodeOffset.isOk() & offsetOffset.isOk() ?
|
||||
decodeOffset.unwrap() + offsetOffset.unwrap() : 0;
|
||||
int64_t decodeDuration = endDecodeTime - mIndex[0].mDecodeTime;
|
||||
double adjust = (double)decodeDuration / presentationDuration;
|
||||
double adjust = !!presentationDuration ? (double)decodeDuration / presentationDuration : 0;
|
||||
int64_t dtsOffset = mIndex[0].mDecodeTime;
|
||||
int64_t compositionDuration = 0;
|
||||
// Adjust the dts, ensuring that the new adjusted dts will never be greater
|
||||
|
|
|
@ -5,6 +5,9 @@
|
|||
#ifndef MP4_DEMUXER_ANNEX_B_H_
|
||||
#define MP4_DEMUXER_ANNEX_B_H_
|
||||
|
||||
#include "mozilla/Result.h"
|
||||
#include "ErrorList.h"
|
||||
|
||||
template <class T> struct already_AddRefed;
|
||||
|
||||
namespace mozilla {
|
||||
|
|
|
@ -7,9 +7,10 @@
|
|||
|
||||
#include "MediaData.h"
|
||||
#include "MediaInfo.h"
|
||||
#include "mozilla/RefPtr.h"
|
||||
#include "mozilla/Result.h"
|
||||
#include "mozilla/Types.h"
|
||||
#include "mozilla/Vector.h"
|
||||
#include "mozilla/RefPtr.h"
|
||||
#include "nsString.h"
|
||||
#include "nsTArray.h"
|
||||
#include "nsString.h"
|
||||
|
|
|
@ -3498,8 +3498,8 @@ public class BrowserApp extends GeckoApp
|
|||
}
|
||||
|
||||
@Override // GeckoView.ContentListener
|
||||
public void onFullScreen(final GeckoView view, final boolean fullscreen) {
|
||||
super.onFullScreen(view, fullscreen);
|
||||
public void onFullScreen(final GeckoSession session, final boolean fullscreen) {
|
||||
super.onFullScreen(session, fullscreen);
|
||||
|
||||
if (fullscreen) {
|
||||
mDynamicToolbar.setVisible(false, VisibilityTransition.IMMEDIATE);
|
||||
|
@ -3510,10 +3510,6 @@ public class BrowserApp extends GeckoApp
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onContextMenu(GeckoView view, int screenX, int screenY,
|
||||
String uri, String elementSrc) {}
|
||||
|
||||
@Override
|
||||
public boolean onPrepareOptionsMenu(Menu aMenu) {
|
||||
if (aMenu == null)
|
||||
|
|
|
@ -114,7 +114,7 @@ public abstract class GeckoApp extends GeckoActivity
|
|||
BundleEventListener,
|
||||
GeckoMenu.Callback,
|
||||
GeckoMenu.MenuPresenter,
|
||||
GeckoView.ContentListener,
|
||||
GeckoSession.ContentListener,
|
||||
ScreenOrientationDelegate,
|
||||
Tabs.OnTabsChangedListener,
|
||||
ViewTreeObserver.OnGlobalLayoutListener {
|
||||
|
@ -858,12 +858,12 @@ public abstract class GeckoApp extends GeckoActivity
|
|||
mLayerView.requestRender();
|
||||
}
|
||||
|
||||
@Override // GeckoView.ContentListener
|
||||
public void onTitleChange(final GeckoView view, final String title) {
|
||||
@Override // GeckoSession.ContentListener
|
||||
public void onTitleChange(final GeckoSession session, final String title) {
|
||||
}
|
||||
|
||||
@Override // GeckoView.ContentListener
|
||||
public void onFullScreen(final GeckoView view, final boolean fullScreen) {
|
||||
@Override // GeckoSession.ContentListener
|
||||
public void onFullScreen(final GeckoSession session, final boolean fullScreen) {
|
||||
if (fullScreen) {
|
||||
SnackbarBuilder.builder(this)
|
||||
.message(R.string.fullscreen_warning)
|
||||
|
@ -873,11 +873,17 @@ public abstract class GeckoApp extends GeckoActivity
|
|||
ActivityUtils.setFullScreen(this, fullScreen);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onContextMenu(final GeckoSession session, final int screenX,
|
||||
final int screenY, final String uri,
|
||||
final String elementSrc) {
|
||||
}
|
||||
|
||||
protected void setFullScreen(final boolean fullscreen) {
|
||||
ThreadUtils.postToUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
onFullScreen(mLayerView, fullscreen);
|
||||
onFullScreen(mLayerView.getSession(), fullscreen);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@ -1040,10 +1046,14 @@ public abstract class GeckoApp extends GeckoActivity
|
|||
mMainLayout = (RelativeLayout) findViewById(R.id.main_layout);
|
||||
mLayerView = (GeckoView) findViewById(R.id.layer_view);
|
||||
|
||||
mLayerView.setChromeUri("chrome://browser/content/browser.xul");
|
||||
mLayerView.setContentListener(this);
|
||||
final GeckoSession session = new GeckoSession();
|
||||
mLayerView.setSession(session);
|
||||
mLayerView.setOverScrollMode(View.OVER_SCROLL_NEVER);
|
||||
|
||||
session.getSettings().setString(GeckoSessionSettings.CHROME_URI,
|
||||
"chrome://browser/content/browser.xul");
|
||||
session.setContentListener(this);
|
||||
|
||||
GeckoAccessibility.setDelegate(mLayerView);
|
||||
|
||||
getAppEventDispatcher().registerGeckoThreadListener(this,
|
||||
|
|
|
@ -1,27 +0,0 @@
|
|||
/* -*- Mode: Java; c-basic-offset: 4; tab-width: 20; indent-tabs-mode: nil; -*-
|
||||
* vim: ts=4 sw=4 expandtab:
|
||||
* 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/. */
|
||||
|
||||
package org.mozilla.gecko;
|
||||
|
||||
import org.mozilla.gecko.annotation.WrapForJNI;
|
||||
import org.mozilla.gecko.GeckoThread;
|
||||
import org.mozilla.gecko.GeckoView;
|
||||
import org.mozilla.gecko.ScreenManagerHelper;
|
||||
|
||||
import android.content.Context;
|
||||
import android.util.AttributeSet;
|
||||
import android.util.DisplayMetrics;
|
||||
|
||||
public class PresentationView extends GeckoView {
|
||||
private static final String LOGTAG = "PresentationView";
|
||||
private static final String PRESENTATION_VIEW_URI = "chrome://browser/content/PresentationView.xul";
|
||||
|
||||
public PresentationView(Context context, String deviceId, int screenId) {
|
||||
super(context);
|
||||
this.mChromeUri = PRESENTATION_VIEW_URI + "#" + deviceId;
|
||||
this.mScreenId = screenId;
|
||||
}
|
||||
}
|
|
@ -6,15 +6,10 @@
|
|||
|
||||
package org.mozilla.gecko;
|
||||
|
||||
import org.mozilla.gecko.AppConstants.Versions;
|
||||
import org.mozilla.gecko.GeckoAppShell;
|
||||
import org.mozilla.gecko.PresentationView;
|
||||
import org.mozilla.gecko.R;
|
||||
import org.mozilla.gecko.GeckoSession;
|
||||
import org.mozilla.gecko.GeckoSessionSettings;
|
||||
import org.mozilla.gecko.GeckoView;
|
||||
import org.mozilla.gecko.ScreenManagerHelper;
|
||||
import org.mozilla.gecko.annotation.JNITarget;
|
||||
import org.mozilla.gecko.annotation.ReflectionTarget;
|
||||
import org.mozilla.gecko.annotation.WrapForJNI;
|
||||
import org.mozilla.gecko.gfx.LayerView;
|
||||
|
||||
import com.google.android.gms.cast.CastMediaControlIntent;
|
||||
import com.google.android.gms.cast.CastPresentation;
|
||||
|
@ -104,9 +99,11 @@ public class RemotePresentationService extends CastRemoteDisplayLocalService {
|
|||
}
|
||||
|
||||
class VirtualPresentation extends CastPresentation {
|
||||
private final String LOGTAG = "VirtualPresentation";
|
||||
private static final String LOGTAG = "VirtualPresentation";
|
||||
private static final String PRESENTATION_VIEW_URI = "chrome://browser/content/PresentationView.xul";
|
||||
|
||||
private RelativeLayout layout;
|
||||
private PresentationView view;
|
||||
private GeckoView view;
|
||||
private String deviceId;
|
||||
private int screenId;
|
||||
|
||||
|
@ -127,8 +124,15 @@ class VirtualPresentation extends CastPresentation {
|
|||
* resources.
|
||||
*/
|
||||
|
||||
// Create new PresentationView
|
||||
view = new PresentationView(getContext(), deviceId, screenId);
|
||||
// Create new GeckoView
|
||||
view = new GeckoView(getContext());
|
||||
|
||||
final GeckoSession session = new GeckoSession();
|
||||
session.getSettings().setString(GeckoSessionSettings.CHROME_URI,
|
||||
PRESENTATION_VIEW_URI + "#" + deviceId);
|
||||
session.getSettings().setInt(GeckoSessionSettings.SCREEN_ID, screenId);
|
||||
|
||||
view.setSession(session);
|
||||
view.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,
|
||||
LayoutParams.MATCH_PARENT));
|
||||
|
||||
|
|
|
@ -29,7 +29,7 @@ import android.widget.ImageView;
|
|||
import android.widget.TextView;
|
||||
|
||||
import org.mozilla.gecko.GeckoView;
|
||||
import org.mozilla.gecko.GeckoView.ProgressListener.SecurityInformation;
|
||||
import org.mozilla.gecko.GeckoSession.ProgressListener.SecurityInformation;
|
||||
import org.mozilla.gecko.R;
|
||||
import org.mozilla.gecko.SiteIdentity;
|
||||
import org.mozilla.gecko.Tab;
|
||||
|
|
|
@ -42,8 +42,9 @@ import org.mozilla.gecko.EventDispatcher;
|
|||
import org.mozilla.gecko.FormAssistPopup;
|
||||
import org.mozilla.gecko.GeckoAccessibility;
|
||||
import org.mozilla.gecko.GeckoSharedPrefs;
|
||||
import org.mozilla.gecko.GeckoSession;
|
||||
import org.mozilla.gecko.GeckoSessionSettings;
|
||||
import org.mozilla.gecko.GeckoView;
|
||||
import org.mozilla.gecko.GeckoViewSettings;
|
||||
import org.mozilla.gecko.preferences.GeckoPreferences;
|
||||
import org.mozilla.gecko.R;
|
||||
import org.mozilla.gecko.SnackbarBuilder;
|
||||
|
@ -72,9 +73,9 @@ import java.util.List;
|
|||
public class CustomTabsActivity extends AppCompatActivity
|
||||
implements ActionModePresenter,
|
||||
GeckoMenu.Callback,
|
||||
GeckoView.ContentListener,
|
||||
GeckoView.NavigationListener,
|
||||
GeckoView.ProgressListener {
|
||||
GeckoSession.ContentListener,
|
||||
GeckoSession.NavigationListener,
|
||||
GeckoSession.ProgressListener {
|
||||
|
||||
private static final String LOGTAG = "CustomTabsActivity";
|
||||
|
||||
|
@ -88,6 +89,7 @@ public class CustomTabsActivity extends AppCompatActivity
|
|||
|
||||
private MenuItem menuItemControl;
|
||||
|
||||
private GeckoSession mGeckoSession;
|
||||
private GeckoView mGeckoView;
|
||||
private PromptService mPromptService;
|
||||
private DoorHangerPopup mDoorHangerPopup;
|
||||
|
@ -127,12 +129,15 @@ public class CustomTabsActivity extends AppCompatActivity
|
|||
|
||||
mGeckoView = (GeckoView) findViewById(R.id.gecko_view);
|
||||
|
||||
mGeckoView.setNavigationListener(this);
|
||||
mGeckoView.setProgressListener(this);
|
||||
mGeckoView.setContentListener(this);
|
||||
|
||||
GeckoAccessibility.setDelegate(mGeckoView);
|
||||
|
||||
mGeckoSession = new GeckoSession();
|
||||
mGeckoView.setSession(mGeckoSession);
|
||||
|
||||
mGeckoSession.setNavigationListener(this);
|
||||
mGeckoSession.setProgressListener(this);
|
||||
mGeckoSession.setContentListener(this);
|
||||
|
||||
mPromptService = new PromptService(this, mGeckoView.getEventDispatcher());
|
||||
mDoorHangerPopup = new DoorHangerPopup(this, mGeckoView.getEventDispatcher());
|
||||
|
||||
|
@ -142,15 +147,15 @@ public class CustomTabsActivity extends AppCompatActivity
|
|||
mTextSelection = TextSelection.Factory.create(mGeckoView, this);
|
||||
mTextSelection.create();
|
||||
|
||||
final GeckoViewSettings settings = mGeckoView.getSettings();
|
||||
settings.setBoolean(GeckoViewSettings.USE_MULTIPROCESS, false);
|
||||
final GeckoSessionSettings settings = mGeckoView.getSettings();
|
||||
settings.setBoolean(GeckoSessionSettings.USE_MULTIPROCESS, false);
|
||||
settings.setBoolean(
|
||||
GeckoViewSettings.USE_REMOTE_DEBUGGER,
|
||||
GeckoSessionSettings.USE_REMOTE_DEBUGGER,
|
||||
GeckoSharedPrefs.forApp(this).getBoolean(
|
||||
GeckoPreferences.PREFS_DEVTOOLS_REMOTE_USB_ENABLED, false));
|
||||
|
||||
if (intent != null && !TextUtils.isEmpty(intent.getDataString())) {
|
||||
mGeckoView.loadUri(intent.getDataString());
|
||||
mGeckoSession.loadUri(intent.getDataString());
|
||||
} else {
|
||||
Log.w(LOGTAG, "No intend found for custom tab");
|
||||
finish();
|
||||
|
@ -162,13 +167,13 @@ public class CustomTabsActivity extends AppCompatActivity
|
|||
|
||||
@Override
|
||||
public void onResume() {
|
||||
mGeckoView.setActive(true);
|
||||
mGeckoSession.setActive(true);
|
||||
super.onResume();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPause() {
|
||||
mGeckoView.setActive(false);
|
||||
mGeckoSession.setActive(false);
|
||||
super.onPause();
|
||||
}
|
||||
|
||||
|
@ -244,8 +249,8 @@ public class CustomTabsActivity extends AppCompatActivity
|
|||
|
||||
@Override
|
||||
public void finish() {
|
||||
if (mGeckoView != null) {
|
||||
mGeckoView.loadUri("about:blank");
|
||||
if (mGeckoSession != null) {
|
||||
mGeckoSession.loadUri("about:blank");
|
||||
}
|
||||
|
||||
super.finish();
|
||||
|
@ -263,7 +268,7 @@ public class CustomTabsActivity extends AppCompatActivity
|
|||
@Override
|
||||
public void onBackPressed() {
|
||||
if (mCanGoBack) {
|
||||
mGeckoView.goBack();
|
||||
mGeckoSession.goBack();
|
||||
} else {
|
||||
finish();
|
||||
}
|
||||
|
@ -500,15 +505,15 @@ public class CustomTabsActivity extends AppCompatActivity
|
|||
*/
|
||||
private void onLoadingControlClicked() {
|
||||
if (mCanStop) {
|
||||
mGeckoView.stop();
|
||||
mGeckoSession.stop();
|
||||
} else {
|
||||
mGeckoView.reload();
|
||||
mGeckoSession.reload();
|
||||
}
|
||||
}
|
||||
|
||||
private void onForwardClicked() {
|
||||
if (mCanGoForward) {
|
||||
mGeckoView.goForward();
|
||||
mGeckoSession.goForward();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -582,27 +587,27 @@ public class CustomTabsActivity extends AppCompatActivity
|
|||
return null;
|
||||
}
|
||||
|
||||
/* GeckoView.NavigationListener */
|
||||
/* GeckoSession.NavigationListener */
|
||||
@Override
|
||||
public void onLocationChange(GeckoView view, String url) {
|
||||
public void onLocationChange(GeckoSession session, String url) {
|
||||
mCurrentUrl = url;
|
||||
updateActionBar();
|
||||
updateProgress(60);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCanGoBack(GeckoView view, boolean canGoBack) {
|
||||
public void onCanGoBack(GeckoSession session, boolean canGoBack) {
|
||||
mCanGoBack = canGoBack;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCanGoForward(GeckoView view, boolean canGoForward) {
|
||||
public void onCanGoForward(GeckoSession session, boolean canGoForward) {
|
||||
mCanGoForward = canGoForward;
|
||||
updateMenuItemForward();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onLoadUri(final GeckoView view, final String urlStr,
|
||||
public boolean onLoadUri(final GeckoSession session, final String urlStr,
|
||||
final TargetWindow where) {
|
||||
if (where != TargetWindow.NEW) {
|
||||
return false;
|
||||
|
@ -640,9 +645,9 @@ public class CustomTabsActivity extends AppCompatActivity
|
|||
return true;
|
||||
}
|
||||
|
||||
/* GeckoView.ProgressListener */
|
||||
/* GeckoSession.ProgressListener */
|
||||
@Override
|
||||
public void onPageStart(GeckoView view, String url) {
|
||||
public void onPageStart(GeckoSession session, String url) {
|
||||
mCurrentUrl = url;
|
||||
mCanStop = true;
|
||||
updateActionBar();
|
||||
|
@ -651,27 +656,27 @@ public class CustomTabsActivity extends AppCompatActivity
|
|||
}
|
||||
|
||||
@Override
|
||||
public void onPageStop(GeckoView view, boolean success) {
|
||||
public void onPageStop(GeckoSession session, boolean success) {
|
||||
mCanStop = false;
|
||||
updateCanStop();
|
||||
updateProgress(100);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSecurityChange(GeckoView view, SecurityInformation securityInfo) {
|
||||
public void onSecurityChange(GeckoSession session, SecurityInformation securityInfo) {
|
||||
mSecurityInformation = securityInfo;
|
||||
updateActionBar();
|
||||
}
|
||||
|
||||
/* GeckoView.ContentListener */
|
||||
/* GeckoSession.ContentListener */
|
||||
@Override
|
||||
public void onTitleChange(GeckoView view, String title) {
|
||||
public void onTitleChange(GeckoSession session, String title) {
|
||||
mCurrentTitle = title;
|
||||
updateActionBar();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFullScreen(GeckoView view, boolean fullScreen) {
|
||||
public void onFullScreen(GeckoSession session, boolean fullScreen) {
|
||||
ActivityUtils.setFullScreen(this, fullScreen);
|
||||
if (fullScreen) {
|
||||
getSupportActionBar().hide();
|
||||
|
@ -681,7 +686,7 @@ public class CustomTabsActivity extends AppCompatActivity
|
|||
}
|
||||
|
||||
@Override
|
||||
public void onContextMenu(GeckoView view, int screenX, int screenY,
|
||||
public void onContextMenu(GeckoSession session, int screenX, int screenY,
|
||||
final String uri, final String elementSrc) {
|
||||
|
||||
final String content = uri != null ? uri : elementSrc != null ? elementSrc : "";
|
||||
|
|
|
@ -19,7 +19,7 @@ import org.mozilla.gecko.AboutPages;
|
|||
import org.mozilla.gecko.AppConstants;
|
||||
import org.mozilla.gecko.EventDispatcher;
|
||||
import org.mozilla.gecko.GeckoView;
|
||||
import org.mozilla.gecko.GeckoView.ProgressListener.SecurityInformation;
|
||||
import org.mozilla.gecko.GeckoSession.ProgressListener.SecurityInformation;
|
||||
import org.mozilla.gecko.R;
|
||||
import org.mozilla.gecko.SiteIdentity;
|
||||
import org.mozilla.gecko.SiteIdentity.SecurityMode;
|
||||
|
|
|
@ -464,6 +464,7 @@ public abstract class BrowserToolbar extends ThemedRelativeLayout
|
|||
// Progress-related handling
|
||||
switch (msg) {
|
||||
case START:
|
||||
flags.add(UpdateFlags.PROGRESS);
|
||||
updateProgressVisibility(tab, Tab.LOAD_PROGRESS_INIT);
|
||||
break;
|
||||
case ADDED:
|
||||
|
|
|
@ -35,9 +35,10 @@ import org.mozilla.gecko.BrowserApp;
|
|||
import org.mozilla.gecko.DoorHangerPopup;
|
||||
import org.mozilla.gecko.GeckoAccessibility;
|
||||
import org.mozilla.gecko.GeckoScreenOrientation;
|
||||
import org.mozilla.gecko.GeckoSession;
|
||||
import org.mozilla.gecko.GeckoSessionSettings;
|
||||
import org.mozilla.gecko.GeckoSharedPrefs;
|
||||
import org.mozilla.gecko.GeckoView;
|
||||
import org.mozilla.gecko.GeckoViewSettings;
|
||||
import org.mozilla.gecko.preferences.GeckoPreferences;
|
||||
import org.mozilla.gecko.R;
|
||||
import org.mozilla.gecko.customtabs.CustomTabsActivity;
|
||||
|
@ -50,13 +51,15 @@ import org.mozilla.gecko.widget.ActionModePresenter;
|
|||
|
||||
public class WebAppActivity extends AppCompatActivity
|
||||
implements ActionModePresenter,
|
||||
GeckoView.NavigationListener {
|
||||
GeckoSession.ContentListener,
|
||||
GeckoSession.NavigationListener {
|
||||
private static final String LOGTAG = "WebAppActivity";
|
||||
|
||||
public static final String MANIFEST_PATH = "MANIFEST_PATH";
|
||||
public static final String MANIFEST_URL = "MANIFEST_URL";
|
||||
private static final String SAVED_INTENT = "savedIntent";
|
||||
|
||||
private GeckoSession mGeckoSession;
|
||||
private GeckoView mGeckoView;
|
||||
private PromptService mPromptService;
|
||||
private DoorHangerPopup mDoorHangerPopup;
|
||||
|
@ -92,28 +95,11 @@ public class WebAppActivity extends AppCompatActivity
|
|||
super.onCreate(savedInstanceState);
|
||||
|
||||
mGeckoView = new GeckoView(this);
|
||||
mGeckoView.setNavigationListener(this);
|
||||
mGeckoView.setContentListener(new GeckoView.ContentListener() {
|
||||
public void onTitleChange(GeckoView view, String title) {}
|
||||
public void onContextMenu(GeckoView view, int screenX, int screenY,
|
||||
String uri, String elementSrc) {
|
||||
final String content = uri != null ? uri : elementSrc != null ? elementSrc : "";
|
||||
final Uri validUri = WebApps.getValidURL(content);
|
||||
if (validUri == null) {
|
||||
return;
|
||||
}
|
||||
mGeckoSession = new GeckoSession();
|
||||
mGeckoView.setSession(mGeckoSession);
|
||||
|
||||
runOnUiThread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
WebApps.openInFennec(validUri, WebAppActivity.this);
|
||||
}
|
||||
});
|
||||
}
|
||||
public void onFullScreen(GeckoView view, boolean fullScreen) {
|
||||
updateFullScreenContent(fullScreen);
|
||||
}
|
||||
});
|
||||
mGeckoSession.setNavigationListener(this);
|
||||
mGeckoSession.setContentListener(this);
|
||||
|
||||
GeckoAccessibility.setDelegate(mGeckoView);
|
||||
|
||||
|
@ -123,10 +109,10 @@ public class WebAppActivity extends AppCompatActivity
|
|||
mTextSelection = TextSelection.Factory.create(mGeckoView, this);
|
||||
mTextSelection.create();
|
||||
|
||||
final GeckoViewSettings settings = mGeckoView.getSettings();
|
||||
settings.setBoolean(GeckoViewSettings.USE_MULTIPROCESS, false);
|
||||
final GeckoSessionSettings settings = mGeckoView.getSettings();
|
||||
settings.setBoolean(GeckoSessionSettings.USE_MULTIPROCESS, false);
|
||||
settings.setBoolean(
|
||||
GeckoViewSettings.USE_REMOTE_DEBUGGER,
|
||||
GeckoSessionSettings.USE_REMOTE_DEBUGGER,
|
||||
GeckoSharedPrefs.forApp(this).getBoolean(
|
||||
GeckoPreferences.PREFS_DEVTOOLS_REMOTE_USB_ENABLED, false));
|
||||
|
||||
|
@ -150,20 +136,20 @@ public class WebAppActivity extends AppCompatActivity
|
|||
|
||||
updateFromManifest();
|
||||
|
||||
mGeckoView.loadUri(mManifest.getStartUri().toString());
|
||||
mGeckoSession.loadUri(mManifest.getStartUri().toString());
|
||||
|
||||
setContentView(mGeckoView);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResume() {
|
||||
mGeckoView.setActive(true);
|
||||
mGeckoSession.setActive(true);
|
||||
super.onResume();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPause() {
|
||||
mGeckoView.setActive(false);
|
||||
mGeckoSession.setActive(false);
|
||||
super.onPause();
|
||||
}
|
||||
|
||||
|
@ -206,9 +192,9 @@ public class WebAppActivity extends AppCompatActivity
|
|||
@Override
|
||||
public void onBackPressed() {
|
||||
if (mIsFullScreenContent) {
|
||||
mGeckoView.exitFullScreen();
|
||||
mGeckoSession.exitFullScreen();
|
||||
} else if (mCanGoBack) {
|
||||
mGeckoView.goBack();
|
||||
mGeckoSession.goBack();
|
||||
} else {
|
||||
super.onBackPressed();
|
||||
}
|
||||
|
@ -266,42 +252,62 @@ public class WebAppActivity extends AppCompatActivity
|
|||
|
||||
updateFullScreenMode(displayMode.equals("fullscreen"));
|
||||
|
||||
GeckoViewSettings.DisplayMode mode;
|
||||
int mode;
|
||||
switch (displayMode) {
|
||||
case "standalone":
|
||||
mode = GeckoViewSettings.DisplayMode.STANDALONE;
|
||||
mode = GeckoSessionSettings.DISPLAY_MODE_STANDALONE;
|
||||
break;
|
||||
case "fullscreen":
|
||||
mode = GeckoViewSettings.DisplayMode.FULLSCREEN;
|
||||
mode = GeckoSessionSettings.DISPLAY_MODE_FULLSCREEN;
|
||||
break;
|
||||
case "minimal-ui":
|
||||
mode = GeckoViewSettings.DisplayMode.MINIMAL_UI;
|
||||
mode = GeckoSessionSettings.DISPLAY_MODE_MINIMAL_UI;
|
||||
break;
|
||||
case "browser":
|
||||
default:
|
||||
mode = GeckoViewSettings.DisplayMode.BROWSER;
|
||||
mode = GeckoSessionSettings.DISPLAY_MODE_BROWSER;
|
||||
break;
|
||||
}
|
||||
|
||||
mGeckoView.getSettings().setInt(GeckoViewSettings.DISPLAY_MODE, mode.value());
|
||||
mGeckoView.getSettings().setInt(GeckoSessionSettings.DISPLAY_MODE, mode);
|
||||
}
|
||||
|
||||
/* GeckoView.NavigationListener */
|
||||
@Override
|
||||
public void onLocationChange(GeckoView view, String url) {
|
||||
@Override // GeckoSession.NavigationListener
|
||||
public void onLocationChange(GeckoSession session, String url) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCanGoBack(GeckoView view, boolean canGoBack) {
|
||||
@Override // GeckoSession.NavigationListener
|
||||
public void onCanGoBack(GeckoSession session, boolean canGoBack) {
|
||||
mCanGoBack = canGoBack;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCanGoForward(GeckoView view, boolean canGoForward) {
|
||||
@Override // GeckoSession.NavigationListener
|
||||
public void onCanGoForward(GeckoSession session, boolean canGoForward) {
|
||||
}
|
||||
|
||||
@Override // GeckoSession.ContentListener
|
||||
public void onTitleChange(GeckoSession session, String title) {
|
||||
}
|
||||
|
||||
@Override // GeckoSession.ContentListener
|
||||
public void onContextMenu(GeckoSession session, int screenX, int screenY,
|
||||
String uri, String elementSrc) {
|
||||
final String content = uri != null ? uri : elementSrc != null ? elementSrc : "";
|
||||
final Uri validUri = WebApps.getValidURL(content);
|
||||
if (validUri == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
WebApps.openInFennec(validUri, WebAppActivity.this);
|
||||
}
|
||||
|
||||
@Override // GeckoSession.ContentListener
|
||||
public void onFullScreen(GeckoSession session, boolean fullScreen) {
|
||||
updateFullScreenContent(fullScreen);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onLoadUri(final GeckoView view, final String urlStr,
|
||||
public boolean onLoadUri(final GeckoSession session, final String urlStr,
|
||||
final TargetWindow where) {
|
||||
final Uri uri = Uri.parse(urlStr);
|
||||
if (uri == null) {
|
||||
|
|
|
@ -384,11 +384,12 @@ gvjar.sources += [geckoview_source_dir + 'java/org/mozilla/gecko/' + x
|
|||
'GeckoProfile.java',
|
||||
'GeckoProfileDirectories.java',
|
||||
'GeckoScreenOrientation.java',
|
||||
'GeckoSession.java',
|
||||
'GeckoSessionHandler.java',
|
||||
'GeckoSessionSettings.java',
|
||||
'GeckoSharedPrefs.java',
|
||||
'GeckoThread.java',
|
||||
'GeckoView.java',
|
||||
'GeckoViewHandler.java',
|
||||
'GeckoViewSettings.java',
|
||||
'gfx/BitmapUtils.java',
|
||||
'gfx/BufferedImage.java',
|
||||
'gfx/BufferedImageGLInfo.java',
|
||||
|
@ -817,7 +818,6 @@ gbjar.sources += ['java/org/mozilla/gecko/' + x for x in [
|
|||
'preferences/SetHomepagePreference.java',
|
||||
'preferences/SyncPreference.java',
|
||||
'preferences/TopSitesPanelsPreference.java',
|
||||
'PresentationView.java',
|
||||
'PrintHelper.java',
|
||||
'PrivateTab.java',
|
||||
'promotion/AddToHomeScreenPromotion.java',
|
||||
|
|
|
@ -71,6 +71,10 @@ public final class EventDispatcher extends JNIObject {
|
|||
mNativeQueue = queue;
|
||||
}
|
||||
|
||||
public NativeQueue getNativeQueue() {
|
||||
return mNativeQueue;
|
||||
}
|
||||
|
||||
private boolean isReadyForDispatchingToGecko() {
|
||||
return mNativeQueue.isReady();
|
||||
}
|
||||
|
|
|
@ -598,7 +598,7 @@ final class GeckoEditable extends IGeckoEditableParent.Stub
|
|||
}
|
||||
|
||||
@WrapForJNI(calledFrom = "gecko")
|
||||
private GeckoEditable(final GeckoView v) {
|
||||
private GeckoEditable() {
|
||||
if (DEBUG) {
|
||||
// Called by nsWindow.
|
||||
ThreadUtils.assertOnGeckoThread();
|
||||
|
@ -613,8 +613,6 @@ final class GeckoEditable extends IGeckoEditableParent.Stub
|
|||
PROXY_INTERFACES, this);
|
||||
|
||||
mIcRunHandler = mIcPostHandler = ThreadUtils.getUiHandler();
|
||||
|
||||
onViewChange(v);
|
||||
}
|
||||
|
||||
@WrapForJNI(calledFrom = "gecko")
|
||||
|
|
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
|
@ -12,11 +12,10 @@ import org.mozilla.gecko.util.GeckoBundle;
|
|||
|
||||
import android.util.Log;
|
||||
|
||||
|
||||
/* package */ abstract class GeckoViewHandler<Listener>
|
||||
/* package */ abstract class GeckoSessionHandler<Listener>
|
||||
implements BundleEventListener {
|
||||
|
||||
private static final String LOGTAG = "GeckoViewHandler";
|
||||
private static final String LOGTAG = "GeckoSessionHandler";
|
||||
private static final boolean DEBUG = false;
|
||||
|
||||
private Listener mListener;
|
||||
|
@ -25,19 +24,19 @@ import android.util.Log;
|
|||
private final String[] mEvents;
|
||||
|
||||
|
||||
GeckoViewHandler(final String module, final GeckoView view,
|
||||
final String[] events) {
|
||||
this(module, view, events, /* alwaysListen */ false);
|
||||
GeckoSessionHandler(final String module, final GeckoSession session,
|
||||
final String[] events) {
|
||||
this(module, session, events, /* alwaysListen */ false);
|
||||
}
|
||||
|
||||
GeckoViewHandler(final String module, final GeckoView view,
|
||||
final String[] events, final boolean alwaysListen) {
|
||||
GeckoSessionHandler(final String module, final GeckoSession session,
|
||||
final String[] events, final boolean alwaysListen) {
|
||||
mAlwaysListen = alwaysListen;
|
||||
mModuleName = module;
|
||||
mEvents = events;
|
||||
|
||||
if (alwaysListen) {
|
||||
register(view.getEventDispatcher());
|
||||
register(session.getEventDispatcher());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -45,8 +44,8 @@ import android.util.Log;
|
|||
return mListener;
|
||||
}
|
||||
|
||||
public void setListener(final Listener listener, final GeckoView view) {
|
||||
final EventDispatcher eventDispatcher = view.getEventDispatcher();
|
||||
public void setListener(final Listener listener, final GeckoSession session) {
|
||||
final EventDispatcher eventDispatcher = session.getEventDispatcher();
|
||||
if (mListener == listener) {
|
||||
return;
|
||||
}
|
|
@ -0,0 +1,215 @@
|
|||
/* -*- Mode: Java; c-basic-offset: 4; tab-width: 20; indent-tabs-mode: nil; -*-
|
||||
* vim: ts=4 sw=4 expandtab:
|
||||
* 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/. */
|
||||
|
||||
package org.mozilla.gecko;
|
||||
|
||||
import org.mozilla.gecko.util.GeckoBundle;
|
||||
|
||||
import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
||||
import android.util.Log;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
|
||||
public final class GeckoSessionSettings implements Parcelable {
|
||||
private static final String LOGTAG = "GeckoSessionSettings";
|
||||
private static final boolean DEBUG = false;
|
||||
|
||||
// This needs to match nsIDocShell.idl
|
||||
public static final int DISPLAY_MODE_BROWSER = 0;
|
||||
public static final int DISPLAY_MODE_MINIMAL_UI = 1;
|
||||
public static final int DISPLAY_MODE_STANDALONE = 2;
|
||||
public static final int DISPLAY_MODE_FULLSCREEN = 3;
|
||||
|
||||
private static class Key<T> {
|
||||
public final String name;
|
||||
public final boolean initOnly;
|
||||
public final Collection<T> values;
|
||||
|
||||
public Key(final String name) {
|
||||
this(name, /* initOnly */ false, /* values */ null);
|
||||
}
|
||||
|
||||
public Key(final String name, final boolean initOnly, final Collection<T> values) {
|
||||
this.name = name;
|
||||
this.initOnly = initOnly;
|
||||
this.values = values;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Key to set the chrome window URI, or null to use default URI.
|
||||
* Read-only once session is open.
|
||||
*/
|
||||
public static final Key<String> CHROME_URI =
|
||||
new Key<String>("chromeUri", /* initOnly */ true, /* values */ null);
|
||||
/**
|
||||
* Key to set the window screen ID, or 0 to use default ID.
|
||||
* Read-only once session is open.
|
||||
*/
|
||||
public static final Key<Integer> SCREEN_ID =
|
||||
new Key<Integer>("screenId", /* initOnly */ true, /* values */ null);
|
||||
|
||||
/*
|
||||
* Key to enable and disable tracking protection.
|
||||
*/
|
||||
public static final Key<Boolean> USE_TRACKING_PROTECTION =
|
||||
new Key<Boolean>("useTrackingProtection");
|
||||
/*
|
||||
* Key to enable and disable private mode browsing.
|
||||
* Read-only once session is open.
|
||||
*/
|
||||
public static final Key<Boolean> USE_PRIVATE_MODE =
|
||||
new Key<Boolean>("usePrivateMode", /* initOnly */ true, /* values */ null);
|
||||
|
||||
/*
|
||||
* Key to enable and disable multiprocess browsing (e10s).
|
||||
* Read-only once session is open.
|
||||
*/
|
||||
public static final Key<Boolean> USE_MULTIPROCESS =
|
||||
new Key<Boolean>("useMultiprocess", /* initOnly */ true, /* values */ null);
|
||||
|
||||
/*
|
||||
* Key to specify which display-mode we should use
|
||||
*/
|
||||
public static final Key<Integer> DISPLAY_MODE =
|
||||
new Key<Integer>("displayMode", /* initOnly */ false,
|
||||
Arrays.asList(DISPLAY_MODE_BROWSER, DISPLAY_MODE_MINIMAL_UI,
|
||||
DISPLAY_MODE_STANDALONE, DISPLAY_MODE_FULLSCREEN));
|
||||
|
||||
public static final Key<Boolean> USE_REMOTE_DEBUGGER =
|
||||
new Key<Boolean>("useRemoteDebugger");
|
||||
|
||||
public static final Key<String> DEBUGGER_SOCKET_DIR =
|
||||
new Key<String>("debuggerSocketDir");
|
||||
|
||||
/* package */ static final Key<String> DATA_DIR =
|
||||
new Key<String>("dataDir", /* initOnly */ true, /* values */ null);
|
||||
|
||||
private final GeckoSession mSession;
|
||||
private final GeckoBundle mBundle;
|
||||
|
||||
public GeckoSessionSettings() {
|
||||
this(null);
|
||||
}
|
||||
|
||||
/* package */ GeckoSessionSettings(final GeckoSession session) {
|
||||
mSession = session;
|
||||
mBundle = new GeckoBundle();
|
||||
|
||||
mBundle.putString(CHROME_URI.name, null);
|
||||
mBundle.putInt(SCREEN_ID.name, 0);
|
||||
mBundle.putBoolean(USE_TRACKING_PROTECTION.name, false);
|
||||
mBundle.putBoolean(USE_PRIVATE_MODE.name, false);
|
||||
mBundle.putBoolean(USE_MULTIPROCESS.name, true);
|
||||
mBundle.putInt(DISPLAY_MODE.name, DISPLAY_MODE_BROWSER);
|
||||
mBundle.putBoolean(USE_REMOTE_DEBUGGER.name, false);
|
||||
mBundle.putString(DEBUGGER_SOCKET_DIR.name, null);
|
||||
}
|
||||
|
||||
/* package */ GeckoSessionSettings(final GeckoSessionSettings settings,
|
||||
final GeckoSession session) {
|
||||
mSession = session;
|
||||
mBundle = new GeckoBundle(settings.mBundle);
|
||||
}
|
||||
|
||||
public void setBoolean(final Key<Boolean> key, final boolean value) {
|
||||
synchronized (mBundle) {
|
||||
if (valueChangedLocked(key, value)) {
|
||||
mBundle.putBoolean(key.name, value);
|
||||
dispatchUpdate();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public boolean getBoolean(final Key<Boolean> key) {
|
||||
synchronized (mBundle) {
|
||||
return mBundle.getBoolean(key.name);
|
||||
}
|
||||
}
|
||||
|
||||
public void setInt(final Key<Integer> key, final int value) {
|
||||
synchronized (mBundle) {
|
||||
if (valueChangedLocked(key, value)) {
|
||||
mBundle.putInt(key.name, value);
|
||||
dispatchUpdate();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public int getInt(final Key<Integer> key) {
|
||||
synchronized (mBundle) {
|
||||
return mBundle.getInt(key.name);
|
||||
}
|
||||
}
|
||||
|
||||
public void setString(final Key<String> key, final String value) {
|
||||
synchronized (mBundle) {
|
||||
if (valueChangedLocked(key, value)) {
|
||||
mBundle.putString(key.name, value);
|
||||
dispatchUpdate();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public String getString(final Key<String> key) {
|
||||
synchronized (mBundle) {
|
||||
return mBundle.getString(key.name);
|
||||
}
|
||||
}
|
||||
|
||||
/* package */ GeckoBundle asBundle() {
|
||||
return mBundle;
|
||||
}
|
||||
|
||||
private <T> boolean valueChangedLocked(final Key<T> key, T value) {
|
||||
if (key.initOnly && mSession != null && mSession.isOpen()) {
|
||||
throw new IllegalStateException("Read-only property");
|
||||
} else if (key.values != null && !key.values.contains(value)) {
|
||||
throw new IllegalArgumentException("Invalid value");
|
||||
}
|
||||
|
||||
final Object old = mBundle.get(key.name);
|
||||
return (old != value) && (old == null || !old.equals(value));
|
||||
}
|
||||
|
||||
private void dispatchUpdate() {
|
||||
if (mSession != null) {
|
||||
mSession.getEventDispatcher().dispatch("GeckoView:UpdateSettings", null);
|
||||
}
|
||||
}
|
||||
|
||||
@Override // Parcelable
|
||||
public int describeContents() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override // Parcelable
|
||||
public void writeToParcel(Parcel out, int flags) {
|
||||
mBundle.writeToParcel(out, flags);
|
||||
}
|
||||
|
||||
// AIDL code may call readFromParcel even though it's not part of Parcelable.
|
||||
public void readFromParcel(final Parcel source) {
|
||||
mBundle.readFromParcel(source);
|
||||
}
|
||||
|
||||
public static final Parcelable.Creator<GeckoSessionSettings> CREATOR
|
||||
= new Parcelable.Creator<GeckoSessionSettings>() {
|
||||
@Override
|
||||
public GeckoSessionSettings createFromParcel(final Parcel in) {
|
||||
final GeckoSessionSettings settings = new GeckoSessionSettings();
|
||||
settings.readFromParcel(in);
|
||||
return settings;
|
||||
}
|
||||
|
||||
@Override
|
||||
public GeckoSessionSettings[] newArray(final int size) {
|
||||
return new GeckoSessionSettings[size];
|
||||
}
|
||||
};
|
||||
}
|
Разница между файлами не показана из-за своего большого размера
Загрузить разницу
|
@ -1,191 +0,0 @@
|
|||
/* -*- Mode: Java; c-basic-offset: 4; tab-width: 20; indent-tabs-mode: nil; -*-
|
||||
* vim: ts=4 sw=4 expandtab:
|
||||
* 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/. */
|
||||
|
||||
package org.mozilla.gecko;
|
||||
|
||||
import org.mozilla.gecko.util.GeckoBundle;
|
||||
|
||||
import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
||||
import android.util.Log;
|
||||
|
||||
public final class GeckoViewSettings implements Parcelable {
|
||||
private static final String LOGTAG = "GeckoViewSettings";
|
||||
private static final boolean DEBUG = false;
|
||||
|
||||
private static class Key<T> {
|
||||
private final String text;
|
||||
|
||||
public Key(final String text) {
|
||||
this.text = text;
|
||||
}
|
||||
}
|
||||
|
||||
public enum DisplayMode {
|
||||
// This needs to match nsIDocShell.idl
|
||||
BROWSER(0),
|
||||
MINIMAL_UI(1),
|
||||
STANDALONE(2),
|
||||
FULLSCREEN(3);
|
||||
|
||||
private final int mMode;
|
||||
|
||||
DisplayMode(int mode) {
|
||||
mMode = mode;
|
||||
}
|
||||
|
||||
public int value() {
|
||||
return mMode;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Key to enabled and disable tracking protection.
|
||||
*/
|
||||
public static final Key<Boolean> USE_TRACKING_PROTECTION =
|
||||
new Key<Boolean>("useTrackingProtection");
|
||||
/*
|
||||
* Key to enabled and disable private mode browsing.
|
||||
*/
|
||||
public static final Key<Boolean> USE_PRIVATE_MODE =
|
||||
new Key<Boolean>("usePrivateMode");
|
||||
|
||||
/*
|
||||
* Key to enabled and disable multiprocess browsing (e10s).
|
||||
* Note: can only be set during GeckoView initialization, changes during an
|
||||
* active GeckoView session will be ignored.
|
||||
*/
|
||||
public static final Key<Boolean> USE_MULTIPROCESS =
|
||||
new Key<Boolean>("useMultiprocess");
|
||||
|
||||
/*
|
||||
* Key to specify which display-mode we should use
|
||||
*/
|
||||
public static final Key<Integer> DISPLAY_MODE =
|
||||
new Key<Integer>("displayMode");
|
||||
|
||||
public static final Key<Boolean> USE_REMOTE_DEBUGGER =
|
||||
new Key<Boolean>("useRemoteDebugger");
|
||||
|
||||
public static final Key<String> DEBUGGER_SOCKET_DIR =
|
||||
new Key<String>("debuggerSocketDir");
|
||||
|
||||
private final EventDispatcher mEventDispatcher;
|
||||
private final GeckoBundle mBundle;
|
||||
|
||||
public GeckoViewSettings() {
|
||||
this(null);
|
||||
}
|
||||
|
||||
/* package */ GeckoViewSettings(EventDispatcher eventDispatcher) {
|
||||
mEventDispatcher = eventDispatcher;
|
||||
mBundle = new GeckoBundle();
|
||||
|
||||
setBoolean(USE_TRACKING_PROTECTION, false);
|
||||
setBoolean(USE_PRIVATE_MODE, false);
|
||||
setBoolean(USE_MULTIPROCESS, true);
|
||||
setInt(DISPLAY_MODE, DisplayMode.BROWSER.value());
|
||||
setBoolean(USE_REMOTE_DEBUGGER, false);
|
||||
// Set in GeckoView.init().
|
||||
setString(DEBUGGER_SOCKET_DIR, "");
|
||||
}
|
||||
|
||||
/* package */ GeckoViewSettings(GeckoViewSettings settings, EventDispatcher eventDispatcher) {
|
||||
mBundle = new GeckoBundle(settings.mBundle);
|
||||
mEventDispatcher = eventDispatcher;
|
||||
}
|
||||
|
||||
public void setBoolean(final Key<Boolean> key, boolean value) {
|
||||
synchronized (mBundle) {
|
||||
final Object old = mBundle.get(key.text);
|
||||
if (old != null && old.equals(value)) {
|
||||
return;
|
||||
}
|
||||
mBundle.putBoolean(key.text, value);
|
||||
}
|
||||
dispatchUpdate();
|
||||
}
|
||||
|
||||
public boolean getBoolean(final Key<Boolean> key) {
|
||||
synchronized (mBundle) {
|
||||
return mBundle.getBoolean(key.text);
|
||||
}
|
||||
}
|
||||
|
||||
public void setInt(final Key<Integer> key, int value) {
|
||||
synchronized (mBundle) {
|
||||
final Object old = mBundle.get(key.text);
|
||||
if (old != null && old.equals(value)) {
|
||||
return;
|
||||
}
|
||||
mBundle.putInt(key.text, value);
|
||||
}
|
||||
dispatchUpdate();
|
||||
}
|
||||
|
||||
public int getInt(final Key<Integer> key) {
|
||||
synchronized (mBundle) {
|
||||
return mBundle.getInt(key.text);
|
||||
}
|
||||
}
|
||||
|
||||
public void setString(final Key<String> key, final String value) {
|
||||
synchronized (mBundle) {
|
||||
final Object old = mBundle.get(key.text);
|
||||
if (old != null && old.equals(value)) {
|
||||
return;
|
||||
}
|
||||
mBundle.putString(key.text, value);
|
||||
}
|
||||
dispatchUpdate();
|
||||
}
|
||||
|
||||
public String getString(final Key<String> key) {
|
||||
synchronized (mBundle) {
|
||||
return mBundle.getString(key.text);
|
||||
}
|
||||
}
|
||||
|
||||
/* package */ GeckoBundle asBundle() {
|
||||
return mBundle;
|
||||
}
|
||||
|
||||
private void dispatchUpdate() {
|
||||
if (mEventDispatcher != null) {
|
||||
mEventDispatcher.dispatch("GeckoView:UpdateSettings", null);
|
||||
}
|
||||
}
|
||||
|
||||
@Override // Parcelable
|
||||
public int describeContents() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override // Parcelable
|
||||
public void writeToParcel(Parcel out, int flags) {
|
||||
mBundle.writeToParcel(out, flags);
|
||||
}
|
||||
|
||||
// AIDL code may call readFromParcel even though it's not part of Parcelable.
|
||||
public void readFromParcel(final Parcel source) {
|
||||
mBundle.readFromParcel(source);
|
||||
}
|
||||
|
||||
public static final Parcelable.Creator<GeckoViewSettings> CREATOR
|
||||
= new Parcelable.Creator<GeckoViewSettings>() {
|
||||
@Override
|
||||
public GeckoViewSettings createFromParcel(final Parcel in) {
|
||||
final GeckoViewSettings settings = new GeckoViewSettings();
|
||||
settings.readFromParcel(in);
|
||||
return settings;
|
||||
}
|
||||
|
||||
@Override
|
||||
public GeckoViewSettings[] newArray(final int size) {
|
||||
return new GeckoViewSettings[size];
|
||||
}
|
||||
};
|
||||
}
|
|
@ -48,24 +48,19 @@ import java.util.Calendar;
|
|||
import java.util.Date;
|
||||
import java.util.Locale;
|
||||
|
||||
import org.mozilla.gecko.GeckoView;
|
||||
import org.mozilla.gecko.GeckoSession;
|
||||
import org.mozilla.gecko.util.GeckoBundle;
|
||||
|
||||
final class BasicGeckoViewPrompt implements GeckoView.PromptDelegate {
|
||||
final class BasicGeckoViewPrompt implements GeckoSession.PromptDelegate {
|
||||
protected static final String LOGTAG = "BasicGeckoViewPrompt";
|
||||
|
||||
private final Activity mActivity;
|
||||
public int filePickerRequestCode = 1;
|
||||
private int mFileType;
|
||||
private FileCallback mFileCallback;
|
||||
|
||||
private static Activity getActivity(final GeckoView view) {
|
||||
if (view != null) {
|
||||
final Context context = view.getContext();
|
||||
if (context instanceof Activity) {
|
||||
return (Activity) context;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
public BasicGeckoViewPrompt(final Activity activity) {
|
||||
mActivity = activity;
|
||||
}
|
||||
|
||||
private AlertDialog.Builder addCheckbox(final AlertDialog.Builder builder,
|
||||
|
@ -97,9 +92,9 @@ final class BasicGeckoViewPrompt implements GeckoView.PromptDelegate {
|
|||
return builder;
|
||||
}
|
||||
|
||||
public void alert(final GeckoView view, final String title, final String msg,
|
||||
public void alert(final GeckoSession session, final String title, final String msg,
|
||||
final AlertCallback callback) {
|
||||
final Activity activity = getActivity(view);
|
||||
final Activity activity = mActivity;
|
||||
if (activity == null) {
|
||||
callback.dismiss();
|
||||
return;
|
||||
|
@ -112,10 +107,10 @@ final class BasicGeckoViewPrompt implements GeckoView.PromptDelegate {
|
|||
callback).show();
|
||||
}
|
||||
|
||||
public void promptForButton(final GeckoView view, final String title, final String msg,
|
||||
final String[] btnMsg, final ButtonCallback callback)
|
||||
{
|
||||
final Activity activity = getActivity(view);
|
||||
public void promptForButton(final GeckoSession session, final String title,
|
||||
final String msg, final String[] btnMsg,
|
||||
final ButtonCallback callback) {
|
||||
final Activity activity = mActivity;
|
||||
if (activity == null) {
|
||||
callback.dismiss();
|
||||
return;
|
||||
|
@ -187,10 +182,10 @@ final class BasicGeckoViewPrompt implements GeckoView.PromptDelegate {
|
|||
return dialog;
|
||||
}
|
||||
|
||||
public void promptForText(final GeckoView view, final String title, final String msg,
|
||||
final String value, final TextCallback callback)
|
||||
{
|
||||
final Activity activity = getActivity(view);
|
||||
public void promptForText(final GeckoSession session, final String title,
|
||||
final String msg, final String value,
|
||||
final TextCallback callback) {
|
||||
final Activity activity = mActivity;
|
||||
if (activity == null) {
|
||||
callback.dismiss();
|
||||
return;
|
||||
|
@ -213,10 +208,10 @@ final class BasicGeckoViewPrompt implements GeckoView.PromptDelegate {
|
|||
createStandardDialog(addCheckbox(builder, container, callback), callback).show();
|
||||
}
|
||||
|
||||
public void promptForAuth(final GeckoView view, final String title, final String msg,
|
||||
final GeckoBundle options, final AuthCallback callback)
|
||||
{
|
||||
final Activity activity = getActivity(view);
|
||||
public void promptForAuth(final GeckoSession session, final String title,
|
||||
final String msg, final GeckoBundle options,
|
||||
final AuthCallback callback) {
|
||||
final Activity activity = mActivity;
|
||||
if (activity == null) {
|
||||
callback.dismiss();
|
||||
return;
|
||||
|
@ -291,11 +286,10 @@ final class BasicGeckoViewPrompt implements GeckoView.PromptDelegate {
|
|||
}
|
||||
}
|
||||
|
||||
public void promptForChoice(final GeckoView view, final String title, final String msg,
|
||||
final int type, final GeckoBundle[] choices,
|
||||
final ChoiceCallback callback)
|
||||
{
|
||||
final Activity activity = getActivity(view);
|
||||
public void promptForChoice(final GeckoSession session, final String title,
|
||||
final String msg, final int type,
|
||||
final GeckoBundle[] choices, final ChoiceCallback callback) {
|
||||
final Activity activity = mActivity;
|
||||
if (activity == null) {
|
||||
callback.dismiss();
|
||||
return;
|
||||
|
@ -423,7 +417,7 @@ final class BasicGeckoViewPrompt implements GeckoView.PromptDelegate {
|
|||
// Show sub-menu.
|
||||
dialog.setOnDismissListener(null);
|
||||
dialog.dismiss();
|
||||
promptForChoice(view, item.getString("label"), /* msg */ null,
|
||||
promptForChoice(session, item.getString("label"), /* msg */ null,
|
||||
type, children, callback);
|
||||
return;
|
||||
}
|
||||
|
@ -473,10 +467,10 @@ final class BasicGeckoViewPrompt implements GeckoView.PromptDelegate {
|
|||
}
|
||||
}
|
||||
|
||||
public void promptForColor(final GeckoView view, final String title,
|
||||
public void promptForColor(final GeckoSession session, final String title,
|
||||
final String value, final TextCallback callback)
|
||||
{
|
||||
final Activity activity = getActivity(view);
|
||||
final Activity activity = mActivity;
|
||||
if (activity == null) {
|
||||
callback.dismiss();
|
||||
return;
|
||||
|
@ -581,11 +575,10 @@ final class BasicGeckoViewPrompt implements GeckoView.PromptDelegate {
|
|||
}
|
||||
}
|
||||
|
||||
public void promptForDateTime(final GeckoView view, final String title, final int type,
|
||||
final String value, final String min, final String max,
|
||||
final TextCallback callback)
|
||||
{
|
||||
final Activity activity = getActivity(view);
|
||||
public void promptForDateTime(final GeckoSession session, final String title,
|
||||
final int type, final String value, final String min,
|
||||
final String max, final TextCallback callback) {
|
||||
final Activity activity = mActivity;
|
||||
if (activity == null) {
|
||||
callback.dismiss();
|
||||
return;
|
||||
|
@ -698,10 +691,10 @@ final class BasicGeckoViewPrompt implements GeckoView.PromptDelegate {
|
|||
}
|
||||
|
||||
@TargetApi(19)
|
||||
public void promptForFile(GeckoView view, String title, int type,
|
||||
public void promptForFile(GeckoSession session, String title, int type,
|
||||
String[] mimeTypes, FileCallback callback)
|
||||
{
|
||||
final Activity activity = getActivity(view);
|
||||
final Activity activity = mActivity;
|
||||
if (activity == null) {
|
||||
callback.dismiss();
|
||||
return;
|
||||
|
@ -753,8 +746,7 @@ final class BasicGeckoViewPrompt implements GeckoView.PromptDelegate {
|
|||
}
|
||||
}
|
||||
|
||||
public void onFileCallbackResult(final Context context, final int resultCode,
|
||||
final Intent data) {
|
||||
public void onFileCallbackResult(final int resultCode, final Intent data) {
|
||||
if (mFileCallback == null) {
|
||||
return;
|
||||
}
|
||||
|
@ -772,7 +764,7 @@ final class BasicGeckoViewPrompt implements GeckoView.PromptDelegate {
|
|||
|
||||
if (mFileType == FILE_TYPE_SINGLE ||
|
||||
(mFileType == FILE_TYPE_MULTIPLE && clip == null)) {
|
||||
callback.confirm(context, uri);
|
||||
callback.confirm(mActivity, uri);
|
||||
|
||||
} else if (mFileType == FILE_TYPE_MULTIPLE) {
|
||||
if (clip == null) {
|
||||
|
@ -785,13 +777,13 @@ final class BasicGeckoViewPrompt implements GeckoView.PromptDelegate {
|
|||
for (int i = 0; i < count; i++) {
|
||||
uris.add(clip.getItemAt(i).getUri());
|
||||
}
|
||||
callback.confirm(context, uris.toArray(new Uri[uris.size()]));
|
||||
callback.confirm(mActivity, uris.toArray(new Uri[uris.size()]));
|
||||
}
|
||||
}
|
||||
|
||||
public void promptForPermission(final GeckoView view, final String title,
|
||||
final GeckoView.PermissionDelegate.Callback callback) {
|
||||
final Activity activity = getActivity(view);
|
||||
public void promptForPermission(final GeckoSession session, final String title,
|
||||
final GeckoSession.PermissionDelegate.Callback callback) {
|
||||
final Activity activity = mActivity;
|
||||
if (activity == null) {
|
||||
callback.reject();
|
||||
return;
|
||||
|
@ -850,10 +842,10 @@ final class BasicGeckoViewPrompt implements GeckoView.PromptDelegate {
|
|||
return spinner;
|
||||
}
|
||||
|
||||
public void promptForMedia(final GeckoView view, final String title,
|
||||
public void promptForMedia(final GeckoSession session, final String title,
|
||||
final GeckoBundle[] video, final GeckoBundle[] audio,
|
||||
final GeckoView.PermissionDelegate.MediaCallback callback) {
|
||||
final Activity activity = getActivity(view);
|
||||
final GeckoSession.PermissionDelegate.MediaCallback callback) {
|
||||
final Activity activity = mActivity;
|
||||
if (activity == null || (video == null && audio == null)) {
|
||||
callback.reject();
|
||||
return;
|
||||
|
|
|
@ -18,8 +18,9 @@ import android.view.WindowManager;
|
|||
|
||||
import java.util.Locale;
|
||||
|
||||
import org.mozilla.gecko.GeckoSession;
|
||||
import org.mozilla.gecko.GeckoSessionSettings;
|
||||
import org.mozilla.gecko.GeckoView;
|
||||
import org.mozilla.gecko.GeckoViewSettings;
|
||||
import org.mozilla.gecko.util.GeckoBundle;
|
||||
|
||||
public class GeckoViewActivity extends Activity {
|
||||
|
@ -31,6 +32,7 @@ public class GeckoViewActivity extends Activity {
|
|||
/* package */ static final int REQUEST_FILE_PICKER = 1;
|
||||
private static final int REQUEST_PERMISSIONS = 2;
|
||||
|
||||
private GeckoSession mGeckoSession;
|
||||
private GeckoView mGeckoView;
|
||||
|
||||
@Override
|
||||
|
@ -57,24 +59,27 @@ public class GeckoViewActivity extends Activity {
|
|||
|
||||
final boolean useMultiprocess = getIntent().getBooleanExtra(USE_MULTIPROCESS_EXTRA,
|
||||
true);
|
||||
GeckoView.preload(this, geckoArgs, useMultiprocess);
|
||||
GeckoSession.preload(this, geckoArgs, useMultiprocess);
|
||||
|
||||
setContentView(R.layout.geckoview_activity);
|
||||
|
||||
mGeckoView = (GeckoView) findViewById(R.id.gecko_view);
|
||||
mGeckoView.setContentListener(new MyGeckoViewContent());
|
||||
mGeckoView.setProgressListener(new MyGeckoViewProgress());
|
||||
mGeckoView.setNavigationListener(new Navigation());
|
||||
mGeckoSession = new GeckoSession();
|
||||
mGeckoView.setSession(mGeckoSession);
|
||||
|
||||
final BasicGeckoViewPrompt prompt = new BasicGeckoViewPrompt();
|
||||
mGeckoSession.setContentListener(new MyGeckoViewContent());
|
||||
mGeckoSession.setProgressListener(new MyGeckoViewProgress());
|
||||
mGeckoSession.setNavigationListener(new Navigation());
|
||||
|
||||
final BasicGeckoViewPrompt prompt = new BasicGeckoViewPrompt(this);
|
||||
prompt.filePickerRequestCode = REQUEST_FILE_PICKER;
|
||||
mGeckoView.setPromptDelegate(prompt);
|
||||
mGeckoSession.setPromptDelegate(prompt);
|
||||
|
||||
final MyGeckoViewPermission permission = new MyGeckoViewPermission();
|
||||
permission.androidPermissionRequestCode = REQUEST_PERMISSIONS;
|
||||
mGeckoView.setPermissionDelegate(permission);
|
||||
mGeckoSession.setPermissionDelegate(permission);
|
||||
|
||||
mGeckoView.getSettings().setBoolean(GeckoViewSettings.USE_MULTIPROCESS,
|
||||
mGeckoView.getSettings().setBoolean(GeckoSessionSettings.USE_MULTIPROCESS,
|
||||
useMultiprocess);
|
||||
loadSettings(getIntent());
|
||||
loadFromIntent(getIntent());
|
||||
|
@ -93,12 +98,12 @@ public class GeckoViewActivity extends Activity {
|
|||
|
||||
private void loadFromIntent(final Intent intent) {
|
||||
final Uri uri = intent.getData();
|
||||
mGeckoView.loadUri(uri != null ? uri.toString() : DEFAULT_URL);
|
||||
mGeckoSession.loadUri(uri != null ? uri.toString() : DEFAULT_URL);
|
||||
}
|
||||
|
||||
private void loadSettings(final Intent intent) {
|
||||
mGeckoView.getSettings().setBoolean(
|
||||
GeckoViewSettings.USE_REMOTE_DEBUGGER,
|
||||
GeckoSessionSettings.USE_REMOTE_DEBUGGER,
|
||||
intent.getBooleanExtra(USE_REMOTE_DEBUGGER_EXTRA, false));
|
||||
}
|
||||
|
||||
|
@ -107,8 +112,8 @@ public class GeckoViewActivity extends Activity {
|
|||
final Intent data) {
|
||||
if (requestCode == REQUEST_FILE_PICKER) {
|
||||
final BasicGeckoViewPrompt prompt = (BasicGeckoViewPrompt)
|
||||
mGeckoView.getPromptDelegate();
|
||||
prompt.onFileCallbackResult(this, resultCode, data);
|
||||
mGeckoSession.getPromptDelegate();
|
||||
prompt.onFileCallbackResult(resultCode, data);
|
||||
} else {
|
||||
super.onActivityResult(requestCode, resultCode, data);
|
||||
}
|
||||
|
@ -120,21 +125,21 @@ public class GeckoViewActivity extends Activity {
|
|||
final int[] grantResults) {
|
||||
if (requestCode == REQUEST_PERMISSIONS) {
|
||||
final MyGeckoViewPermission permission = (MyGeckoViewPermission)
|
||||
mGeckoView.getPermissionDelegate();
|
||||
mGeckoSession.getPermissionDelegate();
|
||||
permission.onRequestPermissionsResult(permissions, grantResults);
|
||||
} else {
|
||||
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
|
||||
}
|
||||
}
|
||||
|
||||
private class MyGeckoViewContent implements GeckoView.ContentListener {
|
||||
private class MyGeckoViewContent implements GeckoSession.ContentListener {
|
||||
@Override
|
||||
public void onTitleChange(GeckoView view, String title) {
|
||||
public void onTitleChange(GeckoSession session, String title) {
|
||||
Log.i(LOGTAG, "Content title changed to " + title);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFullScreen(final GeckoView view, final boolean fullScreen) {
|
||||
public void onFullScreen(final GeckoSession session, final boolean fullScreen) {
|
||||
getWindow().setFlags(fullScreen ? WindowManager.LayoutParams.FLAG_FULLSCREEN : 0,
|
||||
WindowManager.LayoutParams.FLAG_FULLSCREEN);
|
||||
if (fullScreen) {
|
||||
|
@ -145,7 +150,7 @@ public class GeckoViewActivity extends Activity {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void onContextMenu(GeckoView view, int screenX, int screenY,
|
||||
public void onContextMenu(GeckoSession session, int screenX, int screenY,
|
||||
String uri, String elementSrc) {
|
||||
Log.d(LOGTAG, "onContextMenu screenX=" + screenX +
|
||||
" screenY=" + screenY + " uri=" + uri +
|
||||
|
@ -153,28 +158,28 @@ public class GeckoViewActivity extends Activity {
|
|||
}
|
||||
}
|
||||
|
||||
private class MyGeckoViewProgress implements GeckoView.ProgressListener {
|
||||
private class MyGeckoViewProgress implements GeckoSession.ProgressListener {
|
||||
@Override
|
||||
public void onPageStart(GeckoView view, String url) {
|
||||
public void onPageStart(GeckoSession session, String url) {
|
||||
Log.i(LOGTAG, "Starting to load page at " + url);
|
||||
Log.i(LOGTAG, "zerdatime " + SystemClock.elapsedRealtime() +
|
||||
" - page load start");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPageStop(GeckoView view, boolean success) {
|
||||
public void onPageStop(GeckoSession session, boolean success) {
|
||||
Log.i(LOGTAG, "Stopping page load " + (success ? "successfully" : "unsuccessfully"));
|
||||
Log.i(LOGTAG, "zerdatime " + SystemClock.elapsedRealtime() +
|
||||
" - page load stop");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSecurityChange(GeckoView view, SecurityInformation securityInfo) {
|
||||
public void onSecurityChange(GeckoSession session, SecurityInformation securityInfo) {
|
||||
Log.i(LOGTAG, "Security status changed to " + securityInfo.securityMode);
|
||||
}
|
||||
}
|
||||
|
||||
private class MyGeckoViewPermission implements GeckoView.PermissionDelegate {
|
||||
private class MyGeckoViewPermission implements GeckoSession.PermissionDelegate {
|
||||
|
||||
public int androidPermissionRequestCode = 1;
|
||||
private Callback mCallback;
|
||||
|
@ -198,7 +203,7 @@ public class GeckoViewActivity extends Activity {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void requestAndroidPermissions(final GeckoView view, final String[] permissions,
|
||||
public void requestAndroidPermissions(final GeckoSession session, final String[] permissions,
|
||||
final Callback callback) {
|
||||
if (Build.VERSION.SDK_INT < 23) {
|
||||
// requestPermissions was introduced in API 23.
|
||||
|
@ -210,7 +215,7 @@ public class GeckoViewActivity extends Activity {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void requestContentPermission(final GeckoView view, final String uri,
|
||||
public void requestContentPermission(final GeckoSession session, final String uri,
|
||||
final String type, final String access,
|
||||
final Callback callback) {
|
||||
final int resId;
|
||||
|
@ -226,8 +231,8 @@ public class GeckoViewActivity extends Activity {
|
|||
|
||||
final String title = getString(resId, Uri.parse(uri).getAuthority());
|
||||
final BasicGeckoViewPrompt prompt = (BasicGeckoViewPrompt)
|
||||
mGeckoView.getPromptDelegate();
|
||||
prompt.promptForPermission(view, title, callback);
|
||||
mGeckoSession.getPromptDelegate();
|
||||
prompt.promptForPermission(session, title, callback);
|
||||
}
|
||||
|
||||
private void normalizeMediaName(final GeckoBundle[] sources) {
|
||||
|
@ -255,7 +260,7 @@ public class GeckoViewActivity extends Activity {
|
|||
}
|
||||
|
||||
@Override
|
||||
public void requestMediaPermission(final GeckoView view, final String uri,
|
||||
public void requestMediaPermission(final GeckoSession session, final String uri,
|
||||
final GeckoBundle[] video,
|
||||
final GeckoBundle[] audio,
|
||||
final MediaCallback callback) {
|
||||
|
@ -273,33 +278,33 @@ public class GeckoViewActivity extends Activity {
|
|||
normalizeMediaName(audio);
|
||||
|
||||
final BasicGeckoViewPrompt prompt = (BasicGeckoViewPrompt)
|
||||
mGeckoView.getPromptDelegate();
|
||||
prompt.promptForMedia(view, title, video, audio, callback);
|
||||
mGeckoSession.getPromptDelegate();
|
||||
prompt.promptForMedia(session, title, video, audio, callback);
|
||||
}
|
||||
}
|
||||
|
||||
private class Navigation implements GeckoView.NavigationListener {
|
||||
private class Navigation implements GeckoSession.NavigationListener {
|
||||
@Override
|
||||
public void onLocationChange(GeckoView view, final String url) {
|
||||
public void onLocationChange(GeckoSession session, final String url) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCanGoBack(GeckoView view, boolean canGoBack) {
|
||||
public void onCanGoBack(GeckoSession session, boolean canGoBack) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCanGoForward(GeckoView view, boolean value) {
|
||||
public void onCanGoForward(GeckoSession session, boolean value) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onLoadUri(final GeckoView view, final String uri,
|
||||
public boolean onLoadUri(final GeckoSession session, final String uri,
|
||||
final TargetWindow where) {
|
||||
Log.d(LOGTAG, "onLoadUri=" + uri +
|
||||
" where=" + where);
|
||||
if (where != TargetWindow.NEW) {
|
||||
return false;
|
||||
}
|
||||
view.loadUri(uri);
|
||||
session.loadUri(uri);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -56,7 +56,7 @@ class GeckoViewRemoteDebugger extends GeckoViewModule {
|
|||
let windowId = this.window.QueryInterface(Ci.nsIInterfaceRequestor)
|
||||
.getInterface(Ci.nsIDOMWindowUtils)
|
||||
.outerWindowID;
|
||||
let portOrPath = this.settings.debuggerSocketDir +
|
||||
let portOrPath = (this.settings.debuggerSocketDir || this.settings.dataDir) +
|
||||
"/firefox-debugger-socket-" +
|
||||
windowId;
|
||||
this._usbDebugger.start(portOrPath);
|
||||
|
|
|
@ -216,6 +216,12 @@ def _repack(app_finder, l10n_finder, copier, formatter, non_chrome=set()):
|
|||
if not formatter.contains(p):
|
||||
formatter.add(p, f)
|
||||
|
||||
# Resources in `localization` directories are packaged from the source and then
|
||||
# if localized versions are present in the l10n dir, we package them as well
|
||||
# keeping the source dir resources as a runtime fallback.
|
||||
for p, f in l10n_finder.find('**/localization'):
|
||||
formatter.add(p, f)
|
||||
|
||||
# Transplant jar preloading information.
|
||||
for path, log in app_finder.jarlogs.iteritems():
|
||||
assert isinstance(copier[path], Jarrer)
|
||||
|
|
|
@ -36,3 +36,4 @@ Servo.app
|
|||
.vscode
|
||||
|
||||
/unminified-js
|
||||
|
||||
|
|
|
@ -3476,7 +3476,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "webrender"
|
||||
version = "0.53.1"
|
||||
source = "git+https://github.com/servo/webrender#058dd77d35d938974d16dcf12e2f75a0a6e4cdef"
|
||||
source = "git+https://github.com/servo/webrender#71c1f3dca3173a977610e5f7a818deb155cc8cf4"
|
||||
dependencies = [
|
||||
"app_units 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"bincode 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
|
@ -3503,7 +3503,7 @@ dependencies = [
|
|||
[[package]]
|
||||
name = "webrender_api"
|
||||
version = "0.53.1"
|
||||
source = "git+https://github.com/servo/webrender#058dd77d35d938974d16dcf12e2f75a0a6e4cdef"
|
||||
source = "git+https://github.com/servo/webrender#71c1f3dca3173a977610e5f7a818deb155cc8cf4"
|
||||
dependencies = [
|
||||
"app_units 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"bincode 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
|
|
|
@ -549,6 +549,7 @@ impl WebRenderDisplayItemConverter for DisplayItem {
|
|||
sticky_data.margins,
|
||||
sticky_data.vertical_offset_bounds,
|
||||
sticky_data.horizontal_offset_bounds,
|
||||
webrender_api::LayoutVector2D::zero(),
|
||||
);
|
||||
builder.pop_clip_id();
|
||||
id
|
||||
|
|
|
@ -31,6 +31,7 @@ use dom::virtualmethods::VirtualMethods;
|
|||
use dom_struct::dom_struct;
|
||||
use html5ever::{LocalName, Prefix};
|
||||
use std::ascii::AsciiExt;
|
||||
use std::collections::HashSet;
|
||||
use std::default::Default;
|
||||
use std::rc::Rc;
|
||||
use style::attr::AttrValue;
|
||||
|
@ -277,6 +278,38 @@ impl HTMLElementMethods for HTMLElement {
|
|||
}
|
||||
}
|
||||
|
||||
// https://html.spec.whatwg.org/multipage/#attr-itemtype
|
||||
fn Itemtypes(&self) -> Option<Vec<DOMString>> {
|
||||
let atoms = self.element.get_tokenlist_attribute(&local_name!("itemtype"), );
|
||||
|
||||
if atoms.is_empty() {
|
||||
return None;
|
||||
}
|
||||
|
||||
let mut item_attr_values = HashSet::new();
|
||||
for attr_value in &atoms {
|
||||
item_attr_values.insert(DOMString::from(String::from(attr_value.trim())));
|
||||
}
|
||||
|
||||
Some(item_attr_values.into_iter().collect())
|
||||
}
|
||||
|
||||
// https://html.spec.whatwg.org/multipage/#names:-the-itemprop-attribute
|
||||
fn PropertyNames(&self) -> Option<Vec<DOMString>> {
|
||||
let atoms = self.element.get_tokenlist_attribute(&local_name!("itemprop"), );
|
||||
|
||||
if atoms.is_empty() {
|
||||
return None;
|
||||
}
|
||||
|
||||
let mut item_attr_values = HashSet::new();
|
||||
for attr_value in &atoms {
|
||||
item_attr_values.insert(DOMString::from(String::from(attr_value.trim())));
|
||||
}
|
||||
|
||||
Some(item_attr_values.into_iter().collect())
|
||||
}
|
||||
|
||||
// https://html.spec.whatwg.org/multipage/#dom-click
|
||||
fn Click(&self) {
|
||||
if !self.upcast::<Element>().disabled_state() {
|
||||
|
@ -577,4 +610,17 @@ impl VirtualMethods for HTMLElement {
|
|||
}
|
||||
self.update_sequentially_focusable_status();
|
||||
}
|
||||
|
||||
fn parse_plain_attribute(&self, name: &LocalName, value: DOMString) -> AttrValue {
|
||||
match name {
|
||||
&local_name!("itemprop") => AttrValue::from_serialized_tokenlist(value.into()),
|
||||
&local_name!("itemtype") => AttrValue::from_serialized_tokenlist(value.into()),
|
||||
_ => {
|
||||
self.super_type().unwrap().parse_plain_attribute(
|
||||
name,
|
||||
value,
|
||||
)
|
||||
},
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -18,9 +18,14 @@ interface HTMLElement : Element {
|
|||
|
||||
// microdata
|
||||
// attribute boolean itemScope;
|
||||
|
||||
// attribute DOMString itemId;
|
||||
//readonly attribute HTMLPropertiesCollection properties;
|
||||
// attribute any itemValue; // acts as DOMString on setting
|
||||
[Pref="dom.microdata.testing.enabled"]
|
||||
sequence<DOMString>? propertyNames();
|
||||
[Pref="dom.microdata.testing.enabled"]
|
||||
sequence<DOMString>? itemtypes();
|
||||
|
||||
// user interaction
|
||||
[CEReactions]
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
"dom.customelements.enabled": true,
|
||||
"dom.forcetouch.enabled": false,
|
||||
"dom.gamepad.enabled": false,
|
||||
"dom.microdata.testing.enabled": true,
|
||||
"dom.mouseevent.which.enabled": false,
|
||||
"dom.mozbrowser.enabled": false,
|
||||
"dom.mutation_observer.enabled": false,
|
||||
|
|
|
@ -78,3 +78,6 @@ try:
|
|||
- 'sm-msan'
|
||||
- 'sm-fuzzing'
|
||||
- 'sm-rust-bindings'
|
||||
'win32':
|
||||
- 'sm-plain'
|
||||
- 'sm-compacting'
|
||||
|
|
|
@ -116,7 +116,11 @@ qr-talos:
|
|||
- talos-tp5o
|
||||
- talos-perf-reftest
|
||||
- talos-perf-reftest-singletons
|
||||
- talos-tp6
|
||||
- talos-tp6-stylo-threads
|
||||
- talos-speedometer
|
||||
- talos-h1
|
||||
- talos-h2
|
||||
|
||||
qr-tests:
|
||||
- cppunit
|
||||
|
|
|
@ -97,7 +97,7 @@ function run_analysis () {
|
|||
|
||||
(
|
||||
cd "$analysis_dir"
|
||||
$PYTHON "$ANALYSIS_SRCDIR/analyze.py" --buildcommand="$GECKO_DIR/testing/mozharness/scripts/spidermonkey/build.${build_type}"
|
||||
$PYTHON "$ANALYSIS_SRCDIR/analyze.py" --buildcommand="$GECKO_DIR/taskcluster/scripts/builder/hazard-${build_type}.sh"
|
||||
)
|
||||
}
|
||||
|
||||
|
|
|
@ -45,11 +45,11 @@ git checkout $SCCACHE_REVISION
|
|||
# story in https://bugzilla.mozilla.org/show_bug.cgi?id=1163171#c26.
|
||||
case "$(uname -s)" in
|
||||
Linux)
|
||||
OPENSSL_TARBALL=openssl-1.1.0f.tar.gz
|
||||
OPENSSL_TARBALL=openssl-1.1.0g.tar.gz
|
||||
|
||||
curl -O https://www.openssl.org/source/$OPENSSL_TARBALL
|
||||
cat >$OPENSSL_TARBALL.sha256sum <<EOF
|
||||
12f746f3f2493b2f39da7ecf63d7ee19c6ac9ec6a4fcd8c229da8a522cb12765 openssl-1.1.0f.tar.gz
|
||||
de4d501267da39310905cb6dc8c6121f7a2cad45a7707f76df828fe1b85073af openssl-1.1.0g.tar.gz
|
||||
EOF
|
||||
cat $OPENSSL_TARBALL.sha256sum
|
||||
sha256sum -c $OPENSSL_TARBALL.sha256sum
|
||||
|
|
|
@ -41,7 +41,7 @@ RELEASE_PROMOTION_CONFIG = {
|
|||
'do_not_optimize': [],
|
||||
},
|
||||
'promote_firefox': {
|
||||
'target_tasks_method': '%(project)s_desktop_promotion',
|
||||
'target_tasks_method': '{project}_desktop_promotion',
|
||||
'previous_graph_kinds': [
|
||||
'build', 'build-signing', 'repackage', 'repackage-signing',
|
||||
],
|
||||
|
@ -155,7 +155,8 @@ def release_promotion_action(parameters, input, task_group_id, task_id, task):
|
|||
promotion_config = RELEASE_PROMOTION_CONFIG[release_promotion_flavor]
|
||||
|
||||
target_tasks_method = input.get(
|
||||
'target_tasks_method', promotion_config['target_tasks_method']
|
||||
'target_tasks_method',
|
||||
promotion_config['target_tasks_method'].format(project=parameters['project'])
|
||||
)
|
||||
previous_graph_kinds = input.get(
|
||||
'previous_graph_kinds', promotion_config['previous_graph_kinds']
|
||||
|
|
|
@ -64,7 +64,9 @@ def create_tasks(taskgraph, label_to_taskid, params, decision_task_id=None):
|
|||
task_def['taskGroupId'] = task_group_id
|
||||
task_def['schedulerId'] = scheduler_id
|
||||
|
||||
with futures.ThreadPoolExecutor(CONCURRENCY) as e:
|
||||
# If `testing` is True, then run without parallelization
|
||||
concurrency = CONCURRENCY if not testing else 1
|
||||
with futures.ThreadPoolExecutor(concurrency) as e:
|
||||
fs = {}
|
||||
|
||||
# We can't submit a task until its dependencies have been submitted.
|
||||
|
@ -129,6 +131,8 @@ def create_task(session, task_id, label, task_def):
|
|||
if testing:
|
||||
json.dump([task_id, task_def], sys.stdout,
|
||||
sort_keys=True, indent=4, separators=(',', ': '))
|
||||
# add a newline
|
||||
print("")
|
||||
return
|
||||
|
||||
logger.debug("Creating task with taskId {} for {}".format(task_id, label))
|
||||
|
|
|
@ -359,7 +359,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||
|
||||
[[package]]
|
||||
name = "rand"
|
||||
version = "0.3.17"
|
||||
version = "0.3.18"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"fuchsia-zircon 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
|
@ -486,7 +486,7 @@ name = "tempdir"
|
|||
version = "0.3.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"rand 0.3.17 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"rand 0.3.18 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -592,7 +592,7 @@ name = "uuid"
|
|||
version = "0.1.18"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
dependencies = [
|
||||
"rand 0.3.17 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"rand 0.3.18 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
"rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)",
|
||||
]
|
||||
|
||||
|
@ -697,7 +697,7 @@ dependencies = [
|
|||
"checksum num_cpus 1.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "514f0d73e64be53ff320680ca671b64fe3fb91da01e1ae2ddc99eb51d453b20d"
|
||||
"checksum percent-encoding 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "de154f638187706bde41d9b4738748933d64e6b37bdbffc0b47a97d16a6ae356"
|
||||
"checksum podio 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e5422a1ee1bc57cc47ae717b0137314258138f38fd5f3cea083f43a9725383a0"
|
||||
"checksum rand 0.3.17 (registry+https://github.com/rust-lang/crates.io-index)" = "61efcbcd9fa8d8fbb07c84e34a8af18a1ff177b449689ad38a6e9457ecc7b2ae"
|
||||
"checksum rand 0.3.18 (registry+https://github.com/rust-lang/crates.io-index)" = "6475140dfd8655aeb72e1fd4b7a1cc1c202be65d71669476e392fe62532b9edd"
|
||||
"checksum redox_syscall 0.1.31 (registry+https://github.com/rust-lang/crates.io-index)" = "8dde11f18c108289bef24469638a04dce49da56084f2d50618b226e47eb04509"
|
||||
"checksum regex 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1731164734096285ec2a5ec7fea5248ae2f5485b3feeb0115af4fda2183b2d1b"
|
||||
"checksum regex-syntax 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ad890a5eef7953f55427c50575c680c42841653abd2b028b68cd223d157f62db"
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
config = {
|
||||
'build_command': "build.browser",
|
||||
'expect_file': "expect.browser.json",
|
||||
}
|
|
@ -1,4 +0,0 @@
|
|||
config = {
|
||||
'build_command': "build.shell",
|
||||
'expect_file': "expect.shell.json",
|
||||
}
|
|
@ -1,103 +0,0 @@
|
|||
import os
|
||||
|
||||
HG_SHARE_BASE_DIR = "/builds/hg-shared"
|
||||
|
||||
PYTHON_DIR = "/tools/python27"
|
||||
SRCDIR = "source"
|
||||
|
||||
config = {
|
||||
"platform": "linux64",
|
||||
"build_type": "br-haz",
|
||||
"log_name": "hazards",
|
||||
"shell-objdir": "obj-opt-js",
|
||||
"analysis-dir": "analysis",
|
||||
"analysis-objdir": "obj-analyzed",
|
||||
"srcdir": SRCDIR,
|
||||
"analysis-scriptdir": "js/src/devtools/rootAnalysis",
|
||||
|
||||
# These paths are relative to the tooltool checkout location
|
||||
"sixgill": "sixgill/usr/libexec/sixgill",
|
||||
"sixgill_bin": "sixgill/usr/bin",
|
||||
|
||||
"python": "python",
|
||||
|
||||
"exes": {
|
||||
'gittool.py': '%(abs_tools_dir)s/buildfarm/utils/gittool.py',
|
||||
'tooltool.py': '/tools/tooltool.py',
|
||||
"virtualenv": "/tools/virtualenv/bin/virtualenv",
|
||||
},
|
||||
|
||||
"force_clobber": True,
|
||||
'vcs_share_base': HG_SHARE_BASE_DIR,
|
||||
|
||||
"repos": [{
|
||||
"repo": "https://hg.mozilla.org/build/tools",
|
||||
"branch": "default",
|
||||
"dest": "tools"
|
||||
}],
|
||||
|
||||
"upload_remote_baseuri": 'https://ftp-ssl.mozilla.org/',
|
||||
"default_blob_upload_servers": [
|
||||
"https://blobupload.elasticbeanstalk.com",
|
||||
],
|
||||
"blob_uploader_auth_file": os.path.join(os.getcwd(), "oauth.txt"),
|
||||
|
||||
"virtualenv_path": '%s/venv' % os.getcwd(),
|
||||
'tools_dir': "/tools",
|
||||
'compiler_manifest': "build/gcc.manifest",
|
||||
'sixgill_manifest': "build/sixgill.manifest",
|
||||
|
||||
# Mock.
|
||||
"mock_packages": [
|
||||
"autoconf213", "mozilla-python27-mercurial", "ccache",
|
||||
"zip", "zlib-devel", "glibc-static",
|
||||
"openssh-clients", "mpfr", "wget", "rsync",
|
||||
|
||||
# For building the JS shell
|
||||
"gmp-devel", "nspr", "nspr-devel",
|
||||
|
||||
# For building the browser
|
||||
"dbus-devel", "dbus-glib-devel", "hal-devel",
|
||||
"libICE-devel", "libIDL-devel",
|
||||
|
||||
# For mach resource-usage
|
||||
"python-psutil",
|
||||
|
||||
'zip', 'git',
|
||||
'libstdc++-static', 'perl-Test-Simple', 'perl-Config-General',
|
||||
'gtk2-devel', 'libnotify-devel', 'yasm',
|
||||
'alsa-lib-devel', 'libcurl-devel',
|
||||
'wireless-tools-devel', 'libX11-devel',
|
||||
'libXt-devel', 'mesa-libGL-devel',
|
||||
'gnome-vfs2-devel', 'GConf2-devel', 'wget',
|
||||
'mpfr', # required for system compiler
|
||||
'xorg-x11-font*', # fonts required for PGO
|
||||
'imake', # required for makedepend!?!
|
||||
'pulseaudio-libs-devel',
|
||||
'freetype-2.3.11-6.el6_1.8.x86_64',
|
||||
'freetype-devel-2.3.11-6.el6_1.8.x86_64',
|
||||
'gstreamer-devel', 'gstreamer-plugins-base-devel',
|
||||
],
|
||||
"mock_files": [
|
||||
("/home/cltbld/.ssh", "/home/mock_mozilla/.ssh"),
|
||||
('/home/cltbld/.hgrc', '/builds/.hgrc'),
|
||||
('/builds/relengapi.tok', '/builds/relengapi.tok'),
|
||||
("/tools/tooltool.py", "/tools/tooltool.py"),
|
||||
('/usr/local/lib/hgext', '/usr/local/lib/hgext'),
|
||||
],
|
||||
"env_replacements": {
|
||||
"pythondir": PYTHON_DIR,
|
||||
"gccdir": "%(abs_work_dir)s/gcc",
|
||||
"sixgilldir": "%(abs_work_dir)s/sixgill",
|
||||
},
|
||||
"partial_env": {
|
||||
"PATH": "%(pythondir)s/bin:%(gccdir)s/bin:%(PATH)s",
|
||||
"LD_LIBRARY_PATH": "%(sixgilldir)s/usr/lib64",
|
||||
|
||||
# Suppress the mercurial-setup check. When running in automation, this
|
||||
# is redundant with MOZ_AUTOMATION, but a local developer-mode build
|
||||
# will have the mach state directory set to a nonstandard location and
|
||||
# therefore will always claim that mercurial-setup has not been run.
|
||||
"I_PREFER_A_SUBOPTIMAL_MERCURIAL_EXPERIENCE": "1",
|
||||
},
|
||||
}
|
|
@ -1,38 +0,0 @@
|
|||
# This config file is for locally testing spidermonkey_build.py. It provides
|
||||
# the values that would otherwise be provided by buildbot.
|
||||
|
||||
BRANCH = "local-src"
|
||||
HOME = "/home/sfink"
|
||||
REPO = HOME + "/src/MI-GC"
|
||||
|
||||
config = {
|
||||
"hgurl": "https://hg.mozilla.org/",
|
||||
"python": "python",
|
||||
"sixgill": HOME + "/src/sixgill",
|
||||
"sixgill_bin": HOME + "/src/sixgill/bin",
|
||||
|
||||
"repo": REPO,
|
||||
"repos": [{
|
||||
"repo": REPO,
|
||||
"branch": "default",
|
||||
"dest": BRANCH,
|
||||
}, {
|
||||
"repo": "https://hg.mozilla.org/build/tools",
|
||||
"branch": "default",
|
||||
"dest": "tools"
|
||||
}],
|
||||
|
||||
"tools_dir": "/tools",
|
||||
|
||||
"mock_target": "mozilla-centos6-x86_64",
|
||||
|
||||
"upload_remote_basepath": "/tmp/upload-base",
|
||||
"upload_ssh_server": "localhost",
|
||||
"upload_ssh_key": "/home/sfink/.ssh/id_rsa",
|
||||
"upload_ssh_user": "sfink",
|
||||
"upload_label": "linux64-br-haz",
|
||||
|
||||
# For testing tryserver uploads (directory structure is different)
|
||||
#"branch": "try",
|
||||
#"revision": "deadbeef1234",
|
||||
}
|
|
@ -13,6 +13,5 @@ scripts
|
|||
mobile_l10n.rst
|
||||
mobile_partner_repack.rst
|
||||
multil10n.rst
|
||||
spidermonkey_build.rst
|
||||
talos_script.rst
|
||||
web_platform_tests.rst
|
||||
|
|
|
@ -1,7 +0,0 @@
|
|||
spidermonkey_build module
|
||||
=========================
|
||||
|
||||
.. automodule:: spidermonkey_build
|
||||
:members:
|
||||
:undoc-members:
|
||||
:show-inheritance:
|
|
@ -1,241 +0,0 @@
|
|||
import os
|
||||
import json
|
||||
import re
|
||||
|
||||
from mozharness.base.errors import MakefileErrorList
|
||||
from mozharness.mozilla.buildbot import TBPL_WARNING
|
||||
|
||||
|
||||
class HazardError(Exception):
|
||||
def __init__(self, value):
|
||||
self.value = value
|
||||
|
||||
def __str__(self):
|
||||
return repr(self.value)
|
||||
|
||||
# Logging ends up calling splitlines directly on what is being logged, which would fail.
|
||||
def splitlines(self):
|
||||
return str(self).splitlines()
|
||||
|
||||
class HazardAnalysis(object):
|
||||
def clobber_shell(self, builder):
|
||||
"""Clobber the specially-built JS shell used to run the analysis"""
|
||||
dirs = builder.query_abs_dirs()
|
||||
builder.rmtree(dirs['shell_objdir'])
|
||||
|
||||
def configure_shell(self, builder):
|
||||
"""Configure the specially-built JS shell used to run the analysis"""
|
||||
dirs = builder.query_abs_dirs()
|
||||
|
||||
if not os.path.exists(dirs['shell_objdir']):
|
||||
builder.mkdir_p(dirs['shell_objdir'])
|
||||
|
||||
js_src_dir = os.path.join(dirs['gecko_src'], 'js', 'src')
|
||||
rc = builder.run_command(['autoconf-2.13'],
|
||||
cwd=js_src_dir,
|
||||
env=builder.env,
|
||||
error_list=MakefileErrorList)
|
||||
if rc != 0:
|
||||
rc = builder.run_command(['autoconf2.13'],
|
||||
cwd=js_src_dir,
|
||||
env=builder.env,
|
||||
error_list=MakefileErrorList)
|
||||
if rc != 0:
|
||||
raise HazardError("autoconf failed, can't continue.")
|
||||
|
||||
rc = builder.run_command([os.path.join(js_src_dir, 'configure'),
|
||||
'--enable-optimize',
|
||||
'--disable-debug',
|
||||
'--enable-ctypes',
|
||||
'--with-system-nspr',
|
||||
'--without-intl-api'],
|
||||
cwd=dirs['shell_objdir'],
|
||||
env=builder.env,
|
||||
error_list=MakefileErrorList)
|
||||
if rc != 0:
|
||||
raise HazardError("Configure failed, can't continue.")
|
||||
|
||||
def build_shell(self, builder):
|
||||
"""Build a JS shell specifically for running the analysis"""
|
||||
dirs = builder.query_abs_dirs()
|
||||
|
||||
rc = builder.run_command(['make', '-j', str(builder.config.get('concurrency', 4)), '-s'],
|
||||
cwd=dirs['shell_objdir'],
|
||||
env=builder.env,
|
||||
error_list=MakefileErrorList)
|
||||
if rc != 0:
|
||||
raise HazardError("Build failed, can't continue.")
|
||||
|
||||
def clobber(self, builder):
|
||||
"""Clobber all of the old analysis data. Note that theoretically we could do
|
||||
incremental analyses, but they seem to still be buggy."""
|
||||
dirs = builder.query_abs_dirs()
|
||||
builder.rmtree(dirs['abs_analysis_dir'])
|
||||
builder.rmtree(dirs['abs_analyzed_objdir'])
|
||||
|
||||
def setup(self, builder):
|
||||
"""Prepare the config files and scripts for running the analysis"""
|
||||
dirs = builder.query_abs_dirs()
|
||||
analysis_dir = dirs['abs_analysis_dir']
|
||||
|
||||
if not os.path.exists(analysis_dir):
|
||||
builder.mkdir_p(analysis_dir)
|
||||
|
||||
js_src_dir = os.path.join(dirs['gecko_src'], 'js', 'src')
|
||||
|
||||
values = {
|
||||
'js': os.path.join(dirs['shell_objdir'], 'dist', 'bin', 'js'),
|
||||
'analysis_scriptdir': os.path.join(js_src_dir, 'devtools', 'rootAnalysis'),
|
||||
'source_objdir': dirs['abs_analyzed_objdir'],
|
||||
'source': os.path.join(dirs['abs_work_dir'], 'source'),
|
||||
'sixgill': os.path.join(dirs['abs_work_dir'], builder.config['sixgill']),
|
||||
'sixgill_bin': os.path.join(dirs['abs_work_dir'], builder.config['sixgill_bin']),
|
||||
'gcc_bin': os.path.join(dirs['abs_work_dir'], 'gcc'),
|
||||
}
|
||||
defaults = """
|
||||
js = '%(js)s'
|
||||
analysis_scriptdir = '%(analysis_scriptdir)s'
|
||||
objdir = '%(source_objdir)s'
|
||||
source = '%(source)s'
|
||||
sixgill = '%(sixgill)s'
|
||||
sixgill_bin = '%(sixgill_bin)s'
|
||||
gcc_bin = '%(gcc_bin)s'
|
||||
jobs = 4
|
||||
""" % values
|
||||
|
||||
defaults_path = os.path.join(analysis_dir, 'defaults.py')
|
||||
file(defaults_path, "w").write(defaults)
|
||||
builder.log("Wrote analysis config file " + defaults_path)
|
||||
|
||||
build_script = builder.config['build_command']
|
||||
builder.copyfile(os.path.join(dirs['mozharness_scriptdir'],
|
||||
os.path.join('spidermonkey', build_script)),
|
||||
os.path.join(analysis_dir, build_script),
|
||||
copystat=True)
|
||||
|
||||
def run(self, builder, env, error_list):
|
||||
"""Execute the analysis, which consists of building all analyzed
|
||||
source code with a GCC plugin active that siphons off the interesting
|
||||
data, then running some JS scripts over the databases created by
|
||||
the plugin."""
|
||||
dirs = builder.query_abs_dirs()
|
||||
analysis_dir = dirs['abs_analysis_dir']
|
||||
analysis_scriptdir = os.path.join(dirs['abs_work_dir'], dirs['analysis_scriptdir'])
|
||||
|
||||
build_script = builder.config['build_command']
|
||||
build_script = os.path.abspath(os.path.join(analysis_dir, build_script))
|
||||
|
||||
cmd = [
|
||||
builder.config['python'],
|
||||
os.path.join(analysis_scriptdir, 'analyze.py'),
|
||||
"--source", dirs['gecko_src'],
|
||||
"--buildcommand", build_script,
|
||||
]
|
||||
retval = builder.run_command(cmd,
|
||||
cwd=analysis_dir,
|
||||
env=env,
|
||||
error_list=error_list)
|
||||
if retval != 0:
|
||||
raise HazardError("failed to build")
|
||||
|
||||
def collect_output(self, builder):
|
||||
"""Gather up the analysis output and place in the upload dir."""
|
||||
dirs = builder.query_abs_dirs()
|
||||
analysis_dir = dirs['abs_analysis_dir']
|
||||
upload_dir = dirs['abs_blob_upload_dir']
|
||||
builder.mkdir_p(upload_dir)
|
||||
files = (('rootingHazards.txt',
|
||||
'rooting_hazards',
|
||||
'list of rooting hazards, unsafe references, and extra roots'),
|
||||
('gcFunctions.txt',
|
||||
'gcFunctions',
|
||||
'list of functions that can gc, and why'),
|
||||
('allFunctions.txt',
|
||||
'allFunctions',
|
||||
'list of all functions that were compiled'),
|
||||
('gcTypes.txt',
|
||||
'gcTypes',
|
||||
'list of types containing unrooted gc pointers'),
|
||||
('unnecessary.txt',
|
||||
'extra',
|
||||
'list of extra roots (rooting with no GC function in scope)'),
|
||||
('refs.txt',
|
||||
'refs',
|
||||
'list of unsafe references to unrooted pointers'),
|
||||
('hazards.txt',
|
||||
'hazards',
|
||||
'list of just the hazards, together with gcFunction reason for each'))
|
||||
for f, short, long in files:
|
||||
builder.copy_to_upload_dir(os.path.join(analysis_dir, f),
|
||||
short_desc=short,
|
||||
long_desc=long,
|
||||
compress=False, # blobber will compress
|
||||
upload_dir=upload_dir)
|
||||
print("== Hazards (temporarily inline here, beware weirdly interleaved output, see bug 1211402) ==")
|
||||
print(file(os.path.join(analysis_dir, "hazards.txt")).read())
|
||||
|
||||
def upload_results(self, builder):
|
||||
"""Upload the results of the analysis."""
|
||||
pass
|
||||
|
||||
def check_expectations(self, builder):
|
||||
"""Compare the actual to expected number of problems."""
|
||||
if 'expect_file' not in builder.config:
|
||||
builder.info('No expect_file given; skipping comparison with expected hazard count')
|
||||
return
|
||||
|
||||
dirs = builder.query_abs_dirs()
|
||||
analysis_dir = dirs['abs_analysis_dir']
|
||||
analysis_scriptdir = os.path.join(dirs['gecko_src'], 'js', 'src', 'devtools', 'rootAnalysis')
|
||||
expect_file = os.path.join(analysis_scriptdir, builder.config['expect_file'])
|
||||
expect = builder.read_from_file(expect_file)
|
||||
if expect is None:
|
||||
raise HazardError("could not load expectation file")
|
||||
data = json.loads(expect)
|
||||
|
||||
num_hazards = 0
|
||||
num_refs = 0
|
||||
with builder.opened(os.path.join(analysis_dir, "rootingHazards.txt")) as (hazards_fh, err):
|
||||
if err:
|
||||
raise HazardError("hazards file required")
|
||||
for line in hazards_fh:
|
||||
m = re.match(r"^Function.*has unrooted.*live across GC call", line)
|
||||
if m:
|
||||
num_hazards += 1
|
||||
|
||||
m = re.match(r'^Function.*takes unsafe address of unrooted', line)
|
||||
if m:
|
||||
num_refs += 1
|
||||
|
||||
expect_hazards = data.get('expect-hazards')
|
||||
status = []
|
||||
if expect_hazards is None:
|
||||
status.append("%d hazards" % num_hazards)
|
||||
else:
|
||||
status.append("%d/%d hazards allowed" % (num_hazards, expect_hazards))
|
||||
|
||||
if expect_hazards is not None and expect_hazards != num_hazards:
|
||||
if expect_hazards < num_hazards:
|
||||
builder.warning("TEST-UNEXPECTED-FAIL %d more hazards than expected (expected %d, saw %d)" %
|
||||
(num_hazards - expect_hazards, expect_hazards, num_hazards))
|
||||
builder.buildbot_status(TBPL_WARNING)
|
||||
else:
|
||||
builder.info("%d fewer hazards than expected! (expected %d, saw %d)" %
|
||||
(expect_hazards - num_hazards, expect_hazards, num_hazards))
|
||||
|
||||
expect_refs = data.get('expect-refs')
|
||||
if expect_refs is None:
|
||||
status.append("%d unsafe refs" % num_refs)
|
||||
else:
|
||||
status.append("%d/%d unsafe refs allowed" % (num_refs, expect_refs))
|
||||
|
||||
if expect_refs is not None and expect_refs != num_refs:
|
||||
if expect_refs < num_refs:
|
||||
builder.warning("TEST-UNEXPECTED-FAIL %d more unsafe refs than expected (expected %d, saw %d)" %
|
||||
(num_refs - expect_refs, expect_refs, num_refs))
|
||||
builder.buildbot_status(TBPL_WARNING)
|
||||
else:
|
||||
builder.info("%d fewer unsafe refs than expected! (expected %d, saw %d)" %
|
||||
(expect_refs - num_refs, expect_refs, num_refs))
|
||||
|
||||
builder.info("TinderboxPrint: " + ", ".join(status))
|
|
@ -1,485 +0,0 @@
|
|||
#!/usr/bin/env python
|
||||
# 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/.
|
||||
|
||||
import os
|
||||
import sys
|
||||
import copy
|
||||
from datetime import datetime
|
||||
from functools import wraps
|
||||
|
||||
sys.path.insert(1, os.path.dirname(sys.path[0]))
|
||||
|
||||
from mozharness.base.errors import MakefileErrorList
|
||||
from mozharness.base.script import BaseScript
|
||||
from mozharness.base.transfer import TransferMixin
|
||||
from mozharness.base.vcs.vcsbase import VCSMixin
|
||||
from mozharness.mozilla.blob_upload import BlobUploadMixin, blobupload_config_options
|
||||
from mozharness.mozilla.buildbot import BuildbotMixin
|
||||
from mozharness.mozilla.building.hazards import HazardError, HazardAnalysis
|
||||
from mozharness.mozilla.purge import PurgeMixin
|
||||
from mozharness.mozilla.mock import MockMixin
|
||||
from mozharness.mozilla.tooltool import TooltoolMixin
|
||||
|
||||
SUCCESS, WARNINGS, FAILURE, EXCEPTION, RETRY = xrange(5)
|
||||
|
||||
|
||||
def requires(*queries):
|
||||
"""Wrapper for detecting problems where some bit of information
|
||||
required by the wrapped step is unavailable. Use it put prepending
|
||||
@requires("foo"), which will check whether self.query_foo() returns
|
||||
something useful."""
|
||||
def make_wrapper(f):
|
||||
@wraps(f)
|
||||
def wrapper(self, *args, **kwargs):
|
||||
for query in queries:
|
||||
val = query(self)
|
||||
goodval = not (val is None or "None" in str(val))
|
||||
assert goodval, f.__name__ + " requires " + query.__name__ + " to return a value"
|
||||
return f(self, *args, **kwargs)
|
||||
return wrapper
|
||||
return make_wrapper
|
||||
|
||||
|
||||
nuisance_env_vars = ['TERMCAP', 'LS_COLORS', 'PWD', '_']
|
||||
|
||||
|
||||
class SpidermonkeyBuild(MockMixin,
|
||||
PurgeMixin, BaseScript,
|
||||
VCSMixin, BuildbotMixin, TooltoolMixin, TransferMixin, BlobUploadMixin):
|
||||
config_options = [
|
||||
[["--repo"], {
|
||||
"dest": "repo",
|
||||
"help": "which gecko repo to get spidermonkey from",
|
||||
}],
|
||||
[["--source"], {
|
||||
"dest": "source",
|
||||
"help": "directory containing gecko source tree (instead of --repo)",
|
||||
}],
|
||||
[["--revision"], {
|
||||
"dest": "revision",
|
||||
}],
|
||||
[["--branch"], {
|
||||
"dest": "branch",
|
||||
}],
|
||||
[["--vcs-share-base"], {
|
||||
"dest": "vcs_share_base",
|
||||
"help": "base directory for shared repositories",
|
||||
}],
|
||||
[["-j"], {
|
||||
"dest": "concurrency",
|
||||
"type": int,
|
||||
"default": 4,
|
||||
"help": "number of simultaneous jobs used while building the shell " +
|
||||
"(currently ignored for the analyzed build",
|
||||
}] + copy.deepcopy(blobupload_config_options)
|
||||
]
|
||||
|
||||
def __init__(self):
|
||||
super(SpidermonkeyBuild, self).__init__(
|
||||
config_options=self.config_options,
|
||||
# other stuff
|
||||
all_actions=[
|
||||
'purge',
|
||||
'checkout-tools',
|
||||
|
||||
# First, build an optimized JS shell for running the analysis
|
||||
'checkout-source',
|
||||
'get-blobs',
|
||||
'clobber-shell',
|
||||
'configure-shell',
|
||||
'build-shell',
|
||||
|
||||
# Next, build a tree with the analysis plugin active. Note that
|
||||
# we are using the same checkout for the JS shell build and the
|
||||
# build of the source to be analyzed, which is a little
|
||||
# unnecessary (no need to rebuild the JS shell all the time).
|
||||
# (Different objdir, though.)
|
||||
|
||||
'clobber-analysis',
|
||||
'setup-analysis',
|
||||
'run-analysis',
|
||||
'collect-analysis-output',
|
||||
'upload-analysis',
|
||||
'check-expectations',
|
||||
],
|
||||
default_actions=[
|
||||
'purge',
|
||||
'checkout-tools',
|
||||
'checkout-source',
|
||||
'get-blobs',
|
||||
'clobber-shell',
|
||||
'configure-shell',
|
||||
'build-shell',
|
||||
'clobber-analysis',
|
||||
'setup-analysis',
|
||||
'run-analysis',
|
||||
'collect-analysis-output',
|
||||
# Temporarily disabled, see bug 1211402
|
||||
# 'upload-analysis',
|
||||
'check-expectations',
|
||||
],
|
||||
config={
|
||||
'default_vcs': 'hg',
|
||||
'vcs_share_base': os.environ.get('HG_SHARE_BASE_DIR'),
|
||||
'ccache': True,
|
||||
'buildbot_json_path': os.environ.get('PROPERTIES_FILE'),
|
||||
'tools_repo': 'https://hg.mozilla.org/build/tools',
|
||||
|
||||
'upload_ssh_server': None,
|
||||
'upload_remote_basepath': None,
|
||||
'enable_try_uploads': True,
|
||||
'source': None,
|
||||
'stage_product': 'firefox',
|
||||
},
|
||||
)
|
||||
|
||||
self.buildid = None
|
||||
self.create_virtualenv()
|
||||
self.analysis = HazardAnalysis()
|
||||
|
||||
def _pre_config_lock(self, rw_config):
|
||||
if self.config['source']:
|
||||
self.config['srcdir'] = self.config['source']
|
||||
super(SpidermonkeyBuild, self)._pre_config_lock(rw_config)
|
||||
|
||||
if self.buildbot_config is None:
|
||||
self.info("Reading buildbot build properties...")
|
||||
self.read_buildbot_config()
|
||||
|
||||
if self.buildbot_config:
|
||||
bb_props = [('mock_target', 'mock_target', None),
|
||||
('hgurl', 'hgurl', None),
|
||||
('clobberer_url', 'clobberer_url',
|
||||
'https://api.pub.build.mozilla.org/clobberer/lastclobber'),
|
||||
('force_clobber', 'force_clobber', None),
|
||||
('branch', 'blob_upload_branch', None),
|
||||
]
|
||||
buildbot_props = self.buildbot_config.get('properties', {})
|
||||
for bb_prop, cfg_prop, default in bb_props:
|
||||
if not self.config.get(cfg_prop) and buildbot_props.get(bb_prop, default):
|
||||
self.config[cfg_prop] = buildbot_props.get(bb_prop, default)
|
||||
self.config['is_automation'] = True
|
||||
else:
|
||||
self.config['is_automation'] = False
|
||||
self.config.setdefault('blob_upload_branch', 'devel')
|
||||
|
||||
dirs = self.query_abs_dirs()
|
||||
replacements = self.config['env_replacements'].copy()
|
||||
for k, v in replacements.items():
|
||||
replacements[k] = v % dirs
|
||||
|
||||
self.env = self.query_env(replace_dict=replacements,
|
||||
partial_env=self.config['partial_env'],
|
||||
purge_env=nuisance_env_vars)
|
||||
self.env['MOZ_UPLOAD_DIR'] = dirs['abs_blob_upload_dir']
|
||||
self.env['TOOLTOOL_DIR'] = dirs['abs_work_dir']
|
||||
|
||||
def query_abs_dirs(self):
|
||||
if self.abs_dirs:
|
||||
return self.abs_dirs
|
||||
abs_dirs = BaseScript.query_abs_dirs(self)
|
||||
|
||||
abs_work_dir = abs_dirs['abs_work_dir']
|
||||
dirs = {
|
||||
'shell_objdir':
|
||||
os.path.join(abs_work_dir, self.config['shell-objdir']),
|
||||
'mozharness_scriptdir':
|
||||
os.path.abspath(os.path.dirname(__file__)),
|
||||
'abs_analysis_dir':
|
||||
os.path.join(abs_work_dir, self.config['analysis-dir']),
|
||||
'abs_analyzed_objdir':
|
||||
os.path.join(abs_work_dir, self.config['srcdir'], self.config['analysis-objdir']),
|
||||
'analysis_scriptdir':
|
||||
os.path.join(self.config['srcdir'], self.config['analysis-scriptdir']),
|
||||
'abs_tools_dir':
|
||||
os.path.join(abs_dirs['base_work_dir'], 'tools'),
|
||||
'gecko_src':
|
||||
os.path.join(abs_work_dir, self.config['srcdir']),
|
||||
'abs_blob_upload_dir':
|
||||
os.path.join(abs_work_dir, 'blobber_upload_dir'),
|
||||
}
|
||||
|
||||
abs_dirs.update(dirs)
|
||||
self.abs_dirs = abs_dirs
|
||||
|
||||
return self.abs_dirs
|
||||
|
||||
def query_repo(self):
|
||||
if self.config.get('repo'):
|
||||
return self.config['repo']
|
||||
elif self.buildbot_config and 'properties' in self.buildbot_config:
|
||||
return self.config['hgurl'] + self.buildbot_config['properties']['repo_path']
|
||||
else:
|
||||
return None
|
||||
|
||||
def query_revision(self):
|
||||
if 'revision' in self.buildbot_properties:
|
||||
revision = self.buildbot_properties['revision']
|
||||
elif self.buildbot_config and 'sourcestamp' in self.buildbot_config:
|
||||
revision = self.buildbot_config['sourcestamp']['revision']
|
||||
else:
|
||||
# Useful for local testing. In actual use, this would always be
|
||||
# None.
|
||||
revision = self.config.get('revision')
|
||||
|
||||
return revision
|
||||
|
||||
def query_branch(self):
|
||||
if self.buildbot_config and 'properties' in self.buildbot_config:
|
||||
return self.buildbot_config['properties']['branch']
|
||||
elif 'branch' in self.config:
|
||||
# Used for locally testing try vs non-try
|
||||
return self.config['branch']
|
||||
else:
|
||||
return os.path.basename(self.query_repo())
|
||||
|
||||
def query_compiler_manifest(self):
|
||||
dirs = self.query_abs_dirs()
|
||||
manifest = os.path.join(dirs['abs_work_dir'], dirs['analysis_scriptdir'],
|
||||
self.config['compiler_manifest'])
|
||||
if os.path.exists(manifest):
|
||||
return manifest
|
||||
return os.path.join(dirs['abs_work_dir'], self.config['compiler_manifest'])
|
||||
|
||||
def query_sixgill_manifest(self):
|
||||
dirs = self.query_abs_dirs()
|
||||
manifest = os.path.join(dirs['abs_work_dir'], dirs['analysis_scriptdir'],
|
||||
self.config['sixgill_manifest'])
|
||||
if os.path.exists(manifest):
|
||||
return manifest
|
||||
return os.path.join(dirs['abs_work_dir'], self.config['sixgill_manifest'])
|
||||
|
||||
def query_buildid(self):
|
||||
if self.buildid:
|
||||
return self.buildid
|
||||
if self.buildbot_config and 'properties' in self.buildbot_config:
|
||||
self.buildid = self.buildbot_config['properties'].get('buildid')
|
||||
if not self.buildid:
|
||||
self.buildid = datetime.now().strftime("%Y%m%d%H%M%S")
|
||||
return self.buildid
|
||||
|
||||
def query_upload_ssh_server(self):
|
||||
if self.buildbot_config and 'properties' in self.buildbot_config:
|
||||
return self.buildbot_config['properties']['upload_ssh_server']
|
||||
else:
|
||||
return self.config['upload_ssh_server']
|
||||
|
||||
def query_upload_ssh_key(self):
|
||||
if self.buildbot_config and 'properties' in self.buildbot_config:
|
||||
key = self.buildbot_config['properties']['upload_ssh_key']
|
||||
else:
|
||||
key = self.config['upload_ssh_key']
|
||||
if self.mock_enabled and not key.startswith("/"):
|
||||
key = "/home/mock_mozilla/.ssh/" + key
|
||||
return key
|
||||
|
||||
def query_upload_ssh_user(self):
|
||||
if self.buildbot_config and 'properties' in self.buildbot_config:
|
||||
return self.buildbot_config['properties']['upload_ssh_user']
|
||||
else:
|
||||
return self.config['upload_ssh_user']
|
||||
|
||||
def query_product(self):
|
||||
if self.buildbot_config and 'properties' in self.buildbot_config:
|
||||
return self.buildbot_config['properties']['product']
|
||||
else:
|
||||
return self.config['product']
|
||||
|
||||
def query_upload_remote_basepath(self):
|
||||
if self.config.get('upload_remote_basepath'):
|
||||
return self.config['upload_remote_basepath']
|
||||
else:
|
||||
return "/pub/mozilla.org/{product}".format(
|
||||
product=self.query_product(),
|
||||
)
|
||||
|
||||
def query_upload_remote_baseuri(self):
|
||||
baseuri = self.config.get('upload_remote_baseuri')
|
||||
if self.buildbot_config and 'properties' in self.buildbot_config:
|
||||
buildprops = self.buildbot_config['properties']
|
||||
if 'upload_remote_baseuri' in buildprops:
|
||||
baseuri = buildprops['upload_remote_baseuri']
|
||||
return baseuri.strip("/") if baseuri else None
|
||||
|
||||
def query_target(self):
|
||||
if self.buildbot_config and 'properties' in self.buildbot_config:
|
||||
return self.buildbot_config['properties']['platform']
|
||||
else:
|
||||
return self.config.get('target')
|
||||
|
||||
def query_upload_path(self):
|
||||
branch = self.query_branch()
|
||||
|
||||
common = {
|
||||
'basepath': self.query_upload_remote_basepath(),
|
||||
'branch': branch,
|
||||
'target': self.query_target(),
|
||||
}
|
||||
|
||||
if branch == 'try':
|
||||
if not self.config['enable_try_uploads']:
|
||||
return None
|
||||
try:
|
||||
user = self.buildbot_config['sourcestamp']['changes'][0]['who']
|
||||
except (KeyError, TypeError):
|
||||
user = "unknown"
|
||||
return "{basepath}/try-builds/{user}-{rev}/{branch}-{target}".format(
|
||||
user=user,
|
||||
rev=self.query_revision(),
|
||||
**common
|
||||
)
|
||||
else:
|
||||
return "{basepath}/tinderbox-builds/{branch}-{target}/{buildid}".format(
|
||||
buildid=self.query_buildid(),
|
||||
**common
|
||||
)
|
||||
|
||||
def query_do_upload(self):
|
||||
if self.query_branch() == 'try':
|
||||
return self.config.get('enable_try_uploads')
|
||||
return True
|
||||
|
||||
# Actions {{{2
|
||||
def purge(self):
|
||||
dirs = self.query_abs_dirs()
|
||||
self.info("purging, abs_upload_dir=" + dirs['abs_upload_dir'])
|
||||
PurgeMixin.clobber(
|
||||
self,
|
||||
always_clobber_dirs=[
|
||||
dirs['abs_upload_dir'],
|
||||
],
|
||||
)
|
||||
|
||||
def checkout_tools(self):
|
||||
dirs = self.query_abs_dirs()
|
||||
|
||||
# If running from within a directory also passed as the --source dir,
|
||||
# this has the danger of clobbering <source>/tools/
|
||||
if self.config['source']:
|
||||
srcdir = self.config['source']
|
||||
if os.path.samefile(srcdir, os.path.dirname(dirs['abs_tools_dir'])):
|
||||
raise Exception("Cannot run from source checkout to avoid overwriting subdirs")
|
||||
|
||||
rev = self.vcs_checkout(
|
||||
vcs='hg',
|
||||
branch="default",
|
||||
repo=self.config['tools_repo'],
|
||||
clean=False,
|
||||
dest=dirs['abs_tools_dir'],
|
||||
)
|
||||
self.set_buildbot_property("tools_revision", rev, write_to_file=True)
|
||||
|
||||
def do_checkout_source(self):
|
||||
# --source option means to use an existing source directory instead of checking one out.
|
||||
if self.config['source']:
|
||||
return
|
||||
|
||||
dirs = self.query_abs_dirs()
|
||||
dest = dirs['gecko_src']
|
||||
|
||||
# Pre-create the directory to appease the share extension
|
||||
if not os.path.exists(dest):
|
||||
self.mkdir_p(dest)
|
||||
|
||||
rev = self.vcs_checkout(
|
||||
repo=self.query_repo(),
|
||||
dest=dest,
|
||||
revision=self.query_revision(),
|
||||
branch=self.config.get('branch'),
|
||||
clean=True,
|
||||
)
|
||||
self.set_buildbot_property('source_revision', rev, write_to_file=True)
|
||||
|
||||
def checkout_source(self):
|
||||
try:
|
||||
self.do_checkout_source()
|
||||
except Exception as e:
|
||||
self.fatal("checkout failed: " + str(e), exit_code=RETRY)
|
||||
|
||||
def get_blobs(self):
|
||||
work_dir = self.query_abs_dirs()['abs_work_dir']
|
||||
if not os.path.exists(work_dir):
|
||||
self.mkdir_p(work_dir)
|
||||
self.tooltool_fetch(self.query_compiler_manifest(), output_dir=work_dir)
|
||||
self.tooltool_fetch(self.query_sixgill_manifest(), output_dir=work_dir)
|
||||
|
||||
def clobber_shell(self):
|
||||
self.analysis.clobber_shell(self)
|
||||
|
||||
def configure_shell(self):
|
||||
self.enable_mock()
|
||||
|
||||
try:
|
||||
self.analysis.configure_shell(self)
|
||||
except HazardError as e:
|
||||
self.fatal(e, exit_code=FAILURE)
|
||||
|
||||
self.disable_mock()
|
||||
|
||||
def build_shell(self):
|
||||
self.enable_mock()
|
||||
|
||||
try:
|
||||
self.analysis.build_shell(self)
|
||||
except HazardError as e:
|
||||
self.fatal(e, exit_code=FAILURE)
|
||||
|
||||
self.disable_mock()
|
||||
|
||||
def clobber_analysis(self):
|
||||
self.analysis.clobber(self)
|
||||
|
||||
def setup_analysis(self):
|
||||
self.analysis.setup(self)
|
||||
|
||||
def run_analysis(self):
|
||||
self.enable_mock()
|
||||
|
||||
upload_dir = self.query_abs_dirs()['abs_blob_upload_dir']
|
||||
if not os.path.exists(upload_dir):
|
||||
self.mkdir_p(upload_dir)
|
||||
|
||||
env = self.env.copy()
|
||||
env['MOZ_UPLOAD_DIR'] = upload_dir
|
||||
|
||||
try:
|
||||
self.analysis.run(self, env=env, error_list=MakefileErrorList)
|
||||
except HazardError as e:
|
||||
self.fatal(e, exit_code=FAILURE)
|
||||
|
||||
self.disable_mock()
|
||||
|
||||
def collect_analysis_output(self):
|
||||
self.analysis.collect_output(self)
|
||||
|
||||
def upload_analysis(self):
|
||||
if not self.config['is_automation']:
|
||||
return
|
||||
|
||||
if not self.query_do_upload():
|
||||
self.info("Uploads disabled for this build. Skipping...")
|
||||
return
|
||||
|
||||
self.enable_mock()
|
||||
|
||||
try:
|
||||
self.analysis.upload_results(self)
|
||||
except HazardError as e:
|
||||
self.error(e)
|
||||
self.return_code = WARNINGS
|
||||
|
||||
self.disable_mock()
|
||||
|
||||
def check_expectations(self):
|
||||
try:
|
||||
self.analysis.check_expectations(self)
|
||||
except HazardError as e:
|
||||
self.fatal(e, exit_code=FAILURE)
|
||||
|
||||
|
||||
# main {{{1
|
||||
if __name__ == '__main__':
|
||||
myScript = SpidermonkeyBuild()
|
||||
myScript.run_and_exit()
|
|
@ -76,7 +76,7 @@ function test_tone_change_events(testFunc, toneChanges, desc) {
|
|||
const now = Date.now();
|
||||
const duration = now - lastEventTime;
|
||||
|
||||
assert_approx_equals(duration, expectedDuration, 50,
|
||||
assert_approx_equals(duration, expectedDuration, 150,
|
||||
`Expect tonechange event for "${tone}" to be fired approximately after ${expectedDuration} seconds`);
|
||||
|
||||
lastEventTime = now;
|
||||
|
|
Некоторые файлы не были показаны из-за слишком большого количества измененных файлов Показать больше
Загрузка…
Ссылка в новой задаче