Friday, April 17, 2009

NGVC (H.265) Is On The way

While the whole multimedia world trying very hard to become mature in H.264, the bestcompression video standard till today, the new baby is in under development phase and named as 'The Next Generation Video Coding' (NCVG). In 2005 it was started by VCEG as consideration to 'H.264+'. Then after study it changed to H.265 a brand new standard instead of an extension of H.264 as a long-term video coding standard. And now latest VCEG meeting it has came up as 'NGVC' project (next-generation video coding) with backward compatibility. It is expected to be finalized in 2009-2010.

The goal of this standardization will be as follows:

1. Coding efficiency:

* NGVC should be capable of providing a bit rate reduction of 50% at the same subjective quality

2. Complexity:

* NGVC should be capable of operating with a complexity ranging from 50% to 3 times H.264/MPEG-4 AVC High Profile.

* When operated at a complexity of 50% compared to H.264/MPEG-4 AVC High Profile, NGVC should provide a 25% bit rate savings compared to H.264/MPEG-4 AVC High Profile at equivalent subjective quality.

3. Applications:

* Low-delay interactive video communications
* Surveillance
* Streaming
* Broadcast
* Digital cinema and large-screen digital imagery
* Mobile video entertainment
* Storage-based video application (camcorders, camera phones, computer files, disc media, download-and-play, etc)

KTA (key technical area) is developed as the software platform, which uses JM11 as the baseline and continuously integrates promising coding tools. The tools adopted in KTA are listed as below:

* 2-D non-separable adaptive interpolation filter (AIF) [AD08]
* separable AIF [C-0219-E]
* directional AIF [AG21]
* motion compensation with 1/8-pel motion vectors [AD09]
* adaptive prediction error coding (APEC) in spatial and frequency domain [AD07]
* adaptive quantization matrix selection (AQMS) [AD06]
* competition-based scheme for motion vector selection and coding [AC06]
* mode-dependent transform customization for intra coding [AG11]

All these techniques improve the coding performance by multi-pass encoding.

The latest published KTA software is JM11.0KTA2.3 (download here ). Some new technologies have been adopted by KTA software since July 2008. Those KTA coding tools involve the following areas:

1. Architecture

Internal Bit Depth Increasing
Extended Block Size (or called Super-MacroBlock) (C123)

2. Transformation and Quantization

Mode-Dependent Directional Transform
Very Large Block Transform
Adaptive Prediction Error Coding
Improved Adaptive Quantization Matrix Selection
Rate-Distortion-Optimization Quantization (RDO-Q)
Adaptive QP

3. Entropy Coding

Parallel Entropy Coding

4. Adaptive Loop Filter

Block/Quadtree-based Adaptive Loop Filter (C181)

5. Motion Coding

Motion Vector Prediction Competition
One-eighth-sample Motion Vector Resolution

6. Inter-Prediction

Adaptive Interpolation Filters
Separable Adaptive Interpolation Filters
Directional Adaptive Interpolation Filters
Enhanced Adaptive Interpolation Filter
Enhanced Directional Adaptive Interpolation Filter
Fixed Directional Interpolation Filters
Special Filter Positions
High Precision Filters
Switched Interpolation Filters with Offsets

These are some related helpful links:

1) ITU-T SG16’s homepage
2) The latest version of KTA is JM11.0KTA2.3 (Download here) and the latest test conditions are specified in [AH10].
3) forum instead use this (modifying after a valuable comment...thanks for rectifying me)

So be ready to see new fun in video coding.

Thursday, April 16, 2009

That's why I LOVE Google

It's really really great. As we all know it's election time for Lok Sabha in India. So as a citizen of India after waiting in queue for 3-4 times around 3 hours each time, I got my Electronic Voter Id Card too. Since today onwards voting has been started. But as I was not knowing my voting booth where I can go and cast my vote. I decided to do some googling and thought of , first I will have to search for 3-4 official site by google and then I have to search again on those sites to identify my voting booth kind of tedicious work.

So I gave in google this quote "voting booth in karnataka" for search . And I got the second result is Voting For Election 2009 . Ya this is the google database page. And it's really awesome. Here not only you can find your vooting booth id but also you can check your all personal details (if official site has updated google took data from there) , Parliamentary constituency, last time parliamnet members, development data, latest election news.......etc etc. I just love it.The only issue is the listed city for personal details are less. The cities are Delhi, Bangalore, Kolkata, Mumbai, Nagpur, and Pune. Hey even though if you are not belonging to these cities other than your personal details you can check other informations.

So check this page and enjoy and do contribute to Election as it decides your fututre in one way or another.

Voting For Election 2009

Sunday, April 05, 2009

March-April Update (MMX Techonoly/NASM/YASM)

I see that my planned tasks are completely frozen from last one month. Many things happened in last month which stopped my scheduled work. I had to go out of town for 15 Days, when I came back there was huge amount of work in my office. Not only huge, the overall whole work is new for me. So I am not at all getting anytime for my blog. Actually I do find a little bit time to write blog but I dont have time to do my planned technical KEP as per scheduled. But the good thing is as I told earlier I doing some new things in work, at least that is satisfactory and I am enjoying there.

Presently I am working on MMX technology. I am quite busy in writing MMX assemblies. Basically it is SIMD (single instruction multiple data) technology where we use 64 bit 8 MMX registers (MM0-MM7) to process data. So if we have data of 'char' type so we can process 8 data simlataneously.There are various instructions which Pack or unpack multiple data and operations for 1 Quand Word(64 bit), 2 Double Word(32 bit), 4 Word(16 bit) or 8 Byte(8 bit) data depends upon how we handle the data.It's quite interesting.

Now for MMX instruction assemblies I am also learning the IA32 assembler, NASM (Netwide Assembler) and also YASM. The IA32 architecture is good but not sufficient as it will support only Intel architecture ( 80x86 assembler) and writing code as inline __asm {...} without using MACRO, repeat (loop) feature is highly tedious job. NASM is an 80x86 assembler designed for portability and modularity. It supports a range of object file formats, including Linux and NetBSD/FreeBSD a.out ,ELF , COFF , Microsoft 16-bit OBJ and Win32 . It will also output plain binary files. Its syntax is designed to be simple and easy to understand, similar to Intel’s but less complex. It supports Pentium , P6 , MMX , 3DNow! , SSE and SSE2 opcodes, and has macro capability.

While Yasm is a (mostly) BSD-licensed assembler that is designed from the ground up to allow for multiple assembler syntaxes to be supported (e.g. NASM, GNU AS, etc.) in addition to multiple output object formats and multiple instruction sets. Its modular architecture allows additional object formats, debug formats, and syntaxes to be added relatively easily. It has matched and exceeded NASM’s capabilities, incorporating features such as supporting the 64-bit AMD64 architecture, parsing GNU AS syntax, and generating STABS, DWARF2, and CodeView 8(Not availlable in NASM) debugging information.

so I will be a little bit busy for this month too I feel, then I will check my status and will reschedule my KEP.