faad2

홈페이지: http://www.audiocoding.com/faad2.html

FAAC로 인코딩된 AAC 오디오 데이터의 디코더이며, FAAD보다 훨씬 더 안정적이며 속도도 빠르다.
FAAD2의 개발은 아주 많이 이루어진 상태이며, MPEG-4와 MPEG-2 Main LC(Low Complexity), HE, LTP, LD, ER 등을 지원한다.

FAAD2 is an open source MPEG-4 and MPEG-2 AAC decoder, it is licensed under the GPLv2 license.
For commercial licensing of the FAAD2 AAC decoder library, please contact: Mpeg4AAClicense@nero.com

Features:
– Portable
– Reasonably fast
– LC, Main, LTP, SBR, PS support
– DRM support through DreaM
– DAB+ support

다운로드: 2.7

faac

홈페이지: http://www.audiocoding.com/faac.html

FAAC(Freeware Advanced Audio Coder)의 약어로 AAC 오디오 인코더를 말한다. FAAC는 현재 MPEG-4 LTP, main, Low Complexity를 지원하고 있다.

faac 1.28 버전을 MinGW에서 컴파일시 패치를 해야한다. 패치는 여기서 다운받고.
패치방법은 소스코드내에서 patch -p0 < faac-01-buildfixes.patch 를 수행. FAAC is an MPEG-4 and MPEG-2 AAC encoder. Note that the quality of FAAC is not up to par with the currently best AAC encoders available. Features: - Portable - Reasonably fast - LC, Main, LTP support - DRM support through DreaM 다운로드: 1.28

예제

#include <faac.h>
#include <stdio.h>

int _tmain(int argc, _TCHAR* argv[])
{
    ULONG nSampleRate = 22050;
    UINT nChannels = 1;
    UINT nPCMBitSize = 16;
    ULONG nInputSamples = 0;
    ULONG nMaxOutputBytes = 0;

    int nRet;
    faacEncHandle hEncoder;
    faacEncConfigurationPtr pConfiguration;

    int nBytesRead;
    int nPCMBufferSize;
    BYTE* pbPCMBuffer;
    BYTE* pbAACBuffer;

    FILE* fpIn;
    FILE* fpOut;

    fpIn = fopen("C:\\audio-22050,16,1.pcm", "rb");
    fpOut = fopen("C:\\audio-22050,16,1.aac", "wb");
 
    // FAAC 라이브러리를 이용하려면 faacEncOpen()을 호출해야 한다.
    // 압축을 할 PCM 데이터 속성을 입력하면
    // 압축 수행 시 한번에 넣을 샘플수와 한번 호출시 출력되는 최대 압축 데이터 크기를 알려준다.
    hEncoder = faacEncOpen(nSampleRate, nChannels, &nInputSamples, &nMaxOutputBytes);
    if(hEncoder == NULL)
    {
        printf("[ERROR] Failed to call faacEncOpen()\n");
        return -1;
    }

    nPCMBufferSize = nInputSamples * nPCMBitSize / 8;
    pbPCMBuffer = new BYTE [nPCMBufferSize];
    pbAACBuffer = new BYTE [nMaxOutputBytes];
 
    // 입력할 PCM 데이터의 BIT 크기는 16BIT임을 명시한다. (FAAC의 Default값은 32BIT)
    pConfiguration = faacEncGetCurrentConfiguration(hEncoder);
    pConfiguration->inputFormat = FAAC_INPUT_16BIT;
 
    // Encoding 설정을 변경한다.
    nRet = faacEncSetConfiguration(hEncoder, pConfiguration);

    for(int i=0; 1; i++)
    {
        nBytesRead = fread(pbPCMBuffer, 1, nPCMBufferSize, fpIn);

        nInputSamples = nBytesRead / (nPCMBitSize / 8);
 
        // faacEncEncode() 에서 PCM 데이터를 압축하여 AAC 데이터를 만든다.
        // nRet: 결과 데이터의 BYTE 크기 (즉, pbAACBuffer 내에 저장된 AAC 데이터의 BYTE 크기)
        // pbAACBuffer: 결과물인 AAC 데이터가 저장되는 버퍼
        nRet = faacEncEncode(
            hEncoder, (int*) pbPCMBuffer, nInputSamples, pbAACBuffer, nMaxOutputBytes);

        fwrite(pbAACBuffer, 1, nRet, fpOut);

        printf("%d: faacEncEncode returns %d\n", i, nRet);

        if(nBytesRead <= 0)
        {
            break;
        }
    }
 
    while(1)
    {
          // FAAC 라이브러리내에 남아있는 PCM 데이터를 압축시킨다. (Flushing)
          nRet = faacEncEncode(
             hEncoder, (int*) pbPCMBuffer, 0, pbAACBuffer, nMaxOutputBytes);
 
          // 더이상 압축된 데이터가 나오지 않으면 종료
          if(nRet <= 0)
          {
               break;
          }
    }
 
    // FAAC 라이브러리를 닫는다.
    nRet = faacEncClose(hEncoder);

    delete[] pbPCMBuffer;
    delete[] pbAACBuffer;
    fclose(fpIn);
    fclose(fpOut);

    getchar();

    return 0;
}

