본문 바로가기

OldStory/WORKS55

SWIG & ANDROID jni 사용하여 java에서 c언어 함수를 호출 할 때 swig를 사용하면 순쉽게 헤더 파일과 wrapper 소스를 만들 수 있다. http://www.swig.org/Doc2.0/Android.html 2013. 10. 10.
Fix multiple definitions in library To fix the multiple definitions add: arm-linux-androideabi-ar -dv libavcodec.a log2_tab.o arm-linux-androideabi-ar -dv libavutil.a log2_tab.o 2013. 5. 10.
선형 베어링 aliexpress에서 구입한 선형 베어링이 도착했다. 직경 8mm 로 잘 못 구입해서 6mm를 다시 구입했다. 무료 배송으로 3주 정도 걸렸다. 가격은 8mm 10개에 $6.35 6mm 10개에 $10 [hgallery3 id="88" render="single_img"] Y축 받침대로 집에 있던 미드웨스트 발사나무를 사용하려고 한다. 발사나무는 화방에서 구입 가능 하다. [hgallery3 id="89" render="single_img"] 발사나무가 단단하지 않아 베어링을 대고 눌러 주면 페인다. [hgallery3 id="91" render="single_img"] [hgallery3 id="90" render="single_img"] 베어링 봉과 연결 된 모습. 아직 접착은 하지 않았다. 발사 .. 2013. 4. 26.
Gstreamer Android SDK build Android용 Gstreamer 를 우분투 리눅스에서 빌드 하였다. git 사용하여 소스를 가져 온다. $ git clone git://anongit.freedesktop.org/gstreamer-sdk/cerbero 빌드 환경를 만든다. $ cd cerbero $ ./cerbero-uninstalled -c config/cross-android.cbc bootstrap SDK 를 빌드 한다. $ ./cerbero-uninstalled -c config/cross-android.cbc package gstreamer-sdk 빌드가 성공적으로 되면 다음 파일들이 생성 된다. gstreamer-sdk-android-arm-2012.11-runtime.tar.bz2 gstreamer-sdk-android-a.. 2013. 3. 5.
Gstreamer android tutorial Android gatreamer 공부중이다. 윈도우에서 개발환경 설정하고 첫번째 tutorial를 빌드 했다. Cygwin 환경이 잘못 되었는지 pkg-config 에서 찾아준 라이브러리 경로를 ndk 에서 인식이 안되 메이크 파일에 일일이 넣어 빌드 성공. 2013. 2. 26.
Android PDK 환경에서 빌드 PDK에 사용하는 API 함수나 클래스는 안드로이드 NDK 개발 환경에서는 사용할 수 없다. 이럴 때는 PDK에서 개발 해야 한다. PDK 소스를 받아 make 를 사용하여 먼저 빌드 한다. 추가하려는 소스를 external 풀더에 새로 풀더를 만들고 Android.mk 파일을 수정 해 준다. NDK와 PDK의 Android.mk 는 유사 하지만 PDK에서는 다음을 추가 해 준다. LOCAL_MODULE_TAGS := optional 그리고 logcat 관련 하여 NDK 에서는 를 include 해 주었지만 PDK 에서는 LOG_TAG를 정의해 주고 를 추가 해 주어야 한다. #define LOG_TAG "MyApplication" #include Android.mk 에는 log 관련하여 libutils.. 2012. 4. 25.
Software Reset Macro Software reset macro for ATMEL AT91SAM9R64/RL64 [cpp ] #define soft_user_reset() asm volatile ( /* disable IRQs */ "MRS R0, CPSR nt" "ORR R0, R0, #0x80 nt" "MSR CPSR_c, R0 nt" /* change refresh rate to block all data accesses */ "LDR R0, =0xFFFFEA04 /* AT91C_SDRAMC_TR*/ nt" "LDR R1, =1 nt" "STR R1, [R0] nt" /*prepare power down command*/ "LDR R0, =0xFFFFEA10 /* AT91C_SDRAMC_LPR */ nt" "LDR R1, =.. 2012. 3. 2.
queue queue를 만들어 쓰다가 동작이 불안하여 검색 결과 directshow에서 제공하는 CQueue class를 알게되었다. "DirectShowBaseClasseswxutil.h " 에 포함 되어 있다. 사용법은 Streams.h 헤더파일을 포함 식키고 타입 캐스팅 하면 된다. #include CQueue m_queue_video; // put queue VInputPacket *pkt = new VInputPacket(); m_queue_video.PutQueueObject(pkt); // get queue VInputPacket *pkt = m_queue_video.GetQueueObject (); 다음은 CQueue 소스 [cpp] // CQueue // // Implements a simple Q.. 2011. 12. 22.
ffmpeg compile options ffmpeg, ffplay and ffprobe 를 mingw에서 컴파일 하면 프로그램 실행시 메시지가 뜨지 않아 디버깅이 되지 않는다. 이때는 config.mak 파일의 SDL_LIBS 항목과 EXTRALIBS 항목의 "-mwindows" 를 삭제 하고 다시 빌드 하면 메시지가 뜬다. 2011. 11. 16.
ARM SYMPOSIUM ARM CONNECTED COMMUNITY TECHNICAL SYMPOSIUM 2011에 참석했다. 2011. 11. 15.
ffmpeg MPEG TS Read operation ffmpeg MPEG TS read함수 분석 *av_find_stream_info함수에서 오디오 비디오 데이터 읽는 과정에서 호출되는 함수 ( ffplay.c) [c] decode_thread(void *arg) av_open_input_file(...); av_read_frame_internal(ic, &pkt1); av_read_packet(s, &cur_pkt); s->iformat->read_packet(s, pkt); (mpegts_read_packet) ts->pkt = pkt; handle_packets(ts, 0); read_packet(s, packet, ts->raw_packet_size); handle_packet(ts,packet); [/c] * av_open_input_file(... 2011. 9. 29.
Stack overflow MSVC 사용하여 빌드한 프로그램 실행시 stack overflow 가 발생하는 경우 프로젝트 속성의 링커 => 시스템 => 스택 예약크기를 크게 해주면 해결 된다. 2011. 9. 2.
PYUV: Raw video sequence player yuv raw sequence player It plays RGB and YUV sequences It runs under Windows and under Linux It is not written in Java or .NET, so it is extremely fast It uses wxWidgets as GUI, making it consistent with your preferred environment It is free: you can use it for your purposes without any sort of restriction Help Read the help to learn the capabilities of this program. Download Download it from he.. 2011. 6. 28.
T-DMB Video 표준 H.264/AVC T-DMB video 표준으로 H.264/AVC를 사용한다. H.264/AVC 의 정식 표준 명칭은 " ITU-T Rec. H.264 | ISO/IEC 14496-10 " 이다. T-DMB 는 H.264표준의 Baseline profile과 level1.3 을 사용한다. 베이스라인 프로파일은 B 프레임을 사용하지 않으며, 레벨 1.3은 최대 해상도를 CIF(352x288)로 제한 한다. 자세한 내용은 wiki 페이지 참조.. http://howto.homelinux.com/wiki/H.264/AVC 2011. 6. 9.
DirectDrawEnumerateEx DirectDraw의 모니터 정보를 얻을 수 있는 함수 DirectDrawEnumerateEx를 사용할 때 에러가 발생하여 리턴값이 NOTIMPL 인 경우 프로젝트의 속성에서 일반탭의 문자 집합를 유니코드(Unicode) 문자 집합에서 멀티바이트(Multibyte) 문자 집합으로 변경하면 해결 된다. 2011. 6. 3.
ffmpeg release error Visual studio 2008에서 ffmpeg 라이브러리를 링크하여 프로그램 할 때 debug 에서는 동작 하는데 release에서는 동작하지 않는 문제가 있었다. 이런 경우 Visual Studio의 프로젝트 속성의 C/C++ 최적화를 "사용 안 함(/Od)" 로 하면 정상 동작 한다. 2011. 6. 3.
Using custom I/O callbacks with ffmpeg ffmpeg 라이브러리를 사용하여 프로그램내 버퍼에서 데이터를 읽어 디코딩하는 방법. http://cdry.wordpress.com/2009/09/09/using-custom-io-callbacks-with-ffmpeg/ 2011. 4. 12.
T-DMB & ffmpeg wiki 페이지에 T-DMB & ffmpeg 추가 하였습니다. FFMEPG FFMPEG - ffprobe 분석 CompileFFMPEG - Windows MigGW 상에서 ffmpeg 컴파일 방법 T-DMB mpegts - MPEG2 TS packet 구조 및 bit stream 분석 MPEG_TS_PMT - MPEG2 TS의 PMT packet 분석 PictureParameter - MPEG4 Picture parameter SequenceParameter - MPEG4 Sequence parameter BSAC - BSAC bit stream 분석 DigitalTVDumpApp - T-DMB & DVB-H demultiplexer ( video & audio dump from MPEG2 TS stre.. 2011. 4. 12.
ffmpeg ffmpeg wiki 페이지에 추가 * 윈도우에서 컴파일 방법 http://howto.homelinux.com/wiki/ffmpeg 2011. 2. 23.
ffmpeg - TDMB T-DMB 의 오디오(BSAC , ISO/IEC 14496-3 MPEG4 Audio)와 비디오(h.264 avc, ISO/IEC 14496-10 MPEG4 Video)는 MPEG2 TS(ISO/IEC 13818-1)를 사용하여 다중화 되어 있으며 ISO/IEC14496-1 MPEG4 System 계층을 사용하여 ES들 간의 동기화를 제공한다. 버전 0.6.1 기준으로 ffmpeg에서는 MPEG4 system 계층과 BSAC 오디오 디코딩을 지원하지 않기 때문에 ffmpeg에서 T-DMB MPEG2 TS dump 파일은 재생 하지 못 한다. MPEG4 system를 지원하기 위해서는 libavformat/mpegts.c 파일의 PES parsing부분에 MPEG4 SL parsing기능을 추가적으로 구현해.. 2011. 2. 21.
SMDKV210 삼성 S5PV210 레퍼런스 보드에 u-boot 커널 및 FROYO을 설치 했다. 자세한 내용은 wiki page 참조 상세 스팩은 여기에 : http://www.yicsystem.com/contents/korea/smdkv210.htm 2010. 11. 24.
커널쓰레드의 우선 순위 변경 리눅스 드라이버의 커널 쓰레드를 사용하는 경우 쓰레드의 우선순위(priority)를 변경하고 싶은 경우 set_user_nice 함수를 사용하여 변경 할 수 있다. 일반적으로 우선순위를 설정하지 않은 커널 쓰레드의 우선순위의 값은 -5이며 set_user_nice함수에서 설정할 수 있는 값의 범위는 -20에서 19 이다. -20 이 우선 순위가 가장 높고 19가 가장 낮다. 사용 방법은 커널 쓰레드 함수 내에서 다음과 같이 호출 한다. set_user_nice(current, -20); 각 쓰레드의 우선 순위 확인 방법은 콘설에서 "ps -elf" 명령을 사용하여 확인 할 수 있으며 NI 값이 우선순위를 나타 낸다. root@at91sam9xeek:~# ps -elf F S UID PID PPID C P.. 2010. 10. 27.
MS .NET Framework 3.5 설치 문제 삼성 모바일 SDK 1.3(Samsung_Windows_Mobile_SDK_1.3.0_Installer.msi) 설치 하려면 .NET Framework 3.5 를 먼저 설히 해야 한다. 그런데 .NET 3.5가 설치가 안되는 문제가 발생 하였다. 다음과 같은 에러가 발생 했다. Microsoft .NET Framework 2.0a: [2] Error: Installation failed for component Microsoft .NET Framework 2.0a. MSI returned error code 1603 그래서 기존에 설치된 .NET 버전을 모두 삭제 하고 다시 설치 하여도 마찬가지 문제가 발생 하였다. 그런데 .NET 2.0설치 할 때 레지스트리에 값을 쓸 때 문제가 발생하여 무시 하였는데.. 2010. 10. 22.
ctrl-c handler 리눅스 콘솔 프로그램에서 ctrl-c 를 눌러 프로그램을 종료하기 전에 처리해야 할일이 있다면 signal함수를 사용하여 처리 함수를 등록하면 된다. #include #include bool forever = true; void sighandler(int sig) { forever = false; } int main(int argc, char *argv[]) { signal(SIGABRT, &sighandler); signal(SIGTERM, &sighandler); signal(SIGINT, &sighandler); while(forever) { } } 더 자세한 내용은 여기에 http://www.cplusplus.com/forum/beginner/1501/ 2010. 10. 21.