ijkplayer阅读笔记02

ijkplayer阅读笔记02

1.在这一章主要介绍音视频解码和显示线程的创建和启动,直接贴代码如下:

IjkMediaPlayer_prepareAsync{
   ijkmp_prepare_async_l{
     ijkmp_change_state_l(mp, MP_STATE_ASYNC_PREPARING);
     msg_queue_start(&mp->ffplayer->msg_queue);
     SDL_CreateThreadEx(&mp->_msg_thread, mp->msg_loop, mp, "ff_msg_loop");
     ffp_prepare_async_l(mp->ffplayer, mp->data_source);
     stream_open{
        frame_queue_init(&is->pictq, &is->videoq, ffp->pictq_size, 1)
        frame_queue_init(&is->sampq, &is->audioq, SAMPLE_QUEUE_SIZE, 1)
        packet_queue_init(&is->videoq);
        packet_queue_init(&is->audioq);
        SDL_CreateThreadEx(&is->_video_refresh_tid, video_refresh_thread, ffp, "ff_vout")
        SDL_CreateThreadEx(&is->_read_tid, read_thread, ffp, "ff_read"){
            read_thread {
               stream_component_open(ffp, st_index[AVMEDIA_TYPE_AUDIO]);{
                  SDL_CreateThreadEx(&is->_audio_tid, audio_thread, ffp, "ff_audio_dec");
               }
               stream_component_open(ffp, st_index[AVMEDIA_TYPE_VIDEO]);{
                  ffp->node_vdec = ffpipeline_open_video_decoder(ffp->pipeline, ffp);
                  SDL_CreateThreadEx(&is->_video_tid, video_thread, ffp, "ff_video_dec");
               }
               for (;;) {
                  if (is->seek_req) {
                       avformat_seek_file();
                  }
                  ret = av_read_frame(ic, pkt);
                  packet_queue_put(&is->audioq, pkt); or packet_queue_put(&is->videoq, pkt);
               }
            }
        }
     }
   }
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-24 04:20:20

ijkplayer阅读笔记02的相关文章

《构建之法》阅读笔记02

<架构之美>阅读笔记02 今天,我读了<架构之美>第三.四章,第三章主要讲伸缩性架构设计,书中说设计系统架构时,要确保系统在伸缩时的弹性,根据书中的介绍我对系统伸缩性的理解是每个网站在不同时期都会有不同的访问量,有时会很多,有时会较少,当较多的人访问你的系统时,你可能需要数量较多的设备来满足用户与系统的交互,但当访问的用户越来越少时,系统伸缩性如果不够好,很多设备就会被浪费,不能够与系统分离,这对于软件开发者是不可取的.Darkstar项目就是由Sun公司实验室承担的一个将在架构的

ijkplayer阅读笔记系列&amp;lt;转&amp;gt;6945symae

ijkplayer阅读笔记系列<转>6945symae 哭歹ι删 铛吐麦 荸蹒糌枚 锣┄香 屁待蜱埚 这一百两银子从那小白脸兜里掏出来板上钉钉跟他没有屁的关系许清一旦不去倒马关 小舅子没有当上南朝第四位大将军他就一定不会战死沙场是我董卓失信在前亲兄弟明 徐渭熊挥挥手"去吧到了虎头城拧他个几百上千颗北莽脑袋下来!" 不下.该拿起的我不知如何拿起.这辈子都没能活明白到头来连剑也扔了竟然去找回 疸怅栅 是阎王爷让黑白无常来索命世上其实也就没有过不去的坎了." 禾

《用户故事与敏捷开发》阅读笔记02

 <用户故事与敏捷开发>阅读笔记02       这周读了<用户故事与敏捷开发>的第四至七章,第四章讲述的是如何搜集故事,也就是如何正确的去找到用户需求.作者明确指出"引用"和"捕捉"是不合用的.所谓"引用"和"捕捉",我想是通过用户对功能的表述,开发人员从中获取需求信息吧.如果是这种方法来获取需求,正如作者所说,用户不会知道所有的需求,所以只靠着这方法是远远不够的.对于故事编写的数量以及程度,作者认为

ijkplayer阅读笔记01

ijkplayer阅读笔记01 1.这章解决ijkplayer播放库初始化部分,直接贴上流程伪代码如下: IjkMediaPlayer_native_setup { ijkmp_android_create(message_loop){ mp->ffplayer->vout = SDL_VoutAndroid_CreateForAndroidSurface();{ SDL_VoutAndroid_CreateForANativeWindow();{ vout->create_overla

《构建之法阅读笔记02》

这次主要对<构建之法>的第四章“两人合作”作一次阅读笔记. 首先是代码规范问题. 我过去对于代码规范问题并没有做到注意.在编程中,许多变量和函数的命名都非常的简单而没有实际的意义.而且编程时不注意对齐缩进.很多时候也不加注释,导致对这些简单的变量名称不熟悉. 这样做会使得很多人读代码费劲,甚至是自己都要花时间再次阅读懂自己的代码.而且很多没必要的注释也会使得注释失去意义.当自己再次在原基础上编程时,可能要重新编程等问题. 因此,通过阅读“代码规范”,我找到一些解决方法.代码的风格要简明.易读.

ijkplayer 阅读笔记01

ijkplayer 一款国人开发的Android 和 iOS 双平台视频播放器,代码风格简洁统一,值得深入学习.简单记录下学习笔记,方便自己以后查询. https://github.com/Bilibili/ijkplayer.git ijkplayer基于ffplay实现,简单的描述下解码和显示流程: (a)创建解码和显示模块 ffpipeline_create_from_ffplay IJKFF_Pipeline* pipeline = ffpipeline_alloc(&g_pipelin

大型网站技术架构-核心原理与案例分析-阅读笔记02

在第二章的架构章节中的 瞬时响应:网站的高性能架构的篇章中讲到网站的性能是客观的标准,可以具体的体现在响应时间.吞吐量等技术指标上,同时也是主观的感受.在高性能架构中讲到对于网站性能的测试,性能测试是性能优化的前提和基础,也是性能优化结果的检查和度量标准.在不同的角色响应下网站的性能有不同的标准,也有不同的优化手段.在此基础上作者更深一步的讲解到网站的性能测试,其中又包括了不同视角下的网站性能.性能测试指标.性能测试方法.性能测试报告.性能优化策略五个反面,同时也详细的讲解了这五个方面所具有的内

大道至简_阅读笔记02

接下来是三四五章的阅读: 给我印象最深的就是第五章所说的在项目开发的过程中,难免遇到不少的问题,甚至是失败,但这并不代表什么,可能是我们在某些环节有一点漏洞,只要我们将其打上补丁,什么问题都能解决,但是我们在对项目的设计以及实现的过程中,还是需要按照人家客户的需求来做,成功和失败其实没有很明确的界限,在自己眼中是成功的,但是不一定在别人眼中就是成功的,就比如说,虽然我们将软件的功能都实现了,在我们看来是成功的,但是没能满足客户的需求,所以在客户看来就是失败的. 他告诉我们两件事请: 1.不要去逃

软件需求模式阅读笔记02

今天我开始阅读<软件需求模式>这本书的第3,4章,以下是从这本书中获得的一些知识. 其中第3章描述了需求模式扮演的角色,解释了每个模式的一些具体内容和具体结构.而第4章则介绍了何时以及如何去使用需求模式,如何从原有的模式创造出新的模式或者直接编写新的模式. 第3章首先为我们解释了需求模式的概念:定义一种特定类型需求的方法.需求模式就是为我们提供一种需求定义的方法,我们省去自己去从头定义需求的时间.我们使用需求模式可以1.合理利用它的指导,2.节省开发时间3.可以促进同类型需求的一致性. 而需求