x264

홈페이지: http://www.videolan.org/developers/x264.html

logoGreen

x264는 H.264/AVC 비디오 스트림을 인코딩하는 라이브러리다. 디코딩 기능은 포함하고 있지 않다. GPL 라이선스로 배포되며 이는 오픈 소스이므로 이용에 특별한 제약은 없다.
SIMD (MMX,SSE, SSE2, SSE3, 3DNow! 등) 환경에서도 최적화되어 있다.

x264 is a free software library and application for encoding video streams into the H.264/MPEG-4 AVC format, and is is released under the terms of the GNU GPL.

다운로드: x264-snapshot-20110323-2245

libtheora

홈페이지: http://www.theora.org/

fish_theora_org

Theora is a free and open video compression format from the Xiph.org Foundation. Like all our multimedia technology it can be used to distribute film and video online and on disc without the licensing and royalty fees or vendor lock-in associated with other formats.

Theora scales from postage stamp to HD resolution, and is considered particularly competitive at low bitrates. It is in the same class as MPEG-4/DiVX, and like the Vorbis audio codec it has lots of room for improvement as encoder technology develops.

다운로드: 1.1.1

libvpx

홈페이지: http://www.webmproject.org/code/

VP8(브이피 에잇)은 구글이 인수한 On2 테크놀로지스의 비디오 코덱 중 하나이다.
2010년 5월 19일, 구글 I/O에서 BSD 라이선스 형식의 특허 대응을 위해, 수정 라이선스로 오픈 소스 소프트웨어화한 다음 마트료시카(Matroska) 기반의 자체 포맷 WebM 함께 오픈 소스로 공개하였다. 이 라이선스는 GPL과의 호환성 문제가 지적되고 있었지만, 이후 라이선스를 바꿔 특허 조항을 삭제했기 때문에 문제가 해소되었다. 개발에는 Xiph.Org가 협력하고 있다.

구글은 유투브에서 모든 동영상을 WebM으로 변환시킬 것을 표명했다. 또한, 모질라는 파이어폭스에서 WebM에 지원한다고 표명을 했으며, 어도비는 차기 플래쉬 릴리스에서 VP8에 대응한다고 발표하였다.

구글은 VP8 기술을 이용한 정지 영상 포맷 WebP도 개발하여 공개하였다.

libvpx is the VP8 codec SDK used to encode and decode video streams,
typically within a WebM format media file.

다운로드: 0.9.6

Xvid

홈페이지: http://www.xvid.org/

logo_xvid

Xvid(이전 명칭은 XviD)는 MPEG-4 표준을 따르는 영상 코덱 라이브러리이다. Xvid는 b-프레임, 전체와 1/4 화소 움직임 보상, 루미 마스크, 격자 양자화와 같은 MPEG-4 진보된 단순 프로필 기능을 지원한다. H.263, MPEG과 커스텀 양자화 매트릭스 등도 지원한다.
Xvid는 DivX(Xvid는 DivX를 거꾸로 씀)의 첫 번째 경쟁 코덱이다. DivX는 상용 소프트웨어이지만, Xvid는 자유/오픈 소스 소프트웨어이고, 마이크로소프트 윈도와 맥 OS X만을 지원하는 DivX와는 대조적으로, Xvid는 다양한 플랫폼과 운영 체제에서 사용될 수 있다.

Xvid is a video codec for PC, whereas codec is an abbreviation for [co]der/[dec]oder, hence describes a program to encode and decode digital video. The purpose of encoding video data is to reduce redundancies – that means to make it smaller for faster transmission over computer networks or for more efficient storage on computer disks.

Hence, Xvid can somewhat be seen as a ZIP for video. But unlike ZIP, Xvid is not lossless. That means that a video after compression and decompression with Xvid won’t be identical to the original source. Typically however, a difference to the source is visually imperceptible.

So Xvid removes information that is not important for human perception, which is somewhat similar to MP3 for audio. This enables very high compression rates that allow to effectively work with digital video on home computers at all. To give an example: uncompressed digital video is huge and requires about 100 GB per hour at PAL resolution. The same video would require just 500 MB per hour at very high quality when compressed with Xvid. That is a compression ratio of 200:1.

Xvid is Free Software and released under the GNU GPL license. This means that the source code of the software is publically available and programmers are allowed to make modifications to the code. Also, redistribution of Xvid is permitted but only under the terms of the GPL license.

So the GPL grants recipients more freedoms than it’s common with other software. Therefore, and due to its very high image quality that has been approved in independent tests conducted by third parties the Xvid codec has gained great popularity in the recent past and has become the codec of choice when it comes to exchanging digital video.

다운로드: 1.3.1