错误1:
frameworks/base/cmds/stagefright/recordvideo.cpp:In function 'int translateColorToOmxEnumValue(int)':
frameworks/base/cmds/stagefright/recordvideo.cpp:156:error:'OMX_TI_COLOR_FormatYUV420PackedSemiPlanar' wasnot declared in this scope
frameworks/base/cmds/stagefright/recordvideo.cpp:157:error:'OMX_QCOM_COLOR_FormatYVU420SemiPlanar' was notdeclared in this scope
frameworks/base/cmds/stagefright/recordvideo.cpp:In function 'int main(int, char**)':
frameworks/base/cmds/stagefright/recordvideo.cpp:283:error: 'kKeyFrameRate' was not declared in this scope
make: ***[out/target/product/smdkv210/obj/EXECUTABLES/recordvideo_intermediates/recordvideo.o]错误 1
make:离开目录“/home/wangran/android/Android-2.3.1”
修改方法:(1)将OMX_TI_COLOR_FormatYUV420PackedSemiPlanar修改成为
OMX_COLOR_FormatYUV420SemiPlanar
(2)将OMX_QCOM_COLOR_FormatYVU420SemiPlanar删除
(3)利用find命令查找MetaData .h的位置,对应位于
/frameworks/base/include/media/stagefright/MetaData.h,在enum中添加变量'kKeyFrameRate',对应为kKeyFrameRate=‘frte’
错误2:
frameworks/base/cmds/stagefright/audioloop.cpp:In function 'int main()':
frameworks/base/cmds/stagefright/audioloop.cpp:36:error: 'AUDIO_CHANNEL_IN_MONO'was not declared in this scope
frameworks/base/cmds/stagefright/audioloop.cpp:37:error:'AUDIO_CHANNEL_IN_STEREO'was not declared in this scope
解决方法:由于暂时没有用到audio,因此暂时屏蔽,采用的方式是使用2.3.3下面的audioloop.cpp
错误3:
targetthumb C++: stream <= frameworks/base/cmds/stagefright/stream.cpp
frameworks/base/cmds/stagefright/stream.cpp:23:33:error:media/IStreamSource.h:No such file or directory
frameworks/base/cmds/stagefright/stream.cpp:42:error: expected class-name before '{' token
frameworks/base/cmds/stagefright/stream.cpp:46:error: 'IStreamListener' was not declared in this scope
frameworks/base/cmds/stagefright/stream.cpp:46:error: template argument 1 is invalid
frameworks/base/cmds/stagefright/stream.cpp:59:error: 'IStreamListener' was not declared in this scope
frameworks/base/cmds/stagefright/stream.cpp:59:error: template argument 1 is invalid
frameworks/base/cmds/stagefright/stream.cpp:80:error: 'IStreamListener' was not declared in this scope
frameworks/base/cmds/stagefright/stream.cpp:80:error: template argument 1 is invalid
frameworks/base/cmds/stagefright/stream.cpp:In member function 'virtual void MyStreamSource::onBufferAvailable(size_t)':
frameworks/base/cmds/stagefright/stream.cpp:114:error: base operand of '->' is not a pointer
frameworks/base/cmds/stagefright/stream.cpp:114:error: 'IStreamListener' has not been declared
frameworks/base/cmds/stagefright/stream.cpp:116:error: base operand of '->' is not a pointer
frameworks/base/cmds/stagefright/stream.cpp:At global scope:
frameworks/base/cmds/stagefright/stream.cpp:123:error: expected class-name before '{' token
frameworks/base/cmds/stagefright/stream.cpp:126:error: 'IStreamListener' was not declared in this scope
frameworks/base/cmds/stagefright/stream.cpp:126:error: template argument 1 is invalid
frameworks/base/cmds/stagefright/stream.cpp:138:error: 'IStreamListener' was not declared in this scope
frameworks/base/cmds/stagefright/stream.cpp:138:error: template argument 1 is invalid
frameworks/base/cmds/stagefright/stream.cpp:In constructor 'MyConvertingStreamSource::MyConvertingStreamSource(constchar*)':
frameworks/base/cmds/stagefright/stream.cpp:166:error: no matching function for call to'android::MPEG2TSWriter::MPEG2TSWriter(MyConvertingStreamSource* const, ssize_t(*)(void*, const void*, size_t))'
frameworks/base/include/media/stagefright/MPEG2TSWriter.h:72:note: candidates are: android::MPEG2TSWriter::MPEG2TSWriter(constandroid::MPEG2TSWriter&)
frameworks/base/include/media/stagefright/MPEG2TSWriter.h:32:note: android::MPEG2TSWriter::MPEG2TSWriter(const char*)
frameworks/base/include/media/stagefright/MPEG2TSWriter.h:31:note: android::MPEG2TSWriter::MPEG2TSWriter(int)
frameworks/base/cmds/stagefright/stream.cpp:At global scope:
frameworks/base/cmds/stagefright/stream.cpp:188:error: 'IStreamListener' was not declared in this scope
frameworks/base/cmds/stagefright/stream.cpp:188:error: template argument 1 is invalid
frameworks/base/cmds/stagefright/stream.cpp:In member function 'ssize_t MyConvertingStreamSource::writeData(const void*,size_t)':
frameworks/base/cmds/stagefright/stream.cpp:230:error: base operand of '->' is not a pointer
frameworks/base/cmds/stagefright/stream.cpp:In member function 'virtual voidMyConvertingStreamSource::onBufferAvailable(size_t)':
frameworks/base/cmds/stagefright/stream.cpp:251:error: base operand of '->' is not a pointer
frameworks/base/cmds/stagefright/stream.cpp:255:error: base operand of '->' is not a pointer
frameworks/base/cmds/stagefright/stream.cpp:255:error: 'IStreamListener' has not been declared
frameworks/base/cmds/stagefright/stream.cpp:In function 'int main(int, char**)':
frameworks/base/cmds/stagefright/stream.cpp:320:error: invalid conversion from 'const char*' to 'int'
frameworks/base/cmds/stagefright/stream.cpp:320:error: initializing argument 1 of'android::sp<android::SurfaceControl>android::SurfaceComposerClient::createSurface(int, android::DisplayID,uint32_t, uint32_t, android::PixelFormat, uint32_t)'
frameworks/base/cmds/stagefright/stream.cpp:339:error: cannot allocate an object of abstract type 'MyClient'
frameworks/base/cmds/stagefright/stream.cpp:261:note: because the following virtualfunctions are pure within 'MyClient':
frameworks/base/include/media/IMediaPlayerClient.h:31:note: virtual voidandroid::IMediaPlayerClient::notify(int, int, int)
frameworks/base/cmds/stagefright/stream.cpp:341:error: 'IStreamSource' was not declared in this scope
frameworks/base/cmds/stagefright/stream.cpp:341:error: template argument 1 is invalid
frameworks/base/cmds/stagefright/stream.cpp:341:error: invalid type in declaration before ';' token
frameworks/base/cmds/stagefright/stream.cpp:352:error: invalid conversion from 'MyStreamSource*' to 'int'
frameworks/base/cmds/stagefright/stream.cpp:356:error: invalid conversion from 'MyConvertingStreamSource*' to 'int'
frameworks/base/cmds/stagefright/stream.cpp:362:error: 'class android::IMediaPlayer' has no member named 'setDataSource'
frameworks/base/cmds/stagefright/stream.cpp:363:error: 'class android::IMediaPlayer' has no member named'setVideoSurfaceTexture'
frameworks/base/cmds/stagefright/stream.cpp:363:error: 'class android::Surface' has no member named 'getSurfaceTexture'
make:*** [out/target/product/smdkv210/obj/EXECUTABLES/stream_intermediates/stream.o]错误 1
解决方法:修改Android.mk,将对应stream的内容屏蔽掉及stream下面的内容封闭掉
在Android4.0中查找media/IStreamSource.h,结合相应的信息在Android4.0下面进行查找
错误4:
问题:使用单模块编译videorecord的命令如下:
/android/Android2.3.3# source build/envsetup.sh
/android/Android2.3.3#mmm framework/base/cmds/stagefright
对应显示编译错误为:tiny210中单模块mmm编译总是显示没有什么规则可以make的
解决方法:
我想可以参考友善之臂的build-android脚本来初始化编译环境,在android根目录下执行
$source ./setenv
$cd /path/to/framework/module
$mm