TinyJpeg Decoder là một thư viện nhỏ dành cho các ứng dụng cần giải mã ảnh Jpeg. TinyJpeg được viết theo thư viện C chuẩn nên hỗ trợ nhiều phần cứng khác nhau. Tuy nhiên, khi sử dụng trên hệ thống nhúng SOC với tốc độ vi xử lý thấp như Spartan-3E, tốc độ giải mã khá là chậm. Theo lưu đồ giải mã hình ảnh Jpeg mô tả ở hình 3.18, chúng ta cần gọi 5 hàm của thư viện TinyJpeg theo đúng trình tự. Sau đây là bảng mô tả các hàm được sử dụng giải mã Jpeg.
Bảng 3-6: Mô tả hàm khởi tạo tinyjpeg_init [4]
Prototype struct jdec_private *tinyjpeg_init(void)
Parameters N/A
Description
Hàm này khởi tạo vùng nhớ để chuẩn bị lưu trữ thông tin của ảnh và dữ liệu sau khi giải mã jpeg. Hàm này cần được gọi đầu tiên
Return Giá trị trả về:
ỏ tới vùng nhớ vừa được tạo ỗi khởi tạo.
Comment
Includes Tinyjpeg.h
Bảng 3-7: Mô tả hàm duyệt header file tinyjpeg_parse_header [4]
Prototype int tinyjpeg_parse_header( struct jdec_private *priv, const unsigned char *buf, unsigned int size);
Parameters *priv: Tinyjpeg object
*buf: con trỏ tới dữ liệu của file jpeg cần giải mã size: kích thước của file
Description
Hàm này thực hiện kiểm tra file jpeg xem có thể giải mã được hay không. Nếu được thì nó sẽ lấy các thông tin header của file jpeg và truyền vào biến priv
Return Giá trị trả về:
57
ể giải mã được file này
Comment Hàm này được gọi sau tinyjpeg_init()
Includes Tinyjpeg.h
Bảng 3-8: Mô tả hàm giải mã ảnh tinyjpeg_decode [4]
Prototype int tinyjpeg_decode(
struct jdec_private *priv, int pixel_format);
Parameters *priv: con trỏtới Tinyjpeg object
pixel_format: định dạng ảnh sau khi giải mã. Tinyjpeg hỗ trợ các định dạng sau: - TINYJPEG_FMT_YUV420P - TINYJPEG_FMT_RGB24 - TINYJPEG_FMT_BGR24 - TINYJPEG_FMT_GREY Description
Hàm này thực hiện quá trình giải mã ảnh; chuyển đổi ảnh kết quả sang định dạng pixel_format và lưu trữ bởi con trỏ priv
Return Giá trị trả về:
> 0: hàm thực hiện thành công < 0: hàm thực hiện bị lỗi
Comment Cần thực hiện hai hàm trên trước khi gọi hàm này
Includes Tinyjpeg.h
Bảng 3-9: Mô tả hàm đọc kích thước ảnh tinyjpeg_get_size [4]
Prototype void tinyjpeg_get_size(
struct jdec_private *priv, unsigned int *width, unsigned int *height)
Parameters *priv: con trỏtới Tinyjpeg object
*width: con trỏsẽ lưu độrộng củaảnh
*height: con trỏsẽlưu chiều cao củaảnh
58
Return void
Comment
Cần thực hiện hàm tinyjpeg_parse_header() trước khi gọi hàm này
Includes Tinyjpeg.h
Bảng 3-10: Mô tả hàm tinyjpeg_get_components [4]
Prototype int tinyjpeg_get_components( struct jdec_private *priv, unsigned char **components)
Parameters *priv: con trỏtới Tinyjpeg object
**components: con trỏ lưu các thành phần màu củ a ảnh sau
giải mã
Description
Hàm này lấy tham ra các thành phần màu của ảnh sau khi đã giải mã
Return int
Comment
Cần thực hiện hàm tinyjpeg_decode() trước khi gọi hàm này
Includes Tinyjpeg.h
Bảng 3-11: Mô tả hàm giải phóng bộ nhớ tinyjpeg_free [4]
Prototype void tinyjpeg_free(
struct jdec_private *priv)
Parameters *priv: con trỏtới Tinyjpeg object
Description
Hàm này thực hiện giải phóng bộ nhớ bị chiếm bởi con trỏ *priv
Return void
Comment
59
CHƯƠNG 4: : KẾT QUẢ THỰC NGHIỆM VÀ ĐÁNH GIÁ
Chương này sẽ giới thiệu về các kết quả thực thi phần cứng và phần mềm điều khiển hệ thống.