- 博客(355)
- 资源 (22)
- 收藏
- 关注
原创 蓝牙headset和headfree简介
蓝牙耳机功能,也就是bluetooth headset /headfree profile,实现起来比想象的复杂。早期的蓝牙规范只定义了headset的profile, headset的实现原理是在hci层之上扩展一个接口,传输sco面向连接的同步音频数据包,限定音频流只能是单声道8k的话音级别的pcm。随着需求发展明显已经不能满足了,于是又补充了a2dp协议,a2dp协议在l2cap上层
2012-04-17 11:27:22 6911
原创 标准RTSP 消息的错误代码
标准RTSP消息的错误代码–在应答消息的第一行表示”100” ; Continue (all 100 range)“110”; Connect Timeout “200” ; OK ”201” ; Created ”250” ; Low on Storage Space ”300” ; Multiple Choices ”301” ; Moved Permane
2012-04-09 15:05:16 21614
原创 linux man查看函数帮助提示没有函数手册页条目的解决方法
例如,在ubuntu系统终端中输入man pthread_join,查看pthread_join函数的帮助,但提示:没有 pthread_join 的手册页条目要解决此问题,需要安装额外的帮助包文件manpages-posix-dev执行安装此包的命令,选择Y后,安装成功,再执行man命令查看帮助即可。sudo apt-get install manpages-po
2012-04-01 09:34:26 10430 1
原创 rtsp流媒体buffer填充的处理过程
NuPlayer流媒体播放器中从网络上取得的rtp包在解码和显示时所用buffer的填充和清空的机制,与stagefright框架播放本地视频时的处理流程类似。都是通过回调函数fillbuffer及emptybuffer来实现的。NuPlayer中的ACodec与Stagefright中的OMXCodec的作用相似。以下是rtsp流媒体中填充待解码的buffer,以及把解码后的buff
2012-03-23 16:53:32 12191 5
原创 ICS4.0.3创建NuPlayer的处理流程
ICS4.0.3中播放RTSP流媒体使用的播放器框架是NuPlayer,现在就分析创建NuPlayer的处理流程。1.创建Nulayer所做的处理在NuPlayerDriver::NuPlayerDriver()构造函数中:1.1 创建了ALooper对象mLooper,并调用了 mLooper->start函数,优先级为PRIORITY_AUDIO。 在ALooper:
2012-03-16 10:39:13 15546 12
原创 理解ICS Surface和SurfaceFlinger的处理流程
首先看下ISurfaceComposer接口ISurfaceComposer定义了基础接口,供客户端和Server端交互使用。ISurfaceComposer接口的派生类图示:------------------------------------------------------------------接口ISurfaceComposerClient->Bn
2012-03-16 10:30:44 4110
原创 设置RTSP, RTP和RTCP端口号
1.设置RTSP端口号设置RTSP端口号的处理位于ARTSPConnection.cpp文件中,首先从url中获取端口号,如果读取不到,则设置为默认端口554。代码处理如下:ARTSPConnection::ParseURL( const char *colonPos = strchr(host->c_str(), ':'); if (colonPos != NUL
2012-03-13 09:42:30 32970 1
原创 NuPlayer reset处理流程
1.NuPlayerDriver::reset() mPlayer->resetAsync();// 执行异步reset while (mResetInProgress) { // 等待reset完成,如果5秒未完成,则会出现ANR mCondition.wait(mLock); }2.NuPlayer::resetAsync()发送kWhatRe
2012-03-12 10:23:50 6661 1
原创 AudioPlayer的处理流程
首先需要注意的是,AudioPlayer处理的是已经解码后的数据1.创建AudioPlayer对象(1)在 AwesomePlayer::play_l()函数中创建了AudioPlayer对象,并且在AwesomePlayer.cpp文件中,只在此函数中创建过AudioPlayer对象 if (mAudioSource != NULL) { if (mAudioP
2012-03-05 13:16:12 11767 2
原创 视频码率,帧率和分辨率的联系与区别
视频码率,帧率和分辨率到底哪一个影响电影的清晰度码率:影响体积,与体积成正比:码率越大,体积越大;码率越小,体积越小。码率就是数据传输时单位时间传送的数据位数,一般我们用的单位是kbps即千位每秒。也就是取样率(并不等同与采样率,采样率的单位是Hz,表示每秒采样的次数),单位时间内取样率越大,精度就越高,处理出来的文件就越接近原始文件,但是文件体积与取样率是成正比的,所以几乎所有的编...
2012-03-01 09:23:50 142619 19
转载 UDP传输包大小
在进行UDP编程的时候,我们最容易想到的问题就是,一次发送多少bytes好?当然,这个没有唯一答案,相对于不同的系统,不同的要求,其得到的答案是不一样的,我这里仅对像ICQ一类的发送聊天消息的情况作分析,对于其他情况,你或许也能得到一点帮助:首先,我们知道,TCP/IP通常被认为是一个四层协议系统,包括链路层,网络层,运输层,应用层.UDP属于运输层,下面我们由下至上一步一步来看:
2012-02-29 15:52:15 3141
转载 CDMA、GPRS、EDGE、WIFI网速对比
核心提示:CDMA、GPRS、EDGE、WIFI网速对比,大家知道,上网包括从网络获取数据和向网络传输据这两个方向的速度,在很多时候这两个方向的带宽或者速度是不一样。接收速度和上传速度 大家知道,上网包括从网络获取数据和向网络传输据这两个方向的速度,在很多时候这两个方向的带宽或者速度是不一样。这在专业术语中称之为下行带宽 (速度)和上行带宽(速度),我们可以理解为接收速度和
2012-02-29 11:29:05 2926
原创 AMessage post方法的处理流程
Amessage post方法的处理流程1.AMessage::post(int64_t delayUs) call gLooperRoster.postMessage(this, delayUs) 2.ALooperRoster::postMessage call postMessage_l(msg, delayUs) 3.ALooperRoster::pos
2012-02-13 16:27:22 3222
原创 The calling sequence for ALooperRoster::deliverMessage
1. ALooper::start() while runOnCallingThread is true call ALooper::loop()2. ALooper::loop() call gLooperRoster.deliverMessage(event.mMessage); gLooperRoster is defined in ALoope
2012-02-13 15:34:34 2983
原创 屏幕分辨率一览
Sub-QCIF 128x96QCIF 176x144CIF 352x2884CIF 704x576QVGA 240×320HVGA 480*320VGA 640X480SVGA 800X600XGA 1024X768SXGA 1280X1024SXGA+ 1400X1050UXGA 1600X1200
2012-01-20 11:56:49 2783
原创 我的2011-移动开发的梦想
2011,我的移动开发梦想开局之年,终于成功的跨越了。回想这几年走过的开发之路,蜿蜒曲折。最初做对日外包,什么样工作的都做,金融证券,网站开发,各种嵌入式设备上的系统和应用开发,BREW手机软件,Android刚出世时,又做过一段Android调查及开发。从岗位上来说,测试,编码,设计又都涉猎过。经历虽然丰富了,但真正做久又精通的却没有,对于专业技术人员来说,并不是一件好事,没有积淀,很难精通
2011-12-30 15:32:27 6736 4
原创 RTSP连接服务器和从服务器接收数据的处理流程
RTSP连接服务器是否成功,以及是否从服务器接收到实际播放的数据,主要是判断两个linux select函数的执行结果。1.连接服务器的处理过程ARTSPConnection::onConnect(const sp &msg) int err = ::connect( mSocket, (const struct sockaddr *)&remote,
2011-12-27 17:50:23 4931 2
原创 音频seekTo的实现
1.音频的seekTo最终是在AudioPlayer类中实现的,AudioPlayer::seekTo函数status_t AudioPlayer::seekTo(int64_t time_us) { Mutex::Autolock autoLock(mLock); mSeeking = true;// 设置seek标志为true mReachedEOS = fals
2011-12-25 22:18:01 4231 2
原创 thumbnail的处理流程和读取缩略图thumbnail所在sample的index的方法
取得video thumbnail的处理流程如下图所示,取得image的thumbnail的处理流程类似,只是取得image thumbnail的函数变成了ThumbnailUtils.createImageThumbnail。Thumbnail的返回类型是Bitmap。寻找缩略图所在sample的index的方法在SampleTable::findThumbnailSample函数中
2011-12-20 16:54:08 5430
原创 Android CTS包下载地址
http://source.android.com/compatibility/downloads.html这里可以下载到各个版本的cts例如,针对2.3的CTS r10:Android 2.3 R10 Compatibility Test Suite (CTS)点击可以下载压缩包:android-cts-2.3_r10-linux_x86-arm.zip 目前最新的是4.0的
2011-12-20 14:22:56 10754
原创 MSM7225 600MHZ CPU和高通MSM 7201A 528MHz CPU的比较
我就以这两款CPU做个比较▼↓CPU比较:华为U8500高通MSM7225 600MHZ CPU和高通MSM 7201A 528MHz CPU 比较再分析CPU:7201是7200A去掉了H264的硬编码7225是7201继续去掉TV-OUT,USB-HOST等小玩意,大幅度削弱显示能力性能方面MSM7201强于msm7225 而采用了 MSM7200A 是
2011-12-15 10:28:08 4248 2
原创 Android ICS创建StagefrightPlayer播放器的过程
ICS相比GB,在创建播放器时有少许变化。MediaPlayer::setDataSource(const sp& player)函数只是简单的把函数名改为MediaPlayer::attachNewPlayer(const sp& player),内部处理基本没有变化。MediaPlayerService类去掉了MediaPlayerService::create的重载函数,并且在cre
2011-12-14 14:58:49 3867 2
原创 http streaming缓冲buffer更新进度的处理流程
对于http streaming,更新buffer进度的处理在AwesomePlayer::onBufferingUpdate()函数中,首先判断mCachedSource != NULL,即是http://流媒体的情况下,通过getBitrate(&bitrate)函数取得bitrate,然后计算出buffer的进度,通过notifyListener_l(MEDIA_BUFFERING_UPDA
2011-12-12 18:13:27 12746 3
原创 seekbar拖动时返回到拖动开始位置的原因
google源码中默认seek操作最小时间间隔为250ms,如果从开始seek到seek结束花费的时间小于等于250ms,则认为不是有效的seek操作,表现为seekbar上的进度块会回到拖动的开始位置继续播放。代码文件:packages/apps/Music/src/com/android/music/MediaPlaybackActivity.java private OnS
2011-12-06 09:22:27 5885 4
原创 ANR超时时间的定义
ANR超时时间在ActivityManagerService.java文件中进行了定义 1.broadcast超时时间为10秒 // How long we allow a receiver to run before giving up on it. static final int BROADCAST_TIMEOUT = 10*1000; 2.按键无响应的超时时间为5
2011-12-03 22:10:35 16277 2
原创 联通和电信的流媒体播放
1.联通网址:http://www.wo.com.cn(1)HTTP 格式手机电视/点播/免费点播/英伦平安一路行/大使致辞-英伦行/观看WIFI/3G 使用的都是 Stagefright 框架。(2)RTSP格式手机电视/直播/卫视频道/BTV 北京/北京卫视/观看WIFI使用Stagefright框架, 不能使用Opencore 。 3G
2011-12-02 15:52:34 2870
转载 GNU C库函数参考手册(2)
逍遥飞狐多媒体作坊 译上一页 下一页错误报告许多GNU C库中的函数都监测和报告错误的情况,而且有时候你的程序需要检查它们以得到错误的情形。比如说:你打开了一个输入文件,你必须检查这个文件是否正确的打开了,而且在你调用一个库函数出错的时候打印出错信息或采取其他的措施。这一章描述错误报告功能是怎么工作的。要使用这个功能的话,你的程序必须包含头文
2011-11-15 12:37:14 4486
转载 errno返回值的对应错误码
errno返回值的对应错误码 #ifndef _ASM_GENERIC_ERRNO_BASE_H #define _ASM_GENERIC_ERRNO_BASE_H #define EPERM 1 /* Operation not permitted */ #define ENOENT 2 /*
2011-11-15 12:35:51 3190
原创 [整理]Stagefright框架中视频播放流程
Stagefright框架中视频播放流程1.创建playerengine// 设置数据源,以及 audio sinkMediaPlayer::SetDataSource(PATH_TO_FILE)-> MediaPlayerService::create->MediaPlayerService::Client::setDataSource->GetPlayerTyp
2011-10-27 14:42:17 9505 4
转载 AEC、AGC、ANS是什么意思?
AGC是自动增益补偿功能(Automatic Gain Control),AGC可以自动调麦克风的收音量,使与会者收到一定的音量水平,不会因发言者与麦克风的距离改变时,声音有忽大忽小声的缺点。 ANS是背景噪音抑制功能(Automatic Noise Suppressi
2011-09-13 14:10:40 30293 1
原创 【整理】视频中IBP帧的介绍和判定方法
mpeg4视频中,I帧、p帧、B帧的判定mpeg4的每一帧开头是固定的:00 00 01 b6,那么我们如何判断当前帧属于什么帧呢?在接下来的2bit,将会告诉我们答案。注意:是2bit,不是byte,下面是各类型帧与2bit的对应关系: 00: I Frame
2011-08-26 16:10:16 8520
原创 MediaInfo用来分析视频和音频文件的编码和内容信息的超好用工具
MediaInfo简介MediaInfo 用来分析视频和音频文件的编码和内容信息。MediaInfo 是自由软件 (免费使用、免费获得源代码,许可协议:GNU GPL/LGPL)下载地址:windows版:http://mediainfo.source
2011-08-25 15:46:39 4662
原创 MediaRecorderClient决定使用stagefright还是opencore实现录音录像的代码实现
android录音或者录像时,决定是使用stagefright还是opencore框架的代码实现位于MediaRecorderClient类中,代码实现如下:MediaRecorderClient::MediaRecorderClient(const sp& service, pid_t pid){ LOGV("Client constructor"); mPid = pid;
2011-08-13 17:24:30 3960 2
原创 3gp或者mp4文件的duration长度为0,在SampleIterator::seekTo函数返回错误码-1007
如果3gp或者mp4文件的duration长度为0,则会在SampleIterator::seekTo函数返回错误码-1007,即ERROR_MALFORMED错误。if (mTable->mSampleToChunkOffset || mTable->mChunkOffsetOffset || mTable->mSampleSize
2011-08-06 14:41:40 3274
原创 MediaErrors.h定义了多媒体格式的错误码,如常见的-1007错误
MediaErrors.h定义了多媒体格式的错误码,如常见的-1007错误为ERROR_MALFORMED,表示文件格式错误。例如log输出:E/MediaPlayer( 649): error (1, -1007)其中-1007即是ERROR_MALFORMED。错误码的定义位于:frameworks/base/include/media/stagefright/MediaErr
2011-08-06 13:45:16 9641 1
转载 Google Android Hidden Secret Codes
NOTE: This article has been featured by many Google Android websites and magazines. AskVG.com was the first website posting these unique cod
2011-07-26 16:42:53 2193
转载 Android智能指针sp wp详解
来源:Linux社区 作者:李枝果研究Android的时候,经常会遇到sp、wp的东西,网上一搜,原来是android封装了c++中对象回收机制。说明:1. 如果一个类想使用智能指针,那么必须满足下面两个条件: a. 该类是虚基类RefBase的子类或间接子类 b.
2011-07-19 00:21:04 2280 1
原创 Android API Levels
Android docs可以查到很多有用的内容,例如要查看API Levels,可以通过在Dev Guide选项卡中点击左侧Appendix 下的Android API Levels查看,会在右侧 显示API Levels的内容。Android 官方在
2011-07-16 20:00:49 1833
转载 关于Android的nodpi,xhdpi,hdpi,mdpi,ldpi
首先是几个基本概念:1.屏幕尺寸Screen size即显示屏幕的实际大小,按照屏幕的对角线进行测量。为简单起见,Android把所有的屏幕大小分为四种尺寸:小,普通,大,超大(分别对应:small, normal, large, and extra large).应用程序可以为
2011-07-07 09:30:45 1512
SGP.02_v3.2_updated.pdf
2020-08-17
《音视频开发进阶指南:基于Android与iOS平台的实践》第4章AudioPlayer的Android Studio工程源码
2019-04-26
安卓爱笑话ijoke
2015-08-04
Google Play services com.google.android.gms-7.8.93_(2104405-448)
2015-07-28
android个税通2.0
2011-07-06
android 天气预报软件
2010-11-19
Android秒表计时器安装文件
2010-08-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人