ijkplayer从ffmpeg指针获取sdl渲染信息并设置异常到流程

2024-05-04 04:48

本文主要是介绍ijkplayer从ffmpeg指针获取sdl渲染信息并设置异常到流程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

获取abort_request流程:

is->abort_request

VideoState *is = ffp->is;



获取sdl流程:

typedef struct FFPlayer {

    /* extra fields */

    SDL_Aout *aout;

    SDL_Vout *vout;

}



sdl回调的call机制

ANativeWindow_lock

SDL_Android_NativeWindow_display_l

func_display_overlay_l

func_display_overlay


SDL_Vout *SDL_VoutAndroid_CreateForANativeWindow()

{

    SDL_Vout *vout = SDL_Vout_CreateInternal(sizeof(SDL_Vout_Opaque));

    if (!vout)

        return NULL;


    SDL_Vout_Opaque *opaque = vout->opaque;

    opaque->native_window = NULL;

    if (ISDL_Array__init(&opaque->overlay_manager, 32))

        goto fail;

    if (ISDL_Array__init(&opaque->overlay_pool, 32))

        goto fail;


    opaque->egl = IJK_EGL_create();

    if (!opaque->egl)

        goto fail;


    vout->opaque_class    = &g_nativewindow_class;

    vout->create_overlay  = func_create_overlay;

    vout->free_l          = func_free_l;

    vout->display_overlay = func_display_overlay;


    return vout;

fail:

    func_free_l(vout);

    return NULL;

}


SDL_VoutAndroid_CreateForAndroidSurface


IjkMediaPlayer *ijkmp_android_create(int(*msg_loop)(void*))

{

    IjkMediaPlayer *mp = ijkmp_create(msg_loop);

    if (!mp)

        goto fail;


    mp->ffplayer->vout = SDL_VoutAndroid_CreateForAndroidSurface();

    if (!mp->ffplayer->vout)

        goto fail;


    mp->ffplayer->pipeline = ffpipeline_create_from_android(mp->ffplayer);

    if (!mp->ffplayer->pipeline)

        goto fail;


    ffpipeline_set_vout(mp->ffplayer->pipeline, mp->ffplayer->vout);


    return mp;


fail:

    ijkmp_dec_ref_p(&mp);

    return NULL;

}


这篇关于ijkplayer从ffmpeg指针获取sdl渲染信息并设置异常到流程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/958363

相关文章

Java中读取YAML文件配置信息常见问题及解决方法

《Java中读取YAML文件配置信息常见问题及解决方法》:本文主要介绍Java中读取YAML文件配置信息常见问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 目录1 使用Spring Boot的@ConfigurationProperties2. 使用@Valu

Python使用OpenCV实现获取视频时长的小工具

《Python使用OpenCV实现获取视频时长的小工具》在处理视频数据时,获取视频的时长是一项常见且基础的需求,本文将详细介绍如何使用Python和OpenCV获取视频时长,并对每一行代码进行深入解析... 目录一、代码实现二、代码解析1. 导入 OpenCV 库2. 定义获取视频时长的函数3. 打开视频文

linux hostname设置全过程

《linuxhostname设置全过程》:本文主要介绍linuxhostname设置全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录查询hostname设置步骤其它相关点hostid/etc/hostsEDChina编程A工具license破解注意事项总结以RHE

Spring Boot @RestControllerAdvice全局异常处理最佳实践

《SpringBoot@RestControllerAdvice全局异常处理最佳实践》本文详解SpringBoot中通过@RestControllerAdvice实现全局异常处理,强调代码复用、统... 目录前言一、为什么要使用全局异常处理?二、核心注解解析1. @RestControllerAdvice2

Python设置Cookie永不超时的详细指南

《Python设置Cookie永不超时的详细指南》Cookie是一种存储在用户浏览器中的小型数据片段,用于记录用户的登录状态、偏好设置等信息,下面小编就来和大家详细讲讲Python如何设置Cookie... 目录一、Cookie的作用与重要性二、Cookie过期的原因三、实现Cookie永不超时的方法(一)

Java进程异常故障定位及排查过程

《Java进程异常故障定位及排查过程》:本文主要介绍Java进程异常故障定位及排查过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、故障发现与初步判断1. 监控系统告警2. 日志初步分析二、核心排查工具与步骤1. 进程状态检查2. CPU 飙升问题3. 内存

Spring Security中用户名和密码的验证完整流程

《SpringSecurity中用户名和密码的验证完整流程》本文给大家介绍SpringSecurity中用户名和密码的验证完整流程,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定... 首先创建了一个UsernamePasswordAuthenticationTChina编程oken对象,这是S

MySQL 获取字符串长度及注意事项

《MySQL获取字符串长度及注意事项》本文通过实例代码给大家介绍MySQL获取字符串长度及注意事项,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录mysql 获取字符串长度详解 核心长度函数对比⚠️ 六大关键注意事项1. 字符编码决定字节长度2

python3如何找到字典的下标index、获取list中指定元素的位置索引

《python3如何找到字典的下标index、获取list中指定元素的位置索引》:本文主要介绍python3如何找到字典的下标index、获取list中指定元素的位置索引问题,具有很好的参考价值,... 目录enumerate()找到字典的下标 index获取list中指定元素的位置索引总结enumerat

Qt 设置软件版本信息的实现

《Qt设置软件版本信息的实现》本文介绍了Qt项目中设置版本信息的三种常用方法,包括.pro文件和version.rc配置、CMakeLists.txt与version.h.in结合,具有一定的参考... 目录在运行程序期间设置版本信息可以参考VS在 QT 中设置软件版本信息的几种方法方法一:通过 .pro