1)

FILE 등의 C runtime 을 사용해서 ffmpeg 출력을 읽기하려면
result = _setmode( _fileno( stdin ), _O_BINARY );
등으로 입력을 꼭 binary 모드로 변경해야 한다

2)

출력의 wav 포맷 등 헤더에 크기가 포함되는 경우
정상적인 경우 값이 채워져 있겠지만, pipe 출력의 경우
미결정된 상황에서 데이터가 내보내지기 때문에 해당 값 체크에 유의

가령 WAV 파일의 경우 RIFF, DATA 다음에 파일 크기와 실제 데이터 길이가 오게 되지만
pipe 로 출력되는경우 해당 값이 0 으로 들어가 있다.

 

Posted by 김모작자
TAG Pipe

댓글을 달아 주세요

Firefox 빌드!

Build Note 2013. 3. 20. 17:48

개발 PC : Win 2008 R2, VS2010 SP1

준비물 :

1) Mozilla Build 툴, Firefox 소스

2) DirectX, Visual Studio 2010

3) Java SDK (+JRE)

---------------------------------------

준비 중 이슈 사항

1) DirectX Jun 2010 버전이 파일 복사 끝나고 S1023 오류 발생

-> VS2010SP1 에 포함된 Visual C++ 2010 Runtime 32/64비트 런타임 버전이 높아서 발생한다
임시로 그 둘을 제거하고 DirectX SDK 설치하고 다시 런타임을 설치하는 식으로 해결했다

 

Posted by 김모작자
TAG Firefox, S1023

댓글을 달아 주세요

FFMPEG 을 Win32 App 에서 Pipe 를 이용하는 경우 간혹 심각한 blocking 에 걸려 멈추(freezing)는 경우가 발생한다.

현재까진 libavformat/file.c 에 있는 함수군이 의심이 되어 표준 I/O 함수가 아닌 Win32 함수로 변환하여 해결하였음
(정확한 이유는 모르겠으나 이 부분 교체후 r26400 버전에선 문제 해결)

file_read, file_write 함수만 수정하였다.

 

file.c

Posted by 김모작자
TAG ffmpeg, Pipe

댓글을 달아 주세요

STATIC 으로 빌드하는 경우 아래 --static 을 붙여준다
아래 export 를 안하면 install 할때 에러가 발생한다. (스크립트 내부에서 저 변수 사용하기 때문에~)

./configure --static
make -fwin32/makefile.gcc
export INCLUDE_PATH=/usr/local/include
export LIBRARY_PATH=/usr/local/lib
export BINARY_PATH=/usr/local/bin

make install -fwin32/makefile.gcc
// cp zlib1.dll /usr/local/bin 

 

 

 

Posted by 김모작자
TAG MinGW, msys, zlib

댓글을 달아 주세요

LibFAAD2 2.7 빌드

Build Note 2012. 8. 7. 10:52

새로 받는 소스가 컴파일 에러가 나서 확인하다보니

결국 frontend 폴더 안에 있는 main.c 에서 off_t 라는 상수를 정의해서 생긴 문제여서 제거 후 빌드하였음.
(off_t 는 MSYS 에서 표준 헤더가 이미 정의 되어 있었음)

별 다른 수정 사항 필요없음.

 

-----------------

autoreconf -vif
./configure  --enable-static
make

Posted by 김모작자

댓글을 달아 주세요

 

필수 구성요소

