17、深入解析媒体源的异步操作与流处理机制

深入解析媒体源的异步操作与流处理机制

1. 异步源命令函数概述

在媒体处理中,AVFSource 类的主要命令函数大多采用异步操作。这与多数 MF 操作一致,其命令函数的工作原理和之前提到的字节流处理程序类似。具体来说,它们会将工作事件排入队列,然后依靠工作线程调用源的 Invoke() 函数来完成实际工作。

AVFSource 在处理媒体源打开操作时,会使用一个特殊的状态对象,该对象可插入 IMFAsyncResult 中以指示异步命令。 AVFSource::Invoke() 函数会从传入的异步结果对象中提取命令,解析并执行它。

2. 暂停操作的实现
2.1 外部暂停方法 Pause()

以下是 AVFSource IMFMediaSource::Pause() 的实现代码:

// 
// Pause the source 
// 
HRESULT AVFSource::Pause() 
{ 
    HRESULT hr = S_OK; 
    CComCritSecLock<CComAutoCriticalSection> lock(m_critSec); 
    CComPtr<ISourceOperation> pOperation; 

    do 
    { 
        // make sure the source is 
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值