2. 南宁学院, 广西南宁 530200;
3. 广西高校并行与分布式计算技术重点实验室, 广西南宁 530004;
4. 广西大学机械工程学院, 广西南宁 530004
2. Nanning University, Nanning, Guangxi, 530200, China;
3. Guangxi Colleges and Universities Key Laboratory of Parallel and Distributed Computing Technology, Nanning, Guangxi, 530004, China;
4. School of Mechanical Engineering, Guangxi University, Nanning, Guangxi, 530004, China
近几年来,基于HTTP视频流服务的使用一直在增加,许多视频网站开始采用HTTP协议进行视频流传送。采用HTTP传输视频可以使用标准的HTTP服务器,并能通过内容分发网络(Content delivery network,CDN)传送视频,同时能避免网络地址转换(Network address translation,NAT)和防火墙等问题,使用灵活、可靠且更加容易扩展部署。基于HTTP的动态自适应流媒体技术(Dynamic adaptive streaming over HTTP,DASH)是苹果、微软等公司推出的一种自适应码率流技术,可通过传统的HTTP Web服务器提供在线的高质量媒体内容流[1]。为解决各厂商DASH技术方案不兼容的情况,国际动态图像专家组(Moving Pictures Experts Group,MPEG)于2011年发布了动态自适应流媒体技术的国际标准MPEG-DASH[2]。
DASH技术在视频播放期间可以根据网络状态动态调整视频质量,确保了能够以较高的码率流畅播放视频,从而提高用户的体验质量(Quality of experience,QoE)。DASH服务器将原始视频切片成固定时长(通常2~4 s)的一个或多个视频片段,并使用HTTP传送到客户端[3]。视频媒体表示描述(MPD)文件描述了片段信息(如每段视频的持续时间、URL、视频分辨率、码率等级等),并可根据用例以不同的方式组织。在客户端,DASH播放器首先下载并解析MPD文件以检索媒体信息,然后根据自身性能以及网络状况、缓冲区参数和所处的播放阶段调用动态自适应码率选择算法来选择合适码率的视频片段下载并播放。在视频播放过程中,如果当前的平均下载速率大于视频的比特率,则切换到高一级比特率的视频播放;相反,如果平均下载速率小于视频的比特率,则切换到低一级比特率的视频播放。DASH技术兼顾了视频质量和用户观看视频的流畅性。显然,在DASH技术中,选择播放何种比特率的视频的决策引擎是位于客户端的,客户端的核心在于自适应码率选择算法。因此,研究有效的自适应码率算法对于提升视频播放的质量和用户观看视频的流畅性是至关重要的[4]。
MPEG-DASH标准仅定义了MPD文件和视频段的格式,对于客户端自适应码率选择算法并没有做出规定[5]。因此,许多研究人员把DASH技术的研究重点放在了自适应码率选择算法上。Liu等[6]提出了一种基于HTTP的自适应码率算法,该算法不依靠任何传输层的参数(如RTT和丢包率等),只是使用HTTP吞吐量平均值来判断当前视频比特率是否匹配网络带宽容量,采用渐进式的方法改变视频码率。但是该算法只是根据网络状况对码率进行切换,忽略了缓冲区等因素对视频播放的影响。Akhshabi等[7]从缩短视频初始化时间、平滑视频码率切换以减少较大的波动、使用平均值来抵消带宽剧烈变化的影响等3个方面出发,提出一种新的自适应算法,可以保证播放的稳定性,但是对网络变化的反应不够迅速,影响了视频质量。Huang等[8]提出一种基于客户端缓存的自适应码率选择算法,算法将吞吐量估计限制到初始阶段,并采用视频数据缓冲池来解决网络带宽和视频段大小的变化,同时还根据下载的视频段的大小变化情况来动态更新缓冲池容量。然而,由于视频段的大小变化取决于若干因素,如编码方案、视频内的帧改变数目以及视频的内容,因此难以根据先前数据来比较准确地预测出视频段的大小。Kumar等[9]提出一种自适应视频流缓冲感知率选择算法,通过最大化平均选择比特率来增强观看者的体验质量(Quality of experience,QoE)。张洋洋等[10]将基于大偏差原理的下溢概率估计模型引入到客户端缓冲区占有率的分析上,提出一种基于缓冲区下溢概率的码率自适应算法,但是该算法对带宽资源预测方面考虑不够充分。潘鹏程等[11]将缓冲区分成上溢区域、下溢区域、重置区域和均衡区域,提出一种基于缓冲区的码率控制算法,通过滑动窗口技术平滑处理不同视频分片的下载时间,根据缓冲区和网络带宽的当前状态采用不同的码率选择策略,以便使缓存尽最大可能地维持在均衡区内,降低码率的切换次数。Venkata等[12]提出一种基于吞吐量驱动的速率自适应算法,以获得平滑的回放连续性为目标,通过将估计的缓冲水平选择表示质量,在短期吞吐量波动的情况下避免了客户端的媒体播放器的缓冲区溢出和下溢。Juluri等[13]提出了一种基于自适应感知缓存框架的码率自适应选择方案,通过改善高速缓存上的预取和使用自适应码率选择方案的知识来估计下一段请求,实现优化缓存命中并最小化DASH视频流服务的目的。夏勃等[14]对缓冲区进行分级,并采用滑动窗口技术对带宽进行平衡处理,视频播放比较稳定,但视频码率提升较慢。Miller等[15]提出的算法使用平均下载速率作为输入,通过将播放分为两个阶段来避免频繁的码率切换:在快速启动阶段期间积极地增加视频码率,在视频播放阶段限制码率切换事件以提供稳定的播放体验。但是在开始阶段积极增加码率可能导致缓冲时间变长,影响视频观看体验。Juluri等[16]提出一种片长感知的码率选择算法,将视频划分为大小不一的更多分片,通过综合分析分片大小的变化、评估预测网络带宽和缓冲区占有率,预测出下一片段下载的时间。
从以上技术研究分析可以看出,现有研究主要集中在网络带宽状态和客户端缓冲区占用率大小对视频码率的影响,提出的大多数码率自适应算法都是使用下载速率和当前缓冲器占用率来为下一段选择最合适的码率,未考虑视频段大小对码率选择的影响,在网络状态发生变化时不能较好应对。大多数算法在整个视频播放的不同阶段,缓冲区阈值参数是保持不变的,固定的缓冲区阈值可能会导致视频播放启动偏慢和播放时视频码率切换较多,进而影响视频观看体验,且可能会发生缓冲区溢出等问题[17],进而会影响算法的性能。针对这些问题,本研究提出一种基于缓冲区阈值调整的动态自适应码率选择算法(Dynamic adaptive rate selection algorithm based on buffer threshold adjustment,BT-DARA)。该算法通过增强视频MPD文件来预测视频段下载时间,并结合带宽下载速率和缓冲区状态两个因素来选择视频码率。在视频播放过程中采取分阶段选择视频码率策略,在视频播放启动阶段稳步提高视频码率,减少缓冲时间,保证视频播放快速开始;在启动阶段结束后,采取积极的码率提升策略,提高视频播放质量。然后在缓冲区占有率处于较高水平时动态调整缓冲区阈值参数,以此来增加缓冲区长度,减少码率切换次数,确保视频播放的稳定性。
1 基于缓冲区阈值调整的码率选择算法 1.1 系统模型本文研究的HTTP动态自适应流媒体系统架构模型如图 1所示。在该模型中,DASH服务器使用特定工具将原始视频切片成固定时长的视频片段,并将每个视频片段转换成不同码率的文件,从而形成多个相同内容不同码率的视频片段,同时生成视频媒体表示描述(MPD)文件。在客户端,DASH播放器首先下载并解析MPD文件以检索媒体信息,然后根据网络状况、缓冲区参数和所处的播放阶段调用动态自适应码率选择算法(BT-DARA)来选择合适码率的视频片段下载播放。
在本研究改进的动态自适应码率选择算法(BT-DARA)中,对传统的自适应流媒体系统中的MDP文件进行了增强,将视频段的大小信息加入到MPD文件中。增强的MPD文件使得客户端可以获得确切的视频段大小,从而能在网络带宽预测的基础上更准确地估计视频段下载时间。BT-DARA算法将利用预测的带宽下载速率和当前的客户端缓冲区占用率进行判断,选择合适的视频码率。
1.2 网络带宽估计为了使码率选择算法能够选择到适当的视频码率,通常需要测量整个视频播放过程的吞吐量,进而估计出网络的当前带宽。整个视频播放过程由下载到的视频片段序列组成。本研究的BT-DARA算法采取了计算吞吐量平均值的方式来测量网络的吞吐量,这样做的目的是避免测量时网络带宽瞬时变化带来的对吞吐量计算的影响。被下载的视频片段可能因码率不同而具有不同的大小,因此采用分配与视频片段大小成比例的权重(W1, W2, ...)的方法来预测下一个视频片段的下载速率。这些权重和相应的视频片段下载速率(d1, d2, ...)用于计算加权平均下载速率。n个下载视频片段的加权平均下载速率由下式给出:
$ H_{n}=\frac{\sum_{i=1}^{n} W_{i}}{\sum_{i=1}^{n} \frac{W_{i}}{d_{i}}}, $ | (1) |
其中,Hn表示前n个视频片段的平均下载速率,由前n个视频片段的总大小除以下载n个视频片段所用时间得到,并通过Wn+1/Hn预测下载下一个视频片段的时间。
1.3 算法的设计与描述BT-DARA算法的设计思想:1)将视频段大小信息加入到MPD文件中,通过增强视频MPD文件使客户端能较准确地预测下一个视频片段的下载时间;2)综合考虑视频段下载时间和客户端缓冲区状态,对客户端缓存划分区间并在视频播放的不同阶段采用不同的码率切换策略:在视频播放启动阶段稳步提高视频码率,以此减少缓冲时间,保证视频播放快速开始;启动阶段结束后则采取积极的码率提升策略,以此提高视频播放质量;3)根据网络状态和缓冲区占有率情况通过动态调整缓冲区阈值参数,增加缓冲区长度,以此减少码率切换次数,确保视频播放的稳定性。下面对BT-DARA算法进行详细描述。
假设BT-DARA算法运行时从视频段集合R中选出最合适码率的视频段,客户端下载的每个段都放在大小为Bmax的缓冲区中。假设参数Bcurr表示当前缓冲区占用率,参数I表示缓冲区的阈值,参数Bα表示较小的缓冲区占用率,参数Bβ表示较大的缓冲区占用率,其大小关系如图 2所示。这些阈值参数是根据段的数量来定义的。
客户端是在下载每个视频段后调用BT-DARA算法以确定下一个视频段的码率。为了保证视频播放的稳定性,BT-DARA算法在运行过程中将根据网络状态和缓冲区占用率动态地调整各个缓冲区参数,并根据以下5个阶段进行动态选择视频码率。
1) 在视频开始播放时(或者在由于缓冲区下溢而中断之后),缓冲区占用率低于缓冲区阈值I时,即Bcurr≤I,为快速启动阶段。在这一阶段,算法将选择最低码率,目的是尽可能减少视频播放开始时间,保证用户在最短时间内就能观看视频。此外,延迟因子δ被设置为0,使得下一段被立即下载。最小化视频播放启动时间对于防止用户放弃视频会话是非常重要的。
2) 一旦缓冲器占用率不断增加且满足I<Bcurr≤Bα,算法进入加法增加阶段。在这一阶段,算法下载下一个视频片段所需时间对应于当前比特率由下式给出:
$ W_{n+1}^{c u r r} / H_{n}。$ | (2) |
算法在这一阶段将采用保守策略,使视频片段码率以单个步长逐渐递增,以避免缓冲区占用率低于I。具体的操作过程中,当视频播放处于加法增加阶段,即当前缓冲区占用Bcurr低于Bα时,如果下载高一级码率rcurr的视频段所需的时间小于Bcurr-I,则选择下一级码率;否则选择当前码率。在视频播放期间,如果按当前码率下载下一个段视频所花费的时间大于Bcurr-I,说明选择当前码率下载的效果不好,应选择码率更小的视频片段。通过使用加法增加策略,视频质量逐步提升,从而避免码率的快速提升造成缓冲区占用率处于较低水平的问题。
3) 当Bα < Bcurr < Bβ时,算法进入主动切换阶段,此时缓冲区占用率Bcurr处于最优的缓冲区占用区间。在该阶段中,BT-DARA算法将采用更加乐观的策略,更倾向于选择高码率视频段。具体的做法是:基于当前网络带宽和缓冲区占用率,选择大于或等于当前码率的最合适码率。这种方式在确保视频质量稳定性的同时,也逐步提高视频的播放质量。为此,算法在决策过程中利用视频段大小信息,确保即使在视频片段大小波动情况下也能够更准确地预测片段的下载时间。
4) 当网络条件有利并且缓冲区占用率Bcurr大于Bβ时,算法处于延迟下载阶段。在这一阶段,BT-DARA算法选择最适用于当前网络带宽的码率。但不是立即发送对下一个视频片段的请求,而是等待直到缓冲区占用率下降到Bβ时才发送对视频段的请求。延迟下载的目的是限制视频缓冲器中视频片段的总数,以避免不必要的下载,防止用户过早地退出观看视频。
5) 当算法运行到延迟下载阶段时,确保视频稳定播放成为最重要的任务,BT-DARA算法进入对缓冲区阈值进行调整的阶段。具体的做法是:算法检测当前缓冲区视频段占有率是否大于Bα并且当前选择的视频码率是否为最高码率,如果是,说明已经度过了视频播放开始阶段,即用户已经观看了1~2 min视频,可能对该视频比较感兴趣,用户退出观看视频的可能性较小,此时可以适当增加缓冲区阈值参数Bα、Bβ、Bmax的值(例如算法中将3个参数值增加5),这样使得缓冲区长度增长,能够缓存更多的视频片段,有助于视频的稳定播放,提高抵御恶劣网络环境的能力。当视频播放出现卡顿现象时,可将缓冲区阈值参数Bα、Bβ、Bmax恢复到初始状态,使缓冲区视频段数量尽快恢复正常。
假设可用视频码率列表为R={rmin, …, ri, …, rmax},n为最近下载的段号,rcurr为最近下载的段的码率,Hn为前n段加权平均下载率,δ为延迟因子,前权重Wn+1 ={Wn+1min, …,Wn+1i, …,Wn+1max}对应码率段的大小为{rmin, …, rm, …, rmax}。缓冲区阈值I默认为2,Bα、Bβ、Bmax的初始值分别为Bα=5,Bβ=10,Bmax=12。BT-DARA算法的伪代码描述如下:
输入:n、rcurr、Bcurr、Hn、Wn+1、R
输出:ln+1:算法执行完毕的结果,即选择的视频码率
基本操作步骤:
if Bcurr≤I then
ln+1 = rmin
else
if (Wn+1curr/Hn)>Bcurr-I then
ln+1=max{ri|ri∈R, Wn+1curr/Hn≤Bcurr-I, i≤curr}; δ=0;
else if Bcurr≤Bα then
if (Wn+1curr+1/Hn)<Bcurr-I then
ln+1 =rcurr↑δ=0;
else
ln+1= rcurr δ= 0;
else if Bcurr≤Bβ then
ln+1 = max{ri|ri∈R, Wn+1i/Hn≤ Bcurr-I, i≥curr}; δ=0;
else if Bcurr>Bβ then
ln+1=max{ri|ri∈R, Wn+1i/Hn≤Bcurr-Bα, i≥curr}; δ=Bcurr-Bα;
else
ln+1 =rcurr; δ=0;
if ln+1=rmax&&Bcurr>Bα&&Bα =5&&Bβ=10&&Bmax=12 then
Bα= Bα+5; Bβ=Bβ+5;Bmax=Bmax+5;
else if Bcurr=0&&Bα=10&&Bβ=15&&Bmax=17
Bα =Bα-5; Bβ =Bβ-5;Bmax=Bmax-5。
1.4 算法的性能验证为了验证BT-DARA算法性能,我们在Apache上搭建了DASH服务器,并使用Python实现了一个模拟DASH客户端。通过这个客户端,我们能够模拟视频播放的整个过程,从而验证BT-DARA算法的性能。DASH服务器运行Ubuntu 14.04操作系统上,主要实现视频编码转码功能、视频分片功能以及视频分发功能。模拟DASH客户端运行在Window 7系统上,由MPD解析器模块、视频段下载模块、视频缓冲器模块、码率选择模块等4个模块组成。其中,MPD解析器模块用来下载并解析MPD文件以获得段信息(可用码率集,视频段URL和段大小信息);视频段下载模块负责从DASH服务器下载视频段;视频缓冲器模块则模拟视频播放器缓冲器;码率选择模块用于确定将要播放的视频码率。BT-DARA算法在码率选择模块中实现。为了对比算法性能,我们也同时实现了Liu等[6]提出的码率选择算法(以下称为传统码率选择算法)。该算法主要从网络吞吐量的角度来选择视频码率,具有普遍性。
实验中,DASH服务器和DASH客户端之间的带宽控制使用的是Linux中的traffic control工具。为了评估,视频源使用流行的开源电影Big Buck Bunny,该视频的开源版本提供20种不同的表示形式。我们使用DASHEncoder对视频源进行编码、切片生成20种具有不同码率的MPD文件,视频的总长度大约为596 s,并且每个表示被分割成150个段,每个段具有4 s的播放持续时间。仿真实验中使用的传输协议是TCP,并且使用现有的HTTP Web服务器来传送视频信息。实验参数的设置为I=2,Bα, Bβ, Bmax初始配置值为Bα=5, Bβ=10,Bmax=12。
实验的目的是对比分析传统码率选择算法和本研究的BT-DARA算法的性能。实验过程如下:首先由播放器使用视频MPD文件的URL进行初始化,再由MPD解析器模块下载并解析MPD文件以检索所有表示和视频段URL的列表。接下来,调用速率码率模块以确定合适码率的视频段。然后,所选择的片段由片段下载模块下载并放入视频缓冲器中。一旦视频缓冲器中的段的数量增加超过初始阈值,则模拟视频播放器从缓冲器中开始读取一个视频段的数据。
2 结果与分析图 3给出了服务器和客户端之间带宽为4 Mbps时传统码率选择算法和本研究算法的Bα实验结果。传统码率选择算法在视频播放开始阶段(视频段1~10)选择的码率就比本研究算法要大,并且增加较快,这是因为该算法主要考虑吞吐量因素来选择视频码率,在视频开始播放阶段没有对码率增加进行限制。视频播放到达稳定阶段后(视频段10之后),本研究算法也经历了加法增长和主动切换两个阶段,视频码率较为理想且客户端缓冲区达到了较高的水平。实验中,传统码率选择算法在25,49,73视频段时码率下降幅度较大,这是受到网络带宽变化的影响所致。尽管此时本研究算法的码率也有所下降,但幅度较小,总体上还是比较稳定的。在视频播放后半段,网络带宽持续下降,传统码率选择算法选择的码率也随之下降。由于本研究算法可动态调整缓冲区阈值参数,扩大了缓冲区,使得视频播放较为稳定。总体来说,传统码率选择算法对于网络带宽的变化较为敏感,视频播放不太稳定且选择的码率相对较低,而本研究算法虽然在开始阶段码率增长相对较慢,但在播放阶段能提供较高的码率及稳定的播放,提高了视频播放质量。
图 4是8 Mbps的网络带宽下传统码率选择算法与本研究算法实验对比结果。在网络带宽变大的情况下两个算法的表现均好于4 Mbps网络带宽。传统码率选择算法直接从较高码率的视频段开始播放视频,而本研究算法在开始阶段有一个明显的增长过程。在稳定播放阶段,本研究算法码率选择有一些波动,但还是要优于对比算法。在视频播放后段,两个算法表现都很稳定,但因为由较大的缓冲区支撑,本研究算法的平均码率明显高于传统码率选择算法。
3 结论
本研究提出了一种基于缓冲区阈值调整的动态自适应码率选择(BT-DARA)算法。该算法通过增强视频MPD文件的表示,使视频段下载时间的预测更加准确;通过将带宽下载速率预测与缓冲区状态结合起来考虑,在视频播放过程中采取分阶段选择视频码率策略,动态地选择视频码率,稳定和提升了视频播放质量;通过动态调整缓冲区阈值参数,扩大了缓冲区的容量,减少了码率切换次数,确保了视频播放的稳定性。仿真实验结果表明,该算法能提高视频播放质量和稳定性,可以为用户提供良好的视频播放体验。下一步的研究工作将从两个方面去考虑:一是建立合适的视频播放的QoE评价体系,以便更加科学和直观地评价视频播放质量;二是针对现有的缓冲区参数调整策略较为简单的问题,研究更为合理和有效的缓存参数调整策略,以进一步提高视频观看体验。
[1] |
MUELLER C, LEDERER S, TIMMERER C, et al.Dynamic adaptive streaming over HTTP/2.0[C]//2013 IEEE International Conference on Multimedia and Expo (ICME 2013).San Jose, CA, USA: IEEE, 2013: 1-6.
|
[2] |
SODAGAR I. The MPEG-DASH standard for multimedia streaming over the internet[J]. IEEE MultiMedia, 2011, 18(4): 62-67. DOI:10.1109/MMUL.2011.71 |
[3] |
KUA J, ARMITAGE G, BRANCH P. A survey of rate adaptation techniques for dynamic adaptive streaming over HTTP[J]. IEEE Communications Surveys & Tutorials, 2017, 19(3): 1842-1866. |
[4] |
AYAD I, IM Y, KELLER E, et al. A practical evaluation of rate adaptation algorithms in HTTP-BASED adaptive streaming[J]. Computer Networks, 2018, 133: 90-103. DOI:10.1016/j.comnet.2018.01.019 |
[5] |
BENTALEB A, TAANI B, BEGEN A, et al. A survey on bitrate adaptation schemes for streaming media over HTTP[J]. IEEE Communications Surveys & Tutorials, 2019, 21(1): 562-585. |
[6] |
LIU C, BOUAZIZI I, GABBOUJ M. Rate adaptation for adaptive HTTP streaming[C]//MMSys'11 Proceedings of the Second Annual ACM Conference on Multimedia Systems. San Jose, CA, USA: ACM Press, 2011: 169-174.
|
[7] |
AKHSHABI S, NARAYANASWAMY S, BEGEN A C, et al. An experimental evaluation of rate-adaptive video players over HTTP[J]. Signal Processing:Image Communication, 2012, 27(4): 271-287. DOI:10.1016/j.image.2011.10.003 |
[8] |
HUANG T Y, JOHARI R, MCKEOWN N, et al. A buffer-based approach to rate adaptation:Evidence from a large video streaming service[J]. ACM SIGCOMM Computer Communication Review, 2015, 44(4): 187-198. |
[9] |
KUMAR M V P, RAVI K C, MAHAPATRA S. Design and implementation of a dynamic adaptive video streaming system with a buffer aware rate selection algorithm[C]//Image Analysis and Processing-ICIAP 2015. Lecture Notes in Computer Science, 2015, 9280(1): 227-238.
|
[10] |
张洋洋, 陈双武, 完颜许哲, 等. 基于HTTP的自适应视频传输算法[J]. 小型微型计算机系统, 2016, 37(7): 1572-1576. DOI:10.3969/j.issn.1000-1220.2016.07.040 |
[11] |
潘鹏程, 李国平, 王国中. 基于HTTP的流媒体自适应码率切换算法[J]. 电子测量技术, 2017, 40(9): 141-145. DOI:10.3969/j.issn.1002-7300.2017.09.027 |
[12] |
VENKATA P K M, SUDIPTA M.A modulated throughput driven rate adaptation algorithm for dynamic HTTP streaming[C]//2016 International Symposium on Wireless Communication Systems (ISWCS). Poznan, Poland: IEEE, 2016: 143-147.
|
[13] |
JULURI P, MEDHI D. Cache'n dash: Efficient caching for dash[C]//ACM SIGCOMM Computer Communication Review. ACM, London, UK, 2015, 45(4): 599-600.
|
[14] |
夏勃, 林浒, 李鸿彬, 等. 一种动态自适应HTTP流媒体码率切换算法[J]. 小型微型计算机系统, 2015, 36(2): 275-279. DOI:10.3969/j.issn.1000-1220.2015.02.017 |
[15] |
MILLER K, QUACCHIO E, GENNARI G, et al.Adaptation algorithm for adaptive streaming over HTTP[C]//201219th International Packet Video Workshop (PV). Munich-Garching, Germany: IEEE, 2012: 173-178.
|
[16] |
JULURI P, TAMARAPALLI V, MEDHI D. SARA: Segment aware rate adaptation algorithm for dynamic adaptive streaming over HTTP[C]//2015 I.E. International Conference on Communication Workshop (ICCW). London, UK: IEEE, 2015: 1765-1770.
|
[17] |
RAHMAN W U, CHUNG K. A novel adaptive logic for dynamic adaptive streaming over HTTP[J]. Journal of Visual Communication and Image Representation, 2017, 49: 433-446. DOI:10.1016/j.jvcir.2017.10.007 |