autotools
dbus-1
a52(dec)
lua (compiler 가 있어야 함)
libmad ( http://underbit.com/products/mad )
ffmpeg (libxxxx)
alsa

xcb ( http://xcb.freedesktop.org/ )
- pthread-stubs
- libxau  

Posted by 김모작자

댓글을 달아 주세요


※ 대부분의 라이브러리는 static 빌드를 위해 --enable-static 를 포함시켰다
※ MINGW 는 2011.11.11 일 새로 받은 버전을 사용했다

1. libgsm 설치 (http://libgsm.sourcearchive.com/)
msys 에 없는 함수를 사용하지 않도록 하기 위해 inc/config.h 에 있는 매크로 주석 처리해버림
 - 해당 함수 : chown, fchown, fchmod 등
빌드 후 include/gsm.h 는 시스템 루트의 /include/gsm 폴더에 복사했다
빌드 후 lib/libgsm.a 는 시스템 루트의 /lib 에 복사했다

2. libmp3lame 설치
빌드하고 나니 /usr/local 에 설치되어서 이동시킴

3. pthread
make clean GC-static 으로 빌드해서 올림

4. OpenCore AMR 설치 (http://sourceforge.net/projects/opencore-amr/)
OpenCore Adaptive Multi Rate 라이브러리라고 하던데 잘 모르겠음.
이걸 설치하면 --enable-opencore-amrwb , --enable-opencore-armnb 둘다 사용 가능하게된다
루트 폴더의 .h 파일 두개를 시스템 include 로 복사해야한다
make install 후에 /usr/local/* 에 있는 파일 이동


5. X264 설치 (http://www.videolan.org/developers/x264.html)
make install 후에 /usr/local/* 에 있는 파일 이동
x264 는 static 으로 빌드 되어야 configure 과정에서 인식이 된다


6. Theora (http://www.theora.org/)
빌드할때 OGG 가 필요한데 표준 경로상에 ogg 헤더 파일등이 없는 경우 직접 경로를 써줘야 한다
 /usr/local 에 헤더+라이브러리가 들어가 있는 경우 아래와 같이 써준다

configure --with-ogg=/usr/local  --enable-static

7. Xvid  (http://www.xiph.org)
build/generic 에서 bootstrap.sh 를 실행하면 configure 생김
configure 를 실행 후 빌드할때 오류가 발생할 거임..
이 경우 build/platform.inc 에서 -mno-cygwin 을 제거하면 에러 없앨수있음

8. YASM 설치
http://yasm.tortall.net/Download.html

9. OGG, Vorbis, Speex, Theora (http://www.xiph.org)

10. VisualOn AAC encoder (일명 vo-aac; http://sourceforge.net/projects/opencore-amr/files/vo-aacenc/)

 

 

 

 


 

Posted by 김모작자

댓글을 달아 주세요


Visual Studio 2008 에서 WinCE 5 용 프로그램 만들던중..
4달 동안 작업한 소스를 빌드할때마다 특별한 이유없이 4~10분씩 걸리게 하던 문제였는데...
MSbuild 시스템의 플랫폼 체크하는 루틴의 문제였더라는..

몇 가지 더 있었는데..
암튼 해결 방법은

해당 프로젝트에서 사용하는 .net 버전을 따라가서...
예를 들면 난 3.5 였으니

C:\Windows\Microsoft.NET\Framework\v3.5

로 가서

Microsoft.CompactFramework.Common.targets 파일을 뒤져보자!!
xml 파일이라서 복잡한데.. 이중에..


    <Target
        Name="PlatformVerificationTask">
        <PlatformVerificationTask
            PlatformFamilyName="$(PlatformFamilyName)"
            PlatformID="$(PlatformID)"
            SourceAssembly="@(IntermediateAssembly)"
            ReferencePath="@(ReferencePath)"
            Condition="'$(SkipPlatformVerification)' != 'true'"
            TreatWarningsAsErrors="$(TreatWarningsAsErrors)"
            PlatformVersion="$(TargetFrameworkVersion)"/>
    </Target>


위와 같은 코드를 찾은 후 위에 두꺼운 글씨로 된 부분을 복사해 넣고나서...
저장하고~

[내 컴퓨터]의 시스템 환경 변수에 SkipPlatformVerification 는 true 를 설정해준다


이렇게 하고 나니깐 비로서 빌드 시간이 줄어들었다..

으미 아까운 내 시간..

Posted by 김모작자

댓글을 달아 주세요