itworld
Thank you
Your message has been sent.
Sorry
There was an error emailing this page.
Cisco, Comcast, Yahoo and others formed the Streaming Video Alliance
By Stephen Lawson
November 17, 2014
‘);//–« ;
var adDivString = « »;
placementDiff = applyInsert($(this), adDivString);
if (debug) {
console.log(« Just placed an ad and the placementDiff is: » + placementDiff);
}
placementTarget = cumulativeHeight + placementDiff + interModuleHeight + adHeightBuffer;
}
else {
var moduleDivString = « »;
var elementId = « drr-mod-« +moduleCounter;
moduleDivString = « »;
modules.push(elementId);
placementDiff = applyInsert($(this), moduleDivString);
if (debug) {
console.log(« Just placed a module and the placementDiff is: » + placementDiff);
}
placementTarget = cumulativeHeight + placementDiff + interModuleHeight + moduleHeightBuffer;
moduleCounter++;
}
loopCounter++;
}
// Avoid placing elements too soon due to non-large figures inflating the cumulative height
if ($(this).is(« figure ») !$(this).is(« figure.large »)) {
cumulativeHeight += grafHeight;
}
else {
cumulativeHeight += $(this).height() + grafHeight;
}
}
});
// clone Related Stories module m-15 to come in after 2nd para in article body for mobile breakpoint display
var $relatedStories = $(‘.related-promo-wrapper’);
if ($relatedStories.length) {
var $relatedStoriesClone = $relatedStories.clone();
$relatedStoriesClone.insertAfter( « #drr-container p:eq(1) »);
}
var $insiderPromo = $(‘.insider-promo-wrapper’);
if ($insiderPromo.length) {
var $insiderPromoClone = $insiderPromo.clone();
$insiderPromoClone.insertAfter( « #drr-container p:eq(1) »);
}
//place left side element
cumulativeHeight = 0;
var leftPlacementTarget = tagHeight = leftPlacementTarget) {
if (debug) {
console.log(« congratulations… we’ve passed the initial start point »);
}
if (leftPlacementIndex == null) {
//it’s not good enough to not be a left avoid – it also shouldn’t be a
with an immediately preceding small or medium image left avoid.
if (!isLeftAvoid($(this)) noPrevFigures($(this)) ) {
leftPlacementIndex = $(this).index();
$leftPlacementElement = $(this);
leftPlacementLookaheadStart = cumulativeHeight;
if (debug) {
console.log(« is not a left avoid and no prev figures. ########## set placementIndex (« +leftPlacementIndex+ ») and lookaheadStart (« +leftPlacementLookaheadStart+ ») ########## »);
}
} else {
if (debug) {
console.log(« is a left avoid or has previous figures. continue »);
}
}
} else {
if (debug) {
console.log(« #### leftPlacementIndex already set to « +leftPlacementIndex+ ». looking ahead… »);
}
//not null; has been set
if ((cumulativeHeight – leftPlacementLookaheadStart) leftIntervalHeight) {
if (debug) {
console.log(« ###### THRESHOLD REACHED. LOOKAHEAD COMPLETE. END ###### (cumulativeHeight – leftPlacementLookaheadStart) (« +(cumulativeHeight-leftPlacementLookaheadStart)+ ») leftIntervalHeight (« +leftIntervalHeight+ »). »);
}
return false;
} else {
if (debug) {
console.log(« threshold not reached: (cumulativeHeight – leftPlacementLookaheadStart) (« +(cumulativeHeight-leftPlacementLookaheadStart)+ ») tags
if (!(isLeftAvoid($(this)) ($(this).hasClass(‘small’) || $(this).hasClass(‘inline-small’) || $(this).hasClass(‘medium’) || $(this).hasClass(‘inline-medium’) || $(this).hasClass(‘apart’) ))) {
cumulativeHeight += $(this).height() + grafHeight;
}
if (debug) {
console.log(« ——————– set cumulativeHeight(« +cumulativeHeight+ ») —————« );
console.log(« »);
}
}
});
}
if (leftPlacementIndex != null elementNotNearEnd($leftPlacementElement, leftPixelWindow)) {
if (debug) {
console.log( » insert into index « +leftPlacementIndex);
}
$(« #drr-container »).children().eq(leftPlacementIndex).before(«
« );
}
IDG.GPT.trackOmniture();
// Add Right rail module content
for (var i=0; i= 0) {
var a = document.createElement(‘a’);
a.href = document.referrer;
var uriParts = a.pathname.split(‘/’);
a = »;
if (typeof uriParts[3] == ‘undefined’) {
epoParams += « typeId= » + defaultTypeId + « referrer=home »; // default is ‘home’ behavior
}
else {
var refCatSlug = uriParts[3];
epoParams += « catSlug= » + refCatSlug + « referrer=article »;
}
}
// From SEARCH: Show article with catId same as current article
else if (document.referrer.indexOf(« google ») = 0 || document.referrer.indexOf(« yahoo ») = 0 || document.referrer.indexOf(« bing ») = 0) {
var categories = [3498];
if (categories instanceof Array categories.length 0) {
var primaryCatId = categories[0];
epoParams += « catId= » + primaryCatId + « referrer=search »;
}
else {
epoParams += « typeId= » + defaultTypeId + « referrer=home »; // default is ‘home’ behavior
}
}
// Default is to show like coming from homepage
else {
epoParams += « displayId=11referrer=home »;
// default is ‘home’ behavior
}
return epoParams;
}
/**
* @param jqo Original jquery object target
* @param divString The div to be inserted.
* @return Difference in height between original placement target and final target.
* Checks first 6 elements for an allowable placement (600 pixel window).
* If none, check nearby for elements that are not right avoids.
* If none, place element before current target.
*/
function applyInsert(jqo, divString) {
if (debug) {
console.log(« applyInsert at top and jqo index is: » + jqo.index());
}
for (var i=0; i 0) {
children = $(« #drr-container »).children().slice(jqo.index(), allowElement.index() );
}
else {
children = $(« #drr-container »).children().slice(allowElement.index(), jqo.index());
}
if (children != null) {
children.each(function(i) {
if (debug) {
console.log(« About to add this element’s height to heigh diff offset »);
console.log($(this));
}
height += $(this).height() + grafHeight;
});
}
if (offset 300) {
if (debug) {
console.log(« isRightAvoid: found pre. return true »);
}
return true;
}
if (jqo.is(« figure ») jqo.hasClass(‘large’)) {
if (debug) {
console.log(« isRightAvoid: found figure.large return true »);
}
return true;
}
if (jqo.is(« figure ») jqo.hasClass(‘medium’) jqo.hasClass(‘inline’)) {
if (debug) {
console.log(« isRightAvoid: found figure has class medium and inline. »);
}
return true;
}
if (jqo.is(‘div’) jqo.hasClass(‘table-wrapper’)) {
if (debug) {
console.log(« isRightAvoid: found div with class table-wrapper »);
}
return true;
}
if (jqo.is(‘aside’)) {
if (jqo.hasClass(‘sidebar’) !jqo.hasClass(‘medium’)) {
if (debug) {
console.log(« isRightAvoid: found aside with class sidebar, without class medium »);
}
return true;
}
if (jqo.hasClass(‘statsTable’)) {
if (debug) {
console.log(« isRightAvoid: found aside with class statsTable »);
}
return true;
}
}
if (jqo.hasClass(‘download-asset’)) {
if (debug) {
console.log(« isRightAvoid: found class download-asset return true »);
}
return true;
}
if (jqo.hasClass(‘tableLarge’)) {
if (debug) {
console.log(« isRightAvoid: found class tableLarge return true »);
}
return true;
}
if (jqo.hasClass(‘reject’)) {
if (debug) {
console.log(« isRightAvoid: found class reject. return true »);
}
return true;
}
if (jqo.is(‘table’) jqo.hasClass(‘scorecard’)) {
if (debug) {
console.log(« isRightAvoid: found div with class scorecard »);
}
return true;
}
}
return false;
}
// Return true if element has class ‘reject’: will not place drr modules/ads next to these elements
function isRightReject(jqo) {
console.log(« in isRightReject »);
if (jqo != null) {
if (jqo.hasClass(« reject »)) {
if (debug) {
console.log(« isRightReject: found ‘reject’ class »);
}
return true;
}
return false;
}
return false;
}
// Returns true if height of all elements after this one is more than 500; false otherwise
function elementNotNearEnd(element, pixelWindow) {
if (pixelWindow == null) {
pixelWindow = 500;
}
if (element == null) {
return false;
}
var remainingHeight = 0;
var children = $(« #drr-container »).children().slice(element.index());
if (children == null) {
return false;
}
children.each(function(i){
remainingHeight += $(this).height();
});
if ( remainingHeight pixelWindow) {
return true;
}
else {
if (debug) {
console.log(« Element too close to end. Remaining height is: » + remainingHeight + » and window is » + pixelWindow);
}
return false;
}
}
/**
* Return true if need to avoid this element when placing left module.
*/
function isLeftAvoid(jqo) {
if (jqo.is(« figure »)) {
if (debug) {
console.log(« isLeftAvoid: found figure. return true »);
}
return true;
}
if (jqo.is(« aside.pullquote »)) {
if (debug) {
console.log(« isLeftAvoid: found pullquote. return true »);
}
return true;
}
if (jqo.is(« pre »)) {
if (debug) {
console.log(« isLeftAvoid: found pre. return true »);
}
return true;
}
if (jqo.is(« div.gist »)) {
if (debug) {
console.log(« isLeftAvoid: found github code block. return true »);
}
return true;
}
if (jqo.is(« aside ») jqo.hasClass(« sidebar ») jqo.hasClass(« medium »)) {
if (debug) {
console.log(« isLeftAvoid: found medium sidebar. return true »);
}
return true;
}
if (jqo.hasClass(« statsTable »)) {
if (debug) {
console.log(« isLeftAvoid: found class statsTable. return true »);
}
return true;
}
return false;
}
/**
* return true if there are no figures before the target placement that might bleed down into placement element
*/
function noPrevFigures($originalTarget) {
var targetIndex = $originalTarget.index();
var numElementsLookBack = 5;
var figureIndex = null;
var figureHeight = null;
var startIndex = targetIndex – numElementsLookBack
Some of the most powerful companies in video networks and delivery plan to define an open architecture for streaming video as part of a new alliance that includes Cisco Systems, Comcast, Ustream and Yahoo, but not Netflix or YouTube.
The Streaming Video Alliance, announced Friday, says it wants to help scale the infrastructure for online video and make it more efficient while maintaining the quality of the viewer experience. To do that, it plans to « redefine the way online video is streamed across mobile and fixed networks » while fostering deeper collaboration and speeding up innovation.
Streaming video is growing fast and taking up an increasing share of network capacity as consumers turn to online sources of entertainment instead of, and in addition to, broadcast TV and traditional cable. It’s also a hotly contested area where broadband providers and over-the-top Internet video companies such as Netflix have clashed over the business side of delivering large amounts of content to consumers. Much of the debate over net neutrality centers on whether service providers can sell network priority to streaming video companies.
The Alliance boasts a broad array of major players in online video. They include cable operators Charter Communications and Liberty Global, Fox Networks Group, Major League Baseball Advanced Media, network operator Level 3 Communications, and players outside the U.S. including Korea Telecom, Telecom Italia and Telstra.
The group aims to define specifications for streaming and caching infrastructure to carry live and on-demand video. It also intends to set standards so content providers, delivery networks and network operators can stream video efficiently, and to create a common approach to measuring and reporting the quality of the video streaming experience.
« The hope is that companies throughout the ecosystem will join this effort to develop a multifaceted solution that works for all elements of the ecosystem, » the Alliance said in a press release.
Netflix and Google did not immediately respond to requests for comment on the Alliance.
Stephen Lawson covers mobile, storage and networking technologies for The IDG News Service. Follow Stephen on Twitter at @sdlawsonmedia. Stephen’s e-mail address is stephen_lawson@idg.com
-
We’ve got 5 copies to give to some lucky ITworld readers. Enter now for your chance to win!
From Apple to Amazon to Microsoft to Twitter, the names of some of the world’s most popular tech…
Get our Daily News newsletter
You’re definitely going to meet them. Hopefully you aren’t one of them.
If your old workhorse of a PC is starting to slow down in its old age, these low (or no-) cost tricks…
Programmers and project managers rejoice: Your skills are bankable assets.
The last year has been bad, but the technology is there to stop nearly all data breaches, experts said.
The company is hoping its customers will use analytics features to prevent messaging fatigue.
Programmers and project managers rejoice: Your skills are bankable assets.