当前位置: 首页 > news >正文

mpv core_thread pipeline

级别函数文件行号
1vo_queue_framevo.c881
2write_videovideo.c1273
3run_playloopplayloop.c1268
4play_current_fileloadfile.c1914
5mp_play_filesloadfile.c2100
6core_threadclient.c599
7start_threadpthreadcreat…442
8clone3clone3.S81

这展示了 MPV 多媒体播放器中一个核心线程(core_thread)在播放文件时的函数调用栈(Call Stack)。

我们从最深层(栈底) 开始解读,向上追踪到最终执行的动作(栈顶):

  1. 起点:创建线程 (clone3 & start_thread)

  2. 运行播放器核心线程 (core_thread)
    ◦ 级别 6: core_thread (in client.c:5): 这是 MPV 自己实现的线程函数。可以认为是播放器核心逻辑的“主循环”或运行入口点。

  3. 核心播放逻辑 (mp_play_files & family)
    ◦ 级别 5: mp_play_files (in loadfile.c:2): 这是 开始播放一个或多个文件的关键入口点。它被core_thread调用。

    ◦ 级别 4: play_current_file (in loadfile.c:1): 这个函数专注于播放当前选定文件的具体逻辑。它被mp_play_files调用。

    ◦ 级别 3: run_playloop (in playloop.c:1): 这是 MPV 播放事件循环的核心。它不断地处理用户输入、解码帧、控制同步、渲染输出等任务,直到播放结束或被中断。

  4. 视频输出流水线 (write_video & vo_queue_frame)
    ◦ 级别 2: write_video (in video.c:1): 这个函数负责处理解码后的视频帧。它可能涉及格式转换、滤镜处理等操作,最终目的是将准备好的视频帧交给视频输出 (VO) 模块。

    ◦ 级别 1: vo_queue_frame (in vo.c:8): 这是调用栈的顶端(即当前正在执行或最近执行的点)。它是 VO (Video Output) 模块的核心函数,负责将write_video提交过来的视频帧加入渲染队列。VO 模块随后会将这些帧从队列中取出,使用系统资源(如 OpenGL, Vulkan, DirectX, X11, Wayland 等)将其最终绘制到屏幕上。

总结执行流程:

系统创建线程 (clone3/start_thread) ➔ MPV 核心线程启动 (core_thread) ➔ 调用开始播放函数 (mp_play_files) ➔ 播放当前文件 (play_current_file) ➔ 进入主播放循环 (run_playloop) ➔ 处理视频帧 (write_video) ➔ 将帧提交给视频输出模块渲染 (vo_queue_frame)。

http://www.lryc.cn/news/616220.html

相关文章:

  • 第16届蓝桥杯Scratch选拔赛初级及中级(STEMA)2025年4月13日真题
  • ARM保留的标准中断处理程序入口和外设中断处理程序入口介绍
  • Python设计模式 - 装饰模式
  • 双亲委派机制是什么?
  • 亚麻云之轻云直上EC2
  • 硬件开发_基于STM32单片机的智能电梯系统
  • 关键基础设施中的新兴技术如何扩大网络风险
  • Java .class文件反编译成 .java文件
  • LeetCode 括号生成
  • 机器学习数学基础:46.Mann-Kendall 序贯检验(Sequential MK Test)
  • AtomicStampedReference解决方案
  • QT常用控件三
  • 浏览器CEFSharp88+X86+win7 之js交互开启(五)
  • 深入理解C语言一维数组的本质:数组名、指针常量与访问细节
  • 女子试穿4条裤子留下血渍赔50元引争议:消费责任边界在哪?
  • 无须炮解,打开即是Pro版
  • (LeetCode 每日一题) 869. 重新排序得到 2 的幂 (哈希表+枚举)
  • Python中随机化列表元素的详细方法
  • LintCode第604题-滑动窗口内数的和
  • DAY36打卡
  • 自创论述类文本阅读:论温泉
  • ubuntu 安装内核模块驱动 DKMS 介绍
  • 基于Ubuntu20.04的环境,编译QT5.15.17源码
  • ubuntu22.04+samba
  • 正则表达式常用语法参考
  • 零基础学Java第三讲---运算符
  • CSS优先级、HTTP响应状态码
  • ​Microsoft Store 离线下载软件
  • Unity笔记(四)——Camera、碰撞检测函数、刚体加力、音频
  • 电脑使用“碎片整理”程序的作用