Skip to main content

HDMI(draft version)

Overview
 is a compact audio/video interface for transferringuncompressed video data and compressed or uncompressed digital audio data from an HDMI-compliant source device
http://en.wikipedia.org/wiki/HDMI

HDMI driver on linux
http://lxr.free-electrons.com/source/drivers/video/hdmi.c

HDMI issue, software design
http://elinux.org/images/8/8e/HDMI_ELC_mythripk.pdf

Extended display identification data (EDID) is a data structure provided by a digital display to describe its capabilities to a video source.


Video loopback
Video playback

Nguyên tắc hoạt động của HDMI:
Gồm 3 phần:
- CEC: Thằng này cho phép truyền thông tin giữa Source Device (bộ phát hdmi) và Sink Device (thiết bị hiển thị). Thông tin này là những lệnh cho phép điều khiển từ xa qua lại giữa 2 thằng.
Ví dụ: Khi nhét cái đĩa vào cái đầu blue-ray, thì cái màn hình kết nối qua HDMI với thằng đầu blue-ray sẽ tự động bật. Ngược lại, có thể điều khiển thằng đầu blue-ray bằng cái điều khiển màn hình.

- EDID: 3 đường data, 1 đường clock. Tín hiệu được truyền đi dưới dạng diff-voltage và được chống nhiễu bởi 1 đường GND theo. Video content và audio được truyền qua kênh này
HPD: đường này cho phép thằng devices souce nhận biết được khi nào thì thằng Sink Device được cắm vào


2. HDMI Protocol Overview

HDMI offers much more to consumers than traditional analog interfaces because it does more than transfer audio and video signals. The HDMI protocol allows devices to communicate settings, preferred formats, and force actions. The HDMI protocol has three sections:

CEC

The CEC (Consumer Electronics Control) is an independent feature based on a single line that is daisy chained between all of the devices on an HDMI link. The CEC line allows any device that is CEC-enabled to exchange information with any other device(s). CEC can be used to command all of the devices using a single remote control or to automatically change settings on a device when the status of another device changes (for example, if powered on or off). For instance, if a consumer places a disc into a Blu-ray Player and shuts the drawer, the HDTV automatically powers on, sets the correct video input, and turns on the surround-sound receiver. This communication is all done over the CEC line and provides a much better customer experience.

EDID

EDID (Extended Display Identification Data) is a set of data physically stored in a sink device such as an HDTV or DVR. EDID contains information about the sink's supported features and capability. A source device (like a Blu-ray Player) can access that information and adjust to the preferred or supported settings of the sink. For example, a 3D-capable Blu-ray Player would need to read the EDID table of an HDTV to ensure that it supports not only 3D content but also a common 3D structure such as the Blu-ray Player. If no common structure can be identified, then a 2D resolution and frame rate is negotiated. The communication between the source device(s) and the sink device is implemented through the DDC lines (Display Data Channel), which is an I2C bus included in the HDMI cable.

HPD

The HPD (Hot-Plug-Detect) feature is a communication mechanism between a source and a sink device that makes the source device aware that it has been connected/disconnected to/from the sink device. When an HDMI cable is inserted between the two devices, the resulting hot-plug detection instantiates a start-up communication sequence. The EDID information stored in the sink device gets read by the source device though the DDC bus, and the source device typically presents itself on the CEC link and requests basic status information from the sink device such as its power status as well as other devices on the HDMI chain.

TMDS[edit]

