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

相关文章

Nginx设置连接超时并进行测试的方法步骤

《Nginx设置连接超时并进行测试的方法步骤》在高并发场景下,如果客户端与服务器的连接长时间未响应,会占用大量的系统资源,影响其他正常请求的处理效率,为了解决这个问题,可以通过设置Nginx的连接... 目录设置连接超时目的操作步骤测试连接超时测试方法:总结:设置连接超时目的设置客户端与服务器之间的连接

mybatis和mybatis-plus设置值为null不起作用问题及解决

《mybatis和mybatis-plus设置值为null不起作用问题及解决》Mybatis-Plus的FieldStrategy主要用于控制新增、更新和查询时对空值的处理策略,通过配置不同的策略类型... 目录MyBATis-plusFieldStrategy作用FieldStrategy类型每种策略的作

Linux流媒体服务器部署流程

《Linux流媒体服务器部署流程》文章详细介绍了流媒体服务器的部署步骤,包括更新系统、安装依赖组件、编译安装Nginx和RTMP模块、配置Nginx和FFmpeg,以及测试流媒体服务器的搭建... 目录流媒体服务器部署部署安装1.更新系统2.安装依赖组件3.解压4.编译安装(添加RTMP和openssl模块

Python如何实现PDF隐私信息检测

《Python如何实现PDF隐私信息检测》随着越来越多的个人信息以电子形式存储和传输,确保这些信息的安全至关重要,本文将介绍如何使用Python检测PDF文件中的隐私信息,需要的可以参考下... 目录项目背景技术栈代码解析功能说明运行结php果在当今,数据隐私保护变得尤为重要。随着越来越多的个人信息以电子形

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

如何利用Java获取当天的开始和结束时间

《如何利用Java获取当天的开始和结束时间》:本文主要介绍如何使用Java8的LocalDate和LocalDateTime类获取指定日期的开始和结束时间,展示了如何通过这些类进行日期和时间的处... 目录前言1. Java日期时间API概述2. 获取当天的开始和结束时间代码解析运行结果3. 总结前言在J

CSS弹性布局常用设置方式

《CSS弹性布局常用设置方式》文章总结了CSS布局与样式的常用属性和技巧,包括视口单位、弹性盒子布局、浮动元素、背景和边框样式、文本和阴影效果、溢出隐藏、定位以及背景渐变等,通过这些技巧,可以实现复杂... 一、单位元素vm 1vm 为视口的1%vh 视口高的1%vmin 参照长边vmax 参照长边re

java获取图片的大小、宽度、高度方式

《java获取图片的大小、宽度、高度方式》文章介绍了如何将File对象转换为MultipartFile对象的过程,并分享了个人经验,希望能为读者提供参考... 目China编程录Java获取图片的大小、宽度、高度File对象(该对象里面是图片)MultipartFile对象(该对象里面是图片)总结java获取图片

Java通过反射获取方法参数名的方式小结

《Java通过反射获取方法参数名的方式小结》这篇文章主要为大家详细介绍了Java如何通过反射获取方法参数名的方式,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、前言2、解决方式方式2.1: 添加编译参数配置 -parameters方式2.2: 使用Spring的内部工具类 -

Java如何获取视频文件的视频时长

《Java如何获取视频文件的视频时长》文章介绍了如何使用Java获取视频文件的视频时长,包括导入maven依赖和代码案例,同时,也讨论了在运行过程中遇到的SLF4J加载问题,并给出了解决方案... 目录Java获取视频文件的视频时长1、导入maven依赖2、代码案例3、SLF4J: Failed to lo