1、./frameworks/base/media/jni
JAVA本地调用部分。编译后生成的目标是libmedia_jni.so.
android_media_MediaPlayer.cpp: MediaPlayer 的JAVA本地调用部分。
它定义了一个JNINativeMethod(JAVA本地调用方法)类型的数据gMethods,
用来描述,接口的关联信息。
android_media_MediaRecorder.cpp: 定义了录音的本地调用实现。
android_media_AmrInputStream.cpp: amr 编码相关的本地调用实现。
android_media_MediaScanner.cpp: 媒体扫描相关的本地调用实现。
soundpool/android_media_SoundPool.cpp:定义了音频系统的本地调用实现。
2、 ./frameworks/base/media/libmedia
./frameworks/base/include/media/
这里为多媒体的的底层库,编译生成libmedia.so.这个库处于android多媒体架构的核心
位置,它对上层提供的接口主要有MediaPlayer、MediaRecorder、MediaScanner等类.
android.meida.* 就是通过libmedia_jni.so 调用libmedia.so实现的接口实现的。
还需要注意的是MediaPlayerInterface.h 这个头文件,他定义了MediaPlayer的
底层接口。它主要定义了下面的类:
MediaPlayerBase:MediaPlayerInterface的抽象基础类,里面包含了音频输出、
视频输出、播放控制等的基本接口。
MediaPlayerInterface、MediaPlayerHWInterface 继承自MediaPlayerBase针对不同输出作出的扩展。
3、 ./frameworks/base/media/libmediaplayerservice
这是多媒体的服务部分,编译生成libmediaplayerservice.so.
MediaPlayerService.cpp 实现了一个名字为media.player的服务,MediaPlayer通过
IPC同其实现通讯,以建立合适的播放器。
在MediaPlayerService.cpp 会根据playerType的类型来决定创建不同的播放器。
现有的播放器类型有PVPlayer、MidiFile、VorbiPlayer三个播放器类,他们都是有继承
MediaPlayerInterface得到,具有相同的播放接口。我们这里可以通过继承MediaPlayerInterface
的方法,实现增加新的播放器实现。
分享到:
相关推荐
多媒体底层库在`frameworks/base/media/libmedia/`,编译后为`libmedia.so`,多媒体服务部分在`frameworks/base/media/libmediaplayerservice/`,编译为`libmediaplayerservice.so`。OpenCore相关的代码位于`...
底层库在以下的目录中:`frameworks/av/media/media/libmedia`。这部分的内容被编译成库 `libmedia.so`。 4. Audio 的服务部分:`/frameworks/av/services/audio` 和 `/frameworks/av/services/audiopolicy/`。这...
MediaPlayer 部分的头文件在 frameworks/base/include/media/ 目录中,这个目录是和 libmedia.so 库源文件的目录 frameworks/base/media/libmedia/ 相对应的。主要的头文件有以下几个:IMediaPlayerClient.h ...
Audio 的框架部分头文件路径:frameworks/base /include/media/ 源代码路径:frameworks/base /media/libmedia/ Audio 本地框架是 media 库的一部分,本部分内容被编译成库 libmedia.so,提供音频部分的接口(包括...
预览框架处理摄像头数据的显示,这部分代码主要在`frameworks/base/graphics/java/android/view/SurfaceView.java`和`frameworks/base/media/java/android/media/MediaRecorder.java`。SurfaceView用于显示摄像头的...
### Wi-Fi、NFC在Android架构中的应用与技术解析 #### 一、Android系统架构概述 Android系统由Google公司开发,是一款广泛应用于智能手机和平板电脑的操作系统。Android系统基于Linux内核,具备高度的定制性和扩展...
(1)Audio的Java部分代码路径:frameworks/base/media/java/android/media与Audio相关的Java包是android.media,主要包含AudioManager和Audio系统的几个类。 (2)Audio的JNI部分代码路径:frameworks/base/core/...
2. **MediaCodec**: MediaCodec是Android的编码和解码服务,位于`frameworks/av/media/libmedia`下的`libmedia.so`库中。这个组件提供了硬件加速的编码和解码能力,支持多种音频和视频格式,如H.264、AAC等。通过`...
在源码中,MediaRecorder的实现位于`frameworks/base/media/libstagefright/`。 5. **Surface** 在拍照过程中,Surface对象用于接收来自相机的数据流,可以是显示预览的SurfaceView或者用于图像处理的Surface...
[work@VM4:~/android_eRD3.1] $> git add src/frameworks/base/media/java/android/media/Ringtone.java [work@VM4:~/android_eRD3.1] $> git commit -m "Defect #12620" Created commit 683e099: Defect #12620 ...
- **Audio的框架部分**:头文件位于`frameworks/base/include/media`,源代码在`frameworks/base/media/libmedia`,编译成`libmedia.so`。 - **AudioFlinger**:代码位于`frameworks/base/libs/audioflinger`,...
3. **Audio的框架部分**:包括头文件`frameworks/base/include/media/`和源代码`frameworks/base/media/libmedia/`,编译为libmedia.so库,提供了基于Binder IPC机制的Audio接口。 4. **AudioFlinger**:位于`...
- **源代码路径**:`frameworks/base/media/libmedia/` - **主要内容**:这部分内容被编译为`libmedia.so`库,提供了基于Binder IPC机制的Audio接口。 ##### 4. AudioFlinger - **代码路径**:`frameworks/base/...
在`frameworks/base/media/java/android/media`目录下的源码中,你可以研究它们的实现细节。 4. **音频权限和Policy管理**:在Android中,应用需要获取相应的权限才能访问麦克风。这些权限管理在`frameworks/base/...
5. **库和框架**:包括了各种库文件和API,如OpenGL ES、SQLite、Media Framework等,它们在`frameworks/base`和`system/framework`目录下。 6. **用户界面(UI)**:Android的UI框架包括视图系统、布局管理等,由`...
Camera 部分的头文件在 frameworks/base/include/ui/目录中,这个目录是和 libmedia.so 库源文件的目录 frameworks/base/libs/ui/ 相对应的。 Camera 主要的头文件有以下几个: * ICameraClient.h * Camera.h * ...
- `frameworks/av/media/libmediaplayerservice/ActivityManager.cpp`:媒体播放服务中与ActivityManager交互的部分。 - `frameworks/base/core/jni/android_app_NativeActivity.cpp`:原生Activity与Java层交互的...
- **源代码路径**:`frameworks/base/media/libmedia/` - **生成库**:`libmedia.so` 本地框架层是Audio系统的核心部分,它包含了Audio系统的所有本地接口实现,以及基于Binder IPC机制的通信逻辑。 ##### 4. ...