多媒体文件读取方法及装置的制造方法_2

文档序号:9420720阅读:来源:国知局
缓冲区优选包括已读缓存区域、未读缓存区域以及可用区域,所述可用区域也可以理解为空白区域,也就是整个环形缓冲区分为三个区域,且三个区域在逻辑上其首尾可以看成是相连的,已读缓存区域表示这些区域的数据已经被读取过,现在依然保存是为了播放器可能的后向读取要求,未读缓存区域是从网络流或者本地文件里面读取的数据,目前尚未被读取过,可用区域表示未被写入的存储空间。为更好理解本方案,可在所述环形缓冲区中使用3个指针划分其区间,分别是缓存的开始指针Begin,已读取存储指针Done,已写入缓存指针End,Begin和Done构成已读缓存区域,Done和End构成未读缓存区域,End和Begin构成可用区域,由于是环形缓冲区,则End指针移动到末尾的时候又回到缓存的头部,即与所述Begin指针重合。各个区域位置的更新可以通过移动相应的指针实现。
[0049]步骤S20,在所述读取位置在所述环形缓冲区的未读缓存区域内时,从所述未读缓存区域中的所述读取位置处开始读取所需数据;
[0050]在本实施例中,在检测到基于多媒体文件所在播放界面输入的播放位置调整操作时,先确定所述调整操作对应的读取位置是否在所述环形缓冲区内,若在所述环形缓冲区内,进一步确定所述调整操作对应的读取位置是否在所述未读取缓存区域内,若所述读取位置在所述未读取缓存区域内,则可直接从所述未读缓存区域的读取位置处开始读取所需数据。
[0051]步骤S30,更新所述环形缓冲区中已读缓存区域和所述未读缓存区域的位置以使已被读取的所述所需数据位于所述已读缓存区域内,当所述已读缓存区域对应的容量大于第一容量时,清除部分数据使所述已读缓存区域对应的容量保持为所述第一容量。
[0052]在本实施例中,为了提高多媒体文件读取过程中终端的运行效率,优选在创建环形缓冲区时,先设置已读缓存区域对应的第一容量值,所述第一容量值用于保证在多媒体文件读取过程中,仅保留所述容量值长度的多媒体文件数据即可,超出所述第一容量值的多媒体文件数据可以进行清空,也就是在多媒体文件在读取过程中,先更新已读缓存区域和所述未读缓存区域的位置使已被读取的所述所需数据位于所述已读缓存区域内,当所述已读缓存区域对应的容量大于第一容量时,清除部分数据使其所述已读缓存区域对应的容量保持为第一容量。实现了所述环形缓冲区实时保持足够的可用空间,以缓存未写入的多媒体文件数据,即使所述环形缓冲区的存储空间小于待读取的多媒体文件,也由于实时清空缓存,使得实际读取的多媒体文件数据的空间大于所述环形缓冲区的存储空间,提高了环形缓冲区的利用率,而不会因为缓存空间不足而去内存或本地文件中读取多媒体文件数据,也提高了多媒体文件的读取效率。在本实施例中,所述步骤S30从指针角度可理解为:先确定所述读取位置,将所述读取位置作为已读取存储指针Done,然后根据所述第一容量值调节开始指针Begin,使得所述开始指针Begin和所述已读取存储指针Done之间的存储空间保持为所述第一容量值,此时,由于所述开始指针Begin移动了,则所述End指针和Begin指针构成可用区域也相应增加了,S卩加大了环形缓冲区的可用空间。可以理解的是,伴随着Begin指针从原位置移动至新位置。原先位于此两位置之间的数据已被清空,即原所述已读缓存区域的部分数据已被清除。
[0053]进一步地,为提高多媒体文件读取的灵活性,所述步骤SlO之后,所述多媒体文件读取方法还包括步骤:在所述读取位置在所述已读缓存区域内时,从所述已读缓存区域中的所述读取位置处开始读取所述所需数据。可以理解的是,在检测到基于多媒体文件的播放界面输入的播放位置调整操作,且所述读取位置在所述已读缓存区域内时,则可直接在所述读取位置处开始读取所述已读缓存区域中的所述所需数据,实现了用户在多媒体文件读取过程中输入了前向操作时,无需重复向缓存重复写入数据也可直接读取述所需数据。
[0054]本实施例提出的多媒体文件读取方法,在预设的环形缓冲区内读取多媒体文件数据,且当读取位置在所述环形缓冲区的未读缓存区域内时,从所述未读缓存区域的读取位置处开始读取所需数据,并在读取所需数据时更新所述环形缓冲区中已读缓存区域和所述未读缓存区域的位置使已被读取的所述所需数据位于所述已读缓存区域内,当所述已读缓存区域对应的容量大于第一容量时,清除部分数据使其所述已读缓存区域对应的容量保持为第一容量,而不是在多媒体文件读取过程中,把多媒体文件数据读取完才清空缓存,本方案在所述环形缓冲区中读取多媒体文件数据时,通过边缓存多媒体文件数据边清空先缓存的部分多媒体文件数据,减小了缓存占用的存储空间,提高了终端的运行效率。
[0055]进一步地,为了提高多媒体文件读取的灵活性,基于第一实施例提出本发明多媒体文件读取方法的第二实施例,参照图2,在本实施例中,所述多媒体文件读取方法与第一实施例中所述方法的区别在于,所述步骤SlO之后,所述多媒体文件读取方法还包括:
[0056]步骤S40,在所述读取位置不在所述环形缓冲区内时,获取所述读取位置在所述多媒体文件中的第一位置,以及所述未读缓存区域中远离所述已读缓存区域的一端在所述多媒体文件中的第二位置;
[0057]步骤S50,确定所述多媒体文件中第一位置和第二位置之间的第二容量值是否小于第一预设容量值;
[0058]步骤S60,若所述第二容量值小于或等于所述第一预设容量值,从所述未读缓存区域中选取容量为所述第一容量的数据替换所述已读缓存区域中的数据;
[0059]步骤S70,删除所述未读缓存区域中的数据,并在所述环形缓冲区内的可用存储空间内继续写入所述多媒体文件中第二位置之后的数据以更新所述未读缓存区域;
[0060]步骤S80,当所述读取位置位于所述未读缓存区域内时,从所述未读缓存区域的所述读取位置开始读取所述所需数据。
[0061]在本实施例中,若所述读取位置不在所述环形缓冲区内,说明待读取的多媒体文件数据还没写入成功,在检测到基于多媒体文件所在播放界面输入的调整操作时,先获取所述调整操作对应的读取位置在所述多媒体文件中的第一位置,以及所述未读缓存区域中远离已读缓存区域的一端在所述多媒体文件中的第二位置,然后将所述多媒体文件中第一位置和第二位置之间的第二容量值与第一预设容量值进行比对,最后根据比对结果,即可确定所述第二容量值与所述第一预设容量值的大小关系,本实施例中,优选所述第一预设容量值为所述环形缓冲区中可用区域的容量值,当所述第二容量值小于或等于所述第一预设容量值,说明所述读取位置距离所述未读缓存区域中远离已读缓存区域的一端的距离小于或等于所述可用区域,则可先从所述未读缓存区域中选取容量为所述第一容量的数据替换所述已读缓存区域中的数据,然后删除所述未读缓存区域中的数据,并在所述环形缓冲区内的可用存储空间内继续写入所述多媒体文件中第二位置之后的数据以更新所述未读缓存区域,当所述读取位置位于所述未读缓存区域内时,从所述未读缓存区域的所述读取位置开始读取所述所需数据。
[0062]进一步地,为了提高多媒体文件读取的灵活性,基于第二实施例提出本发明多媒体文件读取方法的第三实施例,在本实施例中,参照图3,所述步骤S50之后,所述多媒体文件读取方法还包括:
[0063]步骤S90,若所述第二容量值大于所述第一预设容量值,确定所述读取位置在所述多媒体文件对应的存储位置;
[0064]步骤S100,在多媒体文件对应的存储位置开始直接读取所述所需数据。
[0065]在本实施例中,若所述第二容量值大于所述第一预设容量值,说明所述读取位置距离所述未读缓存区域中远离已读缓存区域的一端的距离大于所述可用区域,确定所述读取位置在所述多媒体文件对应的存储位置,直接在多媒体文件对应的存储位置开始读取所述所需数据,而不再将数据写入缓存再从缓存读取。对于较大数据量的读取直接从网络端或本地的多媒体文件读取,可以避免缓存空间过大,或是因缓存空间不足而导致的频繁写入及读取,造成效率低下。此时,还可将所述环形缓冲区中缓存的多媒体文件数据清空,或是仅保留大小为第一容量值的数据存储在所述已读缓存区域。
[0066]进一步地,为了提高多媒体文件读取的智能性,所述多媒体文件读取方法还包括步骤:在所述环形缓冲区中读取完所述多媒体文件数据时,删除所述环形缓冲区中缓存的多媒体文件数据。实现了读取完多媒体文件数据时,清空所述环形缓冲区,以供下一次读取多媒体文件时,缓存待读取的多媒体文件数据。
[0067]进一步地,当所述未读缓存区域的数据小于第二预设容量值时,在所述环形缓冲区内的可用存储空间内继续写入所述多媒体文件中数据以更新所述未读缓存区域。相当于在读取数据时,每次发现环形缓冲区中的未读数据(即可用数据)已经小于第二预设容量值时,即时在所述环形缓冲区内的可用存储空间内继续写入所述多媒体文件中数据以更新所述未读缓存区域,即在清除数据的同时也即时补充数据,以避免读取数据时等待时间过程,同时也确保环形缓存区域的存储空间利用率,避免大部分存储空间处于空闲状态。
[0068]本发明进一步提供一种多媒体文件读取装置。
[0069]参照图4,图4为本发明多媒体文件读取装置第一实施例的功能模块示意图。
[0070]需要强调的是,对本领域的技术人员来说,图4所示功能模块
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1