具体实施方式
在此本发明的主题被描述为带有特殊性以满足法定要求。然而,描述本身并无意限制本专利的范围。相反,发明人构想所要求保护的主题还可结合其它现有或将来的技术以其它方法来体现从而包括与本文献中所说明的相类似的不同步骤或步骤组合。此外,虽然术语“步骤”和/或“框”在本申请中可用于表示所采用的方法的不同要素,然而除非明确地说明了个别步骤的顺序,否则这些术语不应该被解释为提出本申请中所公开的各个步骤之间的任何具体顺序。
本发明的实施例提供了在发起设备上为对象的选择生成索引数据库的系统和方法。使用响应设备的设备参数来生成索引数据库,以使得索引数据库相对没有为任何特定设备优化的通用数据库而言,是特定于响应设备的。通过首先将响应设备的设备参数传送给发起设备来为响应设备优化索引数据库。发起设备会使用这些设备参数生成优化索引数据库,然后会将所选对象和优化索引数据库发送给响应设备。如果响应设备生成了部分(或次优化的)索引数据库以供其内部使用(例如,响应设备可以在设备连接断开时允许删除或增加内容),那么发起设备会能够将响应设备索引数据库与生成的索引数据库合并,并将优化的索引数据库发送给响应设备。此外,索引数据库可以具有标准化形式,以使得任何发起设备(包括那些没有创建索引数据库的)都能够操作索引数据库,例如包括读取、写入和/或重建数据库。于是,当生成了索引数据库并将其发送到响应设备后,当响应设备和任一发起设备后续连接时,所连接的发起设备可以选择从响应设备读取索引数据库,以便快速枚举、读取和/或重建数据库。
其中,依照本发明的实施例生成的索引数据库允许多次优化。仅作为示例而非限制,索引数据库允许优化枚举驻留在响应设备上的内容,以供浏览、管理和回放响应设备上的本地内容。此外,索引数据库允许优化枚举驻留在发起设备上的内容,以供浏览、管理和回放发起设备(生成数据库的发起设备或另一设备)上的内容。此外,索引数据库允许在设备之间优化传输速率,并且优化同步逻辑以供设备之间内容的智能同步。本发明还允许用相同的协议和数据库方案,在发起设备上使用相同的标准化软件和类设备驱动程序,来优化多种连接的响应设备功能。此外,优化也可被设计用于设备间使用的通信协议,以在连接会话期间提供增强的操作。
已简短地描述了本发明的概要,以下将描述本发明的一示例性操作环境。
总的参照附图并且首先具体参照图1,其中相同附图标记在各个附图中标识相同的成分,用于实现本发明的一个示例性操作环境被大体地显示和指定为计算系统环境100。计算系统环境100仅是合适计算环境的一个示例,并无意对本发明的使用或功能的范围暗示任何限制。也不应将计算环境100理解为对在示例性操作环境100中示出的任一成分或其组合有任何依赖或要求。
本发明可在许多其它的通用或专用计算系统环境或配置上运行。可适合用于本发明的公知的计算系统、环境、和/或配置的示例包括但并不限于:个人计算机、服务器计算机、手持式或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程电子消费品、网络PC、微型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等。
可在诸如程序模块等由计算机执行的计算机可执行指令的一般性环境背景中对本发明进行说明。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。本发明还可在任务由通过通信网络所链接的远程处理设备来执行的分布式计算环境中来实践。在分布式计算环境中,程序模块位于包括存储器存储设备的本地和远程计算机存储介质两者中。
参照图1,用于实现本发明的一个示例性系统包括计算机110形式的通用计算设备。计算机110的组件可包括,但并不限于,处理单元120、系统存储器130、以及将包括系统存储器在内的各种系统成分耦合至处理单元120的系统总线121。系统总线121可以是包括存储器总线或存储器控制器、外围总线、以及使用各种总线体系结构中任一总线体系结构的局部总线在内的诸多类型的总线结构中任一种。作为示例而非限制,这些体系结构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、增强型ISA(EISA)总线、视频电子标准协会(VESA)局部总线、以及也被称为Mezzanine总线的外围部件互联(PCI)总线。
计算机110通常包括各种计算机可读介质。计算机可读介质可以是可由计算机110访问的任何可用介质并包括易失性和非易失性介质、可移动和不可移动介质。作为示例而非限制,计算机可读介质可包括计算机存储介质和通信介质。计算机存储介质包括以任何方法或技术实现的用于存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括,但并不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字通用盘(DVD)或其它光盘存储、磁带盒、磁带、磁盘存储或其它磁存储设备、或可用于存储所需信息并可由计算机110访问的任何其它介质。通信介质通常以诸如载波或其它传输机制之类的已调制数据信号的形式体现计算机可读指令、数据结构、程序模块或其它数据,并包括任何信息传递媒介。术语“已调制数据信号”是指这样一种信号,它的一个或多个特性已以在信号中编码信息的方式被设置或改变。作为示例而非限制,通信介质包括诸如有线网络或直接有线连接等有线介质,以及诸如声波、RF、红外及其它无线介质等无线介质。以上介质的任意组合也应被包括在计算机可读介质的范围内。
系统存储器130包括诸如只读存储器(ROM)131及随机存取存储器(RAM)132等易失性和/或非易失性存储器形式的计算机存储介质。含有有助于在诸如启动期间在计算机110内的各要素之间传送信息的基本例程的基本输入/输出系统(BIOS)133通常被存储在ROM 131中。RAM 132通常包含即刻可为处理单元120存取和/或当前正由处理单元120操作的数据和/或程序模块。作为示例而非限制,图1示出了操作系统134、应用程序135、其它程序模块136、以及程序数据137。
计算机110还可包括其它可移动/不可移动、易失性/非易失性计算机存储介质。仅是作为示例,图1示出了对不可移动、非易失性磁介质进行读取和写入的硬盘驱动器141,对可移动、非易失性磁盘152进行读取或写入的磁盘驱动器151,以及对诸如CD-ROM等可移动、非易失性光盘156或其它光学介质进行读取或写入的光盘驱动器155。可在该示例性操作环境中使用的其它可移动/不可移动、易失性/非易失性计算机存储介质包括,但并不限于,磁带盒、闪存卡、数字通用盘(DVD)、数字录像带、固态RAM、固态ROM等。硬盘驱动器141通常通过诸如接口140等不可移动存储器接口连接至系统总线121,而磁盘驱动器151和光盘驱动器155通常通过诸如接口150等可移动存储器接口连接至系统总线121。
以上讨论并在图1中示出的驱动器及其相关联的计算机存储介质提供了用于计算机110的计算机可读指令、数据结构、程序模块和其它数据的存储。在图1中,例如,硬盘驱动器141被示为存储操作系统144、应用程序145、其它程序模块146、以及程序数据147。需要注意的是,这些组件可以与操作系统134、应用程序135、其它程序136、以及程序数据137相同或不同。这里操作系统144、应用程序145、其它程序模块146、以及程序数据147被给予不同编号以说明它们至少是不同的副本。用户可通过例如键盘162、以及通常是指鼠标、跟踪球或触摸垫等定点设备161等输入设备向计算机110输入命令和信息。其它输入设备(未示出)可包括操话筒、纵杆、游戏垫、盘式卫星天线、扫描仪等。这些和其它输入设备经常通过耦合至系统总线的用户输入接口160连接至处理单元120,但也可通过诸如并行端口、游戏端口或通用串行总线(USB)等其它接口和总线结构来连接。监视器191或其它类型的显示器设备也通过诸如视频接口190等接口连接至系统总线121。除了监视器191,计算机还可包括诸如扬声器197和打印机196等可通过输出外围接口195连接的其它外围输出设备。
计算机110可在使用到诸如远程计算机180等一个或多个远程计算机的逻辑连接的联网环境中操作。远程计算机180可以是个人计算机、服务器、路由器、网络PC、对等设备或其它公共网络节点,并且虽然图1中仅示出了存储器存储设备181,但通常包括以上关于计算机110所描述的许多或所有要素。图1中绘制的逻辑连接包括局域网(LAN)171和广域网(WAN)173,并且还可包括其它网络。这些联网环境在办公室、企业范围的计算机网络、内联网和因特网中是很普遍的。
当在LAN联网环境中使用时,计算机110通过网络接口或适配器170连接至LAN 171。当在WAN联网环境中使用时,计算机110通常包括用于通过诸如因特网等WAN 173建立通信的调制解调器172或其它装置。可为内置或外置的调制解调器172可通过网络接口170或其它适当机制连接至系统总线121。在联网环境中,关于计算机110所描述的程序模块或其部分,可存储在远程存储器存储设备中。作为示例而非限制,图1示出了驻留于存储器设备181上的远程应用程序185。应该认识到的是,示出的网络连接是示例性的,也可使用在计算机间建立通信链接的其它装置。
虽然没有示出计算机110的许多其它内部组件,但是本领域的普通技术人员将认识到这些组件及其互联是公知的。相应地,无需结合本发明公开关于计算机110内部构造的额外细节。
当计算机110被打开或复位时,存储在ROM 131中的BIOS 133指示处理单元120将操作系统或其必要部分从硬盘驱动器141加载到RAM 132中。一旦被标为操作系统144的操作系统的复制部分被加载到RAM 132中,处理单元120就执行操作系统代码并将与操作系统134的用户界面相关联的视觉元素显示在监视器191上。通常,当用户打开一应用程序145时,程序代码和相关数据就从硬盘驱动器141及其必要部分被读取并被复制到RAM 132中,复制部分在此用附图标记135表示。
现在转向图2,示出一个显示出在其中可实施本发明实施例的示例性系统200的框图。系统200包括通过通信链接与响应设备206通信的发起设备202。在本发明的实施例中,用户可以经由例如用户界面操作发起设备202,以获取来自响应设备206设备参数208,并且初始从发起设备202到响应设备206的对象210和优化索引数据库212的传输。虽然发起设备202通常用于打开与响应设备的通信会话,但是在响应设备206打开与发起设备202的通信会话的情况下,也可能发生角色颠倒。在这种情况下,可以增强响应设备206以包括用于打开和关闭会话的适当工具。此外,应该理解发起设备202和响应设备206也可以在本发明的范围中以对等关系操作。于是在本发明的各个实施例中,发起设备202和响应设备206的其中之一或两者可以管理设备之间的通信。
发起设备202可以是诸如以上参考图1所述的计算机设备110的个人计算机、便携式计算机或其他计算设备或机器。发起设备202可以主存或包含对存储于其上的音频、视频、图像或其他媒体或内容进行编码的一组对象214。对象214可以包括例如音频对象(诸如音乐、录音或其他音频内容)、数字照片对象(诸如下载自数码相机、照片共享或其他因特网站点或其他源的那些照片)、视频对象(诸如DV兼容的视频剪辑)或包含其他类型的媒体或内容的对象(例如日历信息、联系信息或文档文件)。每个对象可以包括与一组描述内容数据的对象性质或属性配对的媒体或其他内容数据(诸如声音文件、数码照片或以二进制形式存储的文档文件)。例如,性质可以包括编解码器类型、彩色图像的色深、歌曲的艺术家和播放时间或其他特性或属性。这种性质通常被称为元数据。
发起设备202也包括优化引擎216,该引擎对于一组选定对象210而言,可生成为响应设备206优化的索引数据库212。为了创建优化的索引数据库212,优化引擎216访问响应设备206的一组设备参数。可以采用大量不同的设备参数来优化索引数据库。仅作为示例而非限制,设备参数可以描述响应设备206的静态硬件和软件特性,诸如硬盘驱动器速度、可访问主存的容量、主处理器速度和蓄电池电源灵敏度。此外,设备参数可以包括响应设备206对特定记录格式和将记录放置到数据库中的偏好。此外,用于优化索引数据库的设备参数可以是动态属性,诸如特定响应设备206的典型访问模式以及所得性能信息。这些动态参数通常由响应设备206来测量。由此,动态参数不仅对给定的设备模型是特定的,对具体实例也是特定的,因为在设备的不同实例之间可能由有物理特性上的不同。
优化引擎216可以在本发明的范围内使用多种方式来访问响应设备206的设备参数。在一个实施例中,优化引擎216可以访问存储在发起设备202上的设备概要。例如当设备第一次连接时,发起设备202从响应设备206获取设备参数208后,它可以建立并存储设备概要218。可选地,发起设备202在通过诸如将响应设备206的标识键入在线服务等的不同源来获取设备参数之后,可以构建并存储设备概要218。一旦建立了设备概要218,就可以在每次响应设备206连接到发起设备202时被更新,或者可以由在线服务或其他源来周期性地更新。在另一实施例中,发起设备202可以不维持诸如设备概要228等设备概要,而是在每次设备连接时动态地获取来自响应设备206的设备参数208。正如以下将详细示出的那样,获取来自响应设备206的设备参数可以经由通用连接协议发生。
一般地,响应设备206可以是任何类型的能够与发起设备202通信的设备(便携式或非便携式。响应设备206可以接收对象210,并且自身呈现内容或是进一步将内容传送到另一设备以供呈现。作为示例而非限制,响应设备206可以是数码相机、数码摄像机(带有或不带静态图像捕捉功能)、便携式媒体播放器(诸如个人音乐播放器或个人视频播放器)、自动媒体播放器、蜂窝电话(带有或不带媒体捕捉/回放功能)、个人数字助理(PDA)、可联网无线设备(诸如无线email或其他消息传送设备)、全球定位系统(GPS)或其他定位设备、事件记录设备、远程控制设备、遥测设备、装置设备、工业设备、医学设备、便携式存储设备或其他设备、播放器或系统。
响应设备206也可以包括类似于上述有关发起设备202描述的一组对象220。例如,一组对象220可能先前发送自发起设备202或可选内容源。响应设备206可以还包括设备参数模块222,该设备参数模块同时可以保有静态和动态设备参数信息,并提供将信息传送给发起设备202的能力。为了保有动态设备参数信息,设备参数模块222或另一相关联的组件能够收集多种性能数据。例如,设备参数模块222或其他组件可以跟踪对先前传送的索引数据库和先前传送的对象的访问,并且保有性能计数器。此外,设备参数模块222可以测量用户界面参数以及与诸如发起设备202的其他设备通信的参数。
虽然发起设备202和响应设备206的许多内部组件未示出,但是本领域的技术人员会理解这些组件和它们的互连是公知的。相应地,此处不再进一步描述有关发起设备202和响应设备206的内部构造的其他细节。
发起设备202和响应设备206可以经由通信链接204通信。在一个实施例中,通信链接204可以是有线线路,诸如通用串行总线(USB)连接或FireWireTM连接。在另一实施例中,通信链接204可以是无线的,诸如BlueToothTM或WiFiTM连接。在又一实施例中,通信链接204可以包括有线和无线链接的组合。此外,通信链接204可用是直接连接,或者可以包括网络通信,该网络则包括一个或多个诸如以上参考图1所描述的那些LAN和/或WAN。在本发明的又一实施例中,响应设备206可以包括可移动存储卡,通信链接204可以表示将存储卡(相对于响应设备206)连接到发起设备202(例如,用于使用存储卡在两个设备之间传送对象、设备参数以及索引数据库)。本领域的普通技术人员会理解,此处所描述的通信链接204是示例性的,并且可以使用在发送设备202和响应设备206之间建立通信的其他装置。
依照本发明的实施例,发起设备202和响应设备206可被配置用以经由诸如媒体传输协议(MTP)的通用链接协议通信。MTP还在例如上述美国专利申请序列号10/429,116中描述。然而,当通过使用MTP的媒体操作进行描述时,可以理解进一步依照本发明的实施例,其他协议、层或方案可以被用作或包含在通用连接协议中。
现在参考图3,示出了依照本发明的实施例的流程图,该流程图则显示了一种在响应设备206连接到发送设备202时用于生成优化索引数据库的方法300。开始时,发起设备202验证响应设备206已被连接,如框302处所示。在框304处,发起设备202接着从响应设备206上载任何可用的设备参数。如上所述,设备参数可以包括例如静态硬件和软件特性、报告形式和放置偏好以及动态使用和性能信息。
当从响应设备206获取了设备参数之后,发起设备202判定它当前是否保有响应设备206的设备概要,如框306处所示。发起设备202可能已经存储了有关响应设备206的设备概要,例如若设备先前已经连接或者若发起设备202先前从诸如提供这种数据的在线服务之类的另一源获取了设备参数。如果当前响应设备206的设备概要被保有,则发起设备202就用目前上载的设备参数更新设备概要,如框308处所示。或者,如果发起设备202当前未保有响应设备206的设备概要(例如,如果设备先前未曾被连接,或者没有以其他方式将设备参数传送给发起设备202),发起设备202就在框310处生成设备概要。
在框312处,发起设备202接收要为其创建索引数据库的对象的选择。一般地,选择会包括已被选择要发送给响应设备206并本地存储在发起设备202上的对象。然而,在本发明的实施例中,用户可能会希望为当前存储在响应设备206上的对象或存储在两个设备上的对象组合创建索引数据库。在这些实施例中,响应设备206将有关其选择的对象的数据发送给发起设备202。在任一情况下,对象选择可以或是基于用户的明确对象选择,或是作为对于存储在发起设备202和响应设备206之一或两者上的对象进行的动态查询的结果。
在接收了对象选择之后,发起设备202依照性能影响特性来分析并处理该选择,以创建通用索引数据库,如框314处所示。与此同时,也执行其他处理。例如,当在对象和索引数据库已被下载之后来操作响应设备206时,可以标识内部内容指针以协助微粒(fine grain)导航(例如,用于有关视频剪辑的场景检测)。因为尚未利用有关响应设备206的设备参数,所以最初构建的索引数据库是通用的并且尚未被优化。
为了为响应设备206优化索引数据库,发起设备202在框316处访问设备概要。基于设备概要内设备参数的收集,发起设备202构建表示响应设备206在连接断开状态下的操作的响应设备206虚拟模型,如框318处所示。在框320处,所述与选定对象相关联的元数据接着会被处理以优化该索引数据库。
根据对发起设备202可用的设备参数并依照本发明的不同实施例,可以实现各种变化程度的优化。例如,使用不同的静态参数可以提供许多优化点。此外,如果响应设备对特定记录格式和数据库中的位置有偏好,且这些偏好在设备概要中指出,就可依照这些偏好来优化索引数据库。基于响应设备206在连接断开时实际如何操作,可以使用动态数据来进一步优化索引数据库。例如,使用模式和所得性能信息可以指示索引数据库的优化结构。此外,设备组件可能损坏或被误标,这就使得静态参数不足以实现完全优化。在本发明的又一实施例中,索引数据库的优化也可以包括基于响应设备206的存储参数的对象寻址。对象寻址可以或是以独立于硬件的方式(例如文件系统节点)或是以依赖于硬件的方式(例如磁盘扇区的绝对数目)。
在已经为响应设备206优化索引数据库后,可以将选定对象和优化的索引数据库从发起设备202下载至响应设备206,如框322处所示。在一个实施例中,所有选定对象首先被下载到响应设备206。随后就解析相关链接(如果需要的话),接着下载索引数据库。在另一实施例中,索引数据库在相关对象组(例如,依文件夹或播放列表相关)被发送给响应设备206后,被增量下载。在又一实施例中,索引数据库可以包含用于对响应设备206上对象进行绝对寻址的占位符。占位符可以在对象下载的同时由响应设备206填充,而这对响应设备206的执行而言,是相较于构建完整的索引数据库更为简单的操作。
在响应设备206已从发起设备202连接断开或者下载会话已完成之后,响应设备206可以执行一致性验证。如果设备仍然处于连接状态,那么响应设备206可以向发起设备202报告任何出错条件,这可能初始索引数据库的重建过程。然而,如果设备已经连接断开,则只要所需内容已被下载,响应设备206就可以在第一操作激活设备功能之前重建该索引数据库。
用户可能希望在发起设备202和响应设备206连接断开时选择对象,并当设备在稍后连接时发送内容。如果发起设备202保有设备概要,那么发起设备202会在设备连接之前为选定的对象生成优化的索引数据库。转向显示了一流程图的图4,其中示出了一种依照本发明的实施例用于在响应设备206与发起设备202连接断开时生成索引数据库方法。方法400类似于上述方法300,不同之处在于发起设备202必须依赖在本地存储的设备概要中提供的设备参数。
最初地,发起设备202接收要发送到响应设备206的对象选择,如在框402处所示。如上所述,选择可以是明确的用户选择或者是动态查询。基于选定对象,发起设备202在框404处创建通用索引数据库。在框406处,发起设备202接着访问设备概要以获取设备参数。使用来自设备概要的设备参数,发起设备202在框408处构建响应设备206的虚拟模型。接着就在框410处为响应设备206优化通用索引数据库。在框412处,发起设备202存储优化索引数据库直至响应设备206被连接。索引数据库可以被存储为诸如原子平面文件。当响应设备206稍后被连接时,发起设备202验证连接,如框414处所示。接着在框416处将选定对象和优化索引数据库下载至响应设备206。在又一实施例中,发起设备202当两个设备连接时,也从响应设备206访问设备参数。如果从响应设备206访问的设备参数不同于保有在发起设备202上的设备概要,那么发起设备202会在将索引数据库发送给响应设备206之前依照这些差异来更新索引数据库。
如上所述,在本发明的实施例中,响应设备206可以使用可移动存储卡。在这些实施例中,可以使用存储卡将响应设备206的设备参数传送给发起设备202,并且可以用选定对象来生成优化索引数据库并将其存储在存储卡上。参考显示了一流程图的图5,其中示出了一种依照本发明的实施例使用可移动存储卡在发起设备202和响应设备206之间传输响应设备参数、对象以及优化索引数据库的方法500。
在框502处,响应设备206分配存储卡上的一分区用以设备参数的存储。响应设备206接着在框504处将任何可用设备参数存储在该分区中。响应设备206也可以将有关设备206的标识信息存储在该分区中(例如,用于允许为多个响应设备使用相同的存储卡)。如上所述,可以将多种设备参数存储在卡上,这些设备参数例如包括静态设备硬件和软件特性、记录格式和位置偏好、以及动态使用和性能信息。在框506处,将存储卡从响应设备206移除,并插入发起设备202或允许在发起设备202和存储卡之间通信的另一组件。
在与存储卡连接后,发起设备202识别出卡来源于能够经由存储卡传递其设备参数的设备,如框508处所示。发起设备202接着在框510处访问位于存储卡中该分区上的设备参数。如果不存在响应设备206的设备概要,就创建新的概要。否则,就更新现有设备概要。如果存储卡包含多个响应设备的信息,发起设备202就可根据在分区内为每个设备提供的设备标识信息来识别每个响应设备。
使用设备参数,发起设备202使用类似于分别参考图3和图4讨论的方法300和400的过程来为给定的对象选择生成优化索引数据库,如框512处所示。在生成优化索引数据库后,发起设备202在框514处将选定对象和生成的索引数据库存储在存储卡上。接着可以将存储卡移除,并发送给响应设备206。
应该理解,本发明的各实施例提供了用于生成一种优化给定设备的索引数据库的系统和方法。结合了在各方面都旨在为说明性而非限制性的特定实施例来对本发明进行了说明。属于本发明且不背离其范围的替换实施例对本领域的普通技术人员将是显而易见的。
从上述内容可以看出,本发明非常适用于达到上述目标和目的,并能实现本系统和方法所显而易见和固有的其他优点。应该理解的是,某些特征和子组合是实体并且可在不引用其它特征和子组合的情况下使用。这些都可由权利要求所预期并包含在其范围之内。