MPEG-4 Visual (also referred to as MPEG-4 Part 2 and ISO/IEC 14496-2) was initially released by MPEG in 1999. It maintains backward compatibility with H.263, developed by the ITU-T group. This means that any video encoded with H.263 can be decoded by an MPEG-4 Visual decoder. However, MPEG-4 Visual incorporates additional features beyond the scope of the H.263 format. Developed between MPEG-2 Video and AVC (MPEG-4 Part 10), MPEG-4 Visual has not been as widely adopted as its successor. In this article, we will demonstrate the location of certain parameters of the original video (such as FPS, frame size, aspect ratio, profile, level, and scan type) in the encoded MPEG-4 Visual elementary stream. To analyze MPEG-4 Visual, we will utilize the Virinext Bitstream Analyzer. You can download the evaluation version on the Download page. For license acquiring please check the Buy license page.
As an example file for analysis we will use the file with parameters in the screenshots below.
Frame rate (FPS)
Frame rate is constant when fixed_vop_rate from Video Object Layer is equal to 1. In this case fixed_vop_time_increment is present in bitstream. Frame rate can be calculated based on frame_rate_code and fixed_vop_time_increment from Video Object Layer syntax by the following formula:
fps = vop_time_increment_resolution / fixed_vop_time_increment;
In the example file we have fixed_vop_rate = 1, vop_time_increment_resolution = 25, fixed_vop_time_increment=1, so frame rate is 25 frames per second.
Picture size
Size of the picture is stored in video_object_layer_width and video_object_layer_height fields from Video Object Layer syntax. In the example file width = video_object_layer_width =640 and height = video_object_layer_height = 480.
Aspect ratio
In MPEG-4 Visual the aspect ratio is calculated based on the aspect_ratio_info field from Video Object Layer header according to the following table:
When aspect_ratio_info is equal to extended PAR then par_width and par_height fields are used.
In the example file aspect_ratio_information = 1, so the square pixels is used.
Profile and level
Profile defines the features that the encoder can use during encoding. Based on the profile value, the decoder can recognize the requirements for decoding specific bitstream. Level specifies another set of constraints that indicate a required decoder performance. These constraints include maximum frame size, bitrate and decoding speed. Profile and level are described by the profile_and_level_indication field in Video Object Sequence. Level value is stored in first 4 bits of profile_and_level_indication and Profile value in last 4 bits. Profile and level names are described in table from MPEG-4 Visual specification.
In the example file profile_and_level_indication = 1. That means file is encoded with Simple profile profile and Level 1.
Scan type
The value interlaced in the Video Object Layer header carries the information about progressive/interlaced scan type is used during encoding.
In the example file interlaced = 0 that means file is encoded as progressive frames.
Timecode and GOP type
Group of Video Object Plane syntax contains the time_code field which describe timecode associated with following frame and closed_gop flag which describes the GOP type (open or closed GOP).
Frame type
Frame encoding type is signaled by vop_coding_type in Video Object Plane syntax. The meaning of vop_coding_type is defined in following table:
In example Video Object Plane from screenshot vop_coding_type = 0 which means frame is intra-coded.
Conclusion
In this article, we have explored the MPEG-4 Visual video compression standard. We have examining details of standard by looking for the location of key video parameters within the encoded MPEG-4 Visual bitstream, including frame rate, picture size, aspect ratio, profile, level, scan type, timecode, GOP type, and frame type. By utilizing the powerful analysis tool Virinext Bitstream Analyzer, we have demonstrated how these parameters are stored into bitstream. With Virinext Bitstream Analyzer, you can analyze MPEG-4 Visual files and gaining insights of the low level encoding and bitstream parameters. If you interested in exploring further, we are offering you to try free evaluation version of Virinext Bitstream Analyzer. Virinext Bitstream Analyzer it is a GUI tool for both in-depth and high-level analysis for many encoding standards including MPEG-4 Visual.