Transition Minimized Differential Signaling (TMDS) on HDMI interleaves video, audio and auxiliary data using three different packet types, called the Video Data Period, the Data Island Period and the Control Period.[64]During the Video Data Period, the pixels of an active video line are transmitted.[64] During the Data Island period (which occurs during the horizontal and vertical blanking intervals), audio and auxiliary data are transmitted within a series of packets.[64] The Control Period occurs between Video and Data Island periods.[64]
Both HDMI and DVI use TMDS to send 10-bit characters that are encoded using 8b/10b encoding that differs from the original IBM form for the Video Data Period and 2b/10b encoding for the Control Period. HDMI adds the ability to send audio and auxiliary data using 4b/10b encoding for the Data Island Period.[64] Each Data Island Period is 32 pixels in size and contains a 32-bit Packet Header, which includes 8 bits of BCH ECC parity data for error correction and describes the contents of the packet.[65] Each Packet contains four subpackets, and each subpacket is 64 bits in size, including 8 bits of BCH ECC parity data, allowing for each Packet to carry up to 224 bits of audio data.[66] Each Data Island Period can contain up to 18 Packets.[67] Seven of the 15 Packet types described in the HDMI 1.3a specifications deal with audio data, while the other 8 types deal with auxiliary data.[65] Among these are the General Control Packet and the Gamut Metadata Packet. The General Control Packet carries information on AVMUTE (which mutes the audio during changes that may cause audio noise) and Color Depth (which sends the bit depth of the current video stream and is required fordeep color).[68][69] The Gamut Metadata Packet carries information on the color space being used for the current video stream and is required for xvYCC.[53][70][71]

Video streamming

https://sites.google.com/site/embedded247/npcourse/tim-hieu-ky-thuat-video-streaming
về bản chất, streaming video là quá trình chia nhỏ file video thành các frame, rồi lần lượt gửi từng frame tới một bộ đệm trên máy tính của người xem và hiển thị nội dung frame đó. Và quá trình này tuân thủ chặt chẽ về ràng buộc theo thời gian, nói khác là tuân thủ chặt chẽ theo giao thức RTSP, RTP và RTCP

Các frame này sau khi giải mã, có phải là frame ảnh ko?

State của video streaming
http://www.csee.umbc.edu/~pmundur/courses/CMSC691C/lab5-kurose-ross.html

Video streamming với QT
https://sites.google.com/site/embedded247/npcourse/chuong-trinh-qt-streaming-video-tren-kit-Tiny6410


bmp,jpeg đều ko có checksum
jpeg: lossy compress dùng thuật toán DCT (Discrete cosin transform)
Đặc điểm của phép biến đổi này là tín
hiệu ảnh trong miền không gian chuyển sang miền tần số thì các thành phần DC và các thành
phần AC mang hầu hết các thông tin chứa trong ảnh gốc. Trong đó, DC là thành phần quan
trọng nhất mang độchói trung bình của ảnh, các thành phần AC chứa các thông tin về chi tiết
của ảnh

Thư viện c đọc ảnh Jpeg

libjpeg


libbmp

Thư viện đọc ảnh bmp
https://code.google.com/p/libbmp/
how to install
https://code.google.com/p/libbmp/source/browse/trunk/INSTALL?r=2
1. `cd' to the directory containing the package's source code and type
`./configure' to configure the package for your system.

Running `configure' might take a while. While running, it prints
some messages telling which features it is checking for.

2. Type `make' to compile the package.

