插件: Highlightselectedwords SourceInsightKeymap 主题切换: ctrl+k,ctrl+t

GTK,GTK+,andQtareGUItoolkits.Theseare libraries thatdevelopersusetodesigngraphicalinterfaces,allrunningontopoftheXServeror Wayland.Thesearethingsthatyouneedtoinstallasdependencies.They'retheLinux"equivalent"toWindows'GDI/GDI+.Whenanapplicationusesanyofthese,itwillusuallyhaveageneral"...

 RTSP标准:RFC2326RealTimeStreamingProtocol(RTSP)

offloadaudio是AudioTrack中表示某一类数据的一种说法,offloadaudio数据是指audio不需要由app进行解码,解码工作由硬件完成。也就是说AudioTrack的write写入的数据是未解码的数据,而不是pcm数据。解码的工作交由AudioTrack的插件完成,比如DefaultAudioTrack,或者自己写的MyAudioTrack。 如果App通过MediaCodec解码后,再write解码后的pcm数据,这种情况不属于offload模式。只有在write的时候是解码数据才是offload。 最常见的例子是dolby直通就是offload模式。

  tCdZJQtjUpyw   2023年12月22日   51   0   0 AppApp数据android数据android

前言: Binder是一种IPC机制,使用共享内存实现进程间通讯,既可以传递消息,也可以传递创建在共享内存中的对象,而Binder本身就是用共享内存实现的,因此遵循Binder写法的类是可以实例化后在进程间传递的。 Binder在Android架构中有很重的地位,各个模块都在重度使用它,从代码可读性角度看,在为熟悉之前的可读性较差。从整体架构的角度看,在各个模块中通过IPC分离接口和实现有效地提高了扩展性。 写法: 1.定义接口 这个接口需要Client/Bp和Server/Bn 都要遵循,Client需要关注有哪些消息类型,即enum值,Server需要关注虚函数,主要任务是根据...

正文: 信号量没有触及上限则阻塞post的原语,同时信号量除了系统限制的信号量最大值之外并没有接口可以用来设置上限。因此在一个信号量场景下,生产者在post信号的时候是没有束缚的,如果不控制生产量的话,会导致系统资源被耗尽。 一种方法是判断FIFO的尺寸,如果FIFO已经满了,则停止本次生产,接着sleep一定时间等待消费者从队列中取走数据,然后判断队列是否为空或者是否降到一定阈值,如果满足则继续填充队列。这种方法有一个问题,那就是如果消费者突然间在短时间内把数据都取走了,那么生产者sleep的就是影响了效率,如果缩减sleep的周期,那么又会导致cpu升高。 另外一种方法是使用两个信号量,...

参考: https://source.android.com/docs/devices/tv/multimedia-tunneling?hl=zh-cn 源码中的media_codecs.xml ./hardware/qcom-caf/sm8250/media/conf_files/lito/media_codecs.xml./hardware/qcom-caf/sm8250/media/conf_files/bengal/media_codecs.xml./hardware/qcom-caf/sm8250/media/conf_files/kona/media_codecs.xml./h...

  tCdZJQtjUpyw   2023年12月11日   22   0   0 xmlandroidfishandroidxmlfish

前言: Android的property系统类似于linux的环境变量,但是更加精细。可以通过adb设置和读取property,同时也可以在代码(JAVA/C/C)中设置和获取属性。这有助于我们在运行时控制代码执行逻辑。比如打开测试开关或者dump源数据文件。 工程关联: 库文件:libcutils 头文件:include<cutils/properties.h> 使用: /property_get:returnsthelengthofthevaluewhichwillneverbe greaterthanPROPERTY_VALUE_MAX1andwillalwaysbeze...

  tCdZJQtjUpyw   2023年12月11日   15   0   0 idesedgitsedAndroidgitandroidide

前言: Android的libstagefright库提供了MediaCodec组件,让应用层可以直接与平台编解码器交互。 MediaCodec既有JAVA接口(\frameworks\base\media\java\android\media\MediaCodec.java),又有NDK接口(/frameworks/av/media/ndk/include/NdkMediaCodec.h && /frameworks/av/media/ndk/NdkMediaCodec.cpp)。开发者可以自行选择使用JAVA还是c对MediaCodec进行封装,由此可...

