文件输入部分数据流——识别文件格式

本文解析了媒体文件如何从源传输到设备内存的过程。重点关注了OSCL_wHeapStringwFileName的作用,PVMFSourceContextData系列类的数据流创建过程,及PVMFRecognizerRegistryImpl::CreateDataStream函数在打开文件并创建数据流接口中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在理解一个媒体文件是如何传输到设备的内存中去的时,在识别文件格式这一部分,我认为有以下关键内容要明白:

1 OSCL_wHeapString wFileName

这是一个模板类,初次定义是在函数PlayerDriver::handleSetDataSource(PlayerSetDataSource* command)中,包含了媒体文件的绝对路径转化后的Unicode,也就是根据wFileName可以找到要播放的文件;

2 类PVMFSourceContextData继承类PVInterface,此类涉及到数据流,在类PVMFSourceContextData又成员指针指向类PVMFSourceContextDataCommon,这个类同样继承于类PVInterface,

类PVMFSourceContextDataCommon中有个成员指针指向类PVMFCPMPluginAccessInterfaceFactory,此类是在识别文件时创建数据流的工厂类,同样继承于类PVInterface,

成员函数CreatePVMFCPMPluginAccessInterface创建数据流指针,不过在此是个虚函数,实际调用的是对应实现类中的函数。

3 函数PVMFRecognizerRegistryImpl::CreateDataStream()

此函数用于创建数据流接口,会调用到函数CreatePVMFCPMPluginAccessInterface,返回指向类PVMIDataStreamSyncInterface的指针iDataStream,再调用函数iDataStream->OpenSession(iDataStreamSessionID, PVDS_READ_ONLY)以只读方式打开文件,并输出sessionID,在调用到OSCL中的open函数时会用到一个变量iFileName,就是前面的wFileName,两者指向同一块空间;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值