1. 程式人生 > >H.264庫移植 /libjpeg庫移植

H.264庫移植 /libjpeg庫移植

1.H.264庫移植
F:\國嵌入式收費視訊\高階專案\高階專案SDK[ED2000.COM]\高階專案SDK\SDK-H264\server\h264\avc-src-0.14下
#cd avc/build/linux/
#make                        //編譯完成後在build/obj目錄下生成.o結尾的目標檔案
#rm T264.o                   //刪除T264.o目標檔案

出現錯誤;
[email protected]:/home/xyc/sdk-H264/server/h264/avc-src-0.14/avc/build/linux# make
checking dependencies
compiling object file "../obj/T264.o" ...
In file included from ../../encoder/T264.c:51:
../../common/T264.h:36:1: warning: "DECLARE_ALIGNED_MATRIX_H" redefined
In file included from ../../common/T264.h:32,
                 from ../../encoder/T264.c:51:
../../common/portab.h:120:1: warning: this is the location of the previous definition


creating binary "../bin/t264"
... done
update tag table
/bin/sh: ctags: not found
make: *** [tags] Error 127
解決:安裝ctags         http://blog.csdn.net/louis_hwt/article/details/10077011

[email protected]
:/home/xyc/sdk-H264/server/h264/avc-src-0.14/avc/build/linux# make


checking dependencies


creating binary "../bin/t264"
... done


update tag table
[email protected]:/home/xyc/sdk-H264/server/h264/avc-src-0.14/avc/build/linux# 

編譯程式時,出錯:
/home/xyc/sdk-H264/server/h264/avc-src-0.14/avc/build/obj/T264.o: In function `main':
T264.c:(.text+0x1da8): multiple definition of `main'
server_arm.o:server_arm.c:(.text+0x1674): first defined here
collect2: ld returned 1 exit status
make: *** [server_arm] Error 1

在庫檔案中也定義了個main函式,但不知道怎麼會連線到那個,把這個庫檔案刪了,編譯通過,能否執行,有待測試

編碼過程:
1.建立一個T264_param_t;
2.設定T264_param_t的相關引數;
3.分配buffer記憶體空間;
4.讀一幀資料,用T264_encode編碼一幀資料;
5.寫入檔案,傳送;

解碼過程;
1.開啟解碼器T264dec_open();
2.獲取當前狀態T264dec_parse();
3.如果需要更多資料,則讀更多資料給編碼器;
4.如果一幀解壓好,則處理;
5.關閉T264dec_close();



2.libjpeg庫移植
libjpeg-turbo-1.2.1.tar.gz
libjpeg是使用C語言實現的讀、寫JPEG檔案的庫,
使用libjpeg的應用程式是以"scanline"為單位進行圖象處理的

Allocate and initialize a JPEG decompression object    // 分配和初始化一個decompression結構體
Specify the source of the compressed data (eg, a file) // 提定原始檔
Call jpeg_read_header() to obtain image info           // 用jpeg_read_header獲得jpg資訊
Set parameters for decompression                       // 設定解壓引數,比如放大、縮小
jpeg_start_decompress(...);                            // 啟動解壓:jpeg_start_decompress
while (scan lines remain to be read)
jpeg_read_scanlines(...);                          // 迴圈呼叫jpeg_read_scanlines
jpeg_finish_decompress(...);                           // jpeg_finish_decompress
Release the JPEG decompression object                  // 釋放decompression結構體


tar xzf libjpeg-turbo-1.2.1.tar.gz
cd libjpeg-turbo-1.2.1
./configure --prefix=/work/projects/13.libjpeg/libjpeg-turbo-1.2.1/tmp/ --host=arm-linux
make
make install