前言: GstElement是Gstreamer的最基础类,几乎所有的Gstreamer类都继承于此,它包装了GObject同时提供了通用能力。 GstElement的属性: None GstElement是不可实例化的类,也是没有外在属性的类,无法通过g_object_set来对其设置属性。 GstElement的成员变量: struct_GstElement { GstObjectobject; /<public>//withLOCK/ GRecMutexstate_lock; /elementstate/ GCondstate_cond; guint32state_c...

VersionsofGoogleAndroid:VersionsandnumberofrelatedsecurityvulnerabilitiesListofallversionsofGoogleAndroidDetailedlistofallversionswithknownsecurityvulnerabilitiesofproduct.Youcaneasilyfindtheexactversionyouarelookingfor. https://www.cvedetails.com/version-list/1224/19997/1/Google-Android.html

  tCdZJQtjUpyw   2023年12月06日   13   0   0 GoogleListandroidGooglelistandroid

参考: Metaprogramminglibrary(sinceC11)cppreference.com https://en.cppreference.com/w/cpp/meta

  tCdZJQtjUpyw   2023年12月02日   10   0   0 c++c++

前言: ringbuffer/circularbuffer又名环形队列/环形缓冲区,其通过开辟固定尺寸的内存来实现反复复用同一块内存的目的。由于预先开辟了固定尺寸的内容,所以当数据满的时候,可以有两种处理方式,具体使用哪一种按照实际需求,具体如下: 1)当队列满的时候,新来的数据会覆盖最古老的数据,这种数据结构的特点是数据的写入不会因为队列满了而停止,同时也会导致旧数据的丢失,常用在一些对老旧数据不敏感的场景。如果数据很重要且不希望被丢弃,那么不要使用这种覆盖的模式,比如流媒体场景下,每一帧数据都要确保完整地被渲染出来,不然会出现跳帧和音画同步无法完成等问题,所以不适合这种模式。 2)当数据...

前言: signal是一种通信机制,可以跨进程发送,可以同进程跨线程发送,可以不同进程向指定线程发送。 信号的创建有两套api,一个是signal,一个是sigaction,signal缺陷很多,比如没有提供触发后自动再次设置处理信号处理策略,这会导致连续触发的两个信号,一个进入了期待的信号处理流程,另外一个则进入了默认的信号处理流程。 信号的递送和接受处理是异步的,即信号发送者不会因为信号接收者使用了阻塞信号处理函数而被阻塞住。但是信号的递送可能会出现阻塞,这个阻塞发生在信号发送者把信号送入内核的信号队列中(需要从代码层面验证)。 信号处理方式: 信号的处理有三种方式:默认,忽略,信号处理...

c实现: 基本用法 c标准库提供一套可变参数列表使用方法,va_list/va_start/va_arg/va_end。 demo: doubleaverage(intnum,...) { va_listarguments; doublesum=0; /Initializingargumentstostoreallvaluesafternum/ va_start(arguments,num); /Sumalltheinputs;westillrelyonthefunctioncallertotellushow manythereare/ for(intx=0;x<num;x) { ...

libstagefrightplugin 

  tCdZJQtjUpyw   2023年11月13日   17   0   0 Androidandroid

1.中断 cat/proc/softirqs 2.网络 iftop

  tCdZJQtjUpyw   2023年11月05日   40   0   0 linuxlinux

正文: mmap可以映射某个文件的某块内存区域,因此可以通过mmap和共享内存的方式将两个不同进程内的函数的所有二进制码映射到共享内存里,以实现跨进程的函数调用。 实际上,linux动态库的动态链接正是通过mmap把动态库文件映射到当前进程的堆区域中实现的。 这个功能理论上只能调用单个函数,这个函数不能再调用其他函数,因为其他相关函数没有被map到共享到内存里,可行性和实用性有待考证。 参考: cLinux:isitpossibletosharecodebetweenprocesses?StackOverflow https://stackoverflow.com/questions/151...

前言: Android在native层(c/c)提供了一种IPC机制——Binder,Binder的底层是通过共享内存来实现的,共享内存的wrapperIMemory也在Binder的工程里,而且是可以复用的,即如果想在Android的native层使用共享内存,那么可以使用IMemory体系。 源码路径:\frameworks\native\libs\binder Binder同时提供了ndk和aidl,因此同时存在java和c的api。 native头文件路径:include<binder/xxx>, \frameworks\native\libs\binder...

关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~