3. Optionally, type `make check' to run any self-tests that come with
the package, generally using the just-built uninstalled binaries.

4. Type `make install' to install the programs and any data files and
documentation. When installing into a prefix owned by root, it is
recommended that the package be configured and built as a regular
user, and only the `make install' phase executed with root
privileges.
Makefile.am is a programmer-defined file and is used by automake to generate the Makefile.infile. The ./configure script typically seen in source tarballs will use the Makefile.in to generate a Makefile.
The ./configure script itself is generated from a programmer-defined file named either configure.ac or configure.in , I prefer .ac (for AutoConf) since it differentiates it from the generated Makefile.in files and that way I can have rules such as make dist-clean which rm -f *.in . Since it is a generated file it is not typically stored in a revision system such as SVN or CVS, rather the .ac file would be.
Read more on GNU Autotools. Read about make and Makefile first, then learn
about automakeautoconflibtool, etc.

http://ospforum.wordpress.com/2009/09/20/2d-graphics-using-c-in-linux-graphics-h-in-linux/
I was searching Internet and found some softwares for developing graphics applications in Linux. that softwares are listed here
  1. GTK+   – Gnome Tool Kit
  2. QT  –  The X toolkit
  3. SVGALIB   [ #include<vgagl.h> ]
  4. libgraph [ #include<graphics.h> ]
GTK and QT are simple and used for high level Graphical User Interface [ GUI ] development. SVGALIB and libgraph is used for 2D graphics in Linux .  the syntax and functions are some what different for beginners  [specially the user from windows ] but most of users familiar with windows graphics.h header file in C and C++ , so we can move for libgraph which is exact one for windows graphics user . libgraph is an implementation of the Turbo C graphics API (graphics.h) on GNU/Linux using SDL [ Simple Direct Media Player ]. The library requires SDL for primitive graphics and SDL. First you need to install the following dependency packages using synaptic package manager in Ubuntu Linux to develop the graphics applications properly.

Test framebuffer
https://github.com/prpplague/fb-test-app.git

Comments

Popular posts from this blog

How to test frame buffer in linux

The intended goal of this article is to provide the user with enough information so they can display an image onto a screen of their choosing. How to re-build frame buffer testing application. Base knowledge http://trac.gateworks.com/wiki/OpenEmbedded/Video_Out Frame buffer test application - rebuild fb-test-app step 1: Download soure code ( git installed on your machine and account in git-hub is required) https://github.com/prpplague/fb-test-app Command in git: git init git clone https://github.com/prpplague/fb-test-app.git step 2: Change makefile vi Makefile //open Makefile by vim editor :set nu //show line number replace from line 6 to line 12 by folow code: CC=arm-linux-gnueabi-gcc CFLAGS=-02 -Wall Save change command :wq step 3: Rebuid Type “make” command step 4: Copy execute file to target system by filezilla or something like that step 5: Remote target by root account, change mode of execute file (what copied from host)

[Git] Handle trailing space when patching with git

After complete coding one module in development branch. Next phase is merging. Obviously, you can merge source code automatically without no errors happen. However, life is not dream. Create a patch git diff HEAD > newTariff.patch Apply patch git apply newTariff.patch then problem happens Problem git apply newTariff.patch:106: trailing whitespace. patch does not apply Route cause: Nguyên nhân: Do trong source code có những dấu space thừa (ô vuông màu đỏ hình dưới) Some whitespaces is existed in your patch. (red area in below pictures) Fix Clean white space and patch again. Cách khắc phục Xóa những dấu space này đi và thực hiện patch lại Make up after complete coding. Find and clean whitespace before create patch file. Sửa sau khi code xong Kiểm tra sau khi code xong có lỗi này không git diff HEAD --check Prevent whitespace by manually when typing source code Sửa ngay khi đang code =>Bật chức năng hiển thị các dấu whitespace, hoặc remove trailing

[Vi] Công nghệ phát triển ngược đời - How is AI harming my world

Tiếng cười khanh khách của mấy cậu sinh viên quốc tế người Bắc Ấn sau bài kiểm tra cuối khóa (a final exam) làm gã thấy buồn một góc tâm hồn. Sự trống rỗng ngay lập tức xâm chiếm lấy tâm trí gã sau khi nộp bài môn thi cuối cùng của kỳ học. Gã hiểu gã quá mà, gã đang cố gắng giải thích cho nỗi nhục của chính bản thân ở bên trong. Đầu gã thoáng nghĩ về cái lần thi cuối kỳ một môn học ở bậc thạc sỹ nơi quê nhà hơn mười năm về trước, cái ánh mắt khinh bỉ đến ám ảnh của một anh dọn vệ sinh dành cho những học viên cao học đang quay cóp trong giờ thi của một trường đại học hàng đầu quốc gia như vết dao khứa vào lòng tự trọng của gã. Vết thương vẫn nhói đau lại khi những mùa thi đến. Một lão già sinh viên quốc tế ranh ma. Gã đang học lại cái thứ mà gã đã học từ hai mươi năm về trước với một thứ ngôn ngữ không mới và cái tâm bằng sắt nung. Kinh nghiệm làm việc chuyên môn lâu năm cộng với việc vừa được trang bị thứ vũ khí khoa học tối tân AI (Trí truệ nhân tạo) khiến lão trở thành sát thủ trong