mpeg_seq_hdr_new
Allocate a new MPEG sequence header and return a handle to it
mpeg_seq_hdr_free hdr
Deallocates the MPEG sequence header hdr
mpeg_seq_hdr_find bp
Scan forward in a bitstream to the MPEG sequence header using BitParser bp. The cursor of bp if left at the beginning of the sequence header. Return the number of bytes skipped, or -1 if no sequence header is found.
mpeg_seq_hdr_dump inbp outbp
Dump a sequence header from inbp to outbp without interpreting it. Inbp's cursor will be pointing to the beginning of the GOP header that follows the sequence header. Return the number of bytes dumped, or an error if inbp is not pointing to a sequence header.
mpeg_seq_hdr_skip bp
Assuming that the input BitParser bp is at the beginning of a MPEG sequence header, skip the sequence header and advance bp's cursors to the beginning of GOP header immediately following the sequence header. Return the number of bytes skipped, or an error if bp is not pointing to a sequence header.
mpeg_seq_hdr_parse bp
Assuming the BitParser bp is pointing to the beginning of a sequence header in the bitstream, parse the header and initialize hdr. Note: Header extension and user data are ignored. When this function completes, bp's cursor will be pointing to the beginning of the GOP header that follows the sequence header. This function returns the number of bytes parsed, or an error if bp is not pointing to a sequence header.
mpeg_seq_hdr_encode bp
Encode the content of the sequence header hdr to the output bitstream attached to BitParser bp and return the number of bytes encoded.
mpeg_seq_hdr_get_width hdr
mpeg_seq_hdr_get_height hdr
mpeg_seq_hdr_get_aspect_ratio hdr
mpeg_seq_hdr_get_pic_rate hdr
mpeg_seq_hdr_get_bit_rate hdr
mpeg_seq_hdr_get_iqt hdr
mpeg_seq_hdr_get_niqt hdr
These query primatives return the fields in the MPEG seqence header:
- the width of the video(in pixels)
- the height of the video(in pixels)
- the sequence picture rate (as a floating point value, in frames/second)
- the sequence bit rate (in units of 400 bits/second) or the string "variable" if the bit rate is variable
- the intra quntizer table (8x8 matrix)
- the non-intra quantizer table (8x8 matrix)
mpeg_seq_hdr_set_width hdr x
mpeg_seq_hdr_set_height hdr x
mpeg_seq_hdr_set_pic_rate hdr x
mpeg_seq_hdr_set_bit_rate hdr x
mpeg_seq_hdr_set_aspect_ratio hdr x
mpeg_seq_hdr_set_buffer_size hdr x
mpeg_seq_hdr_set_constrained hdr x
mpeg_seq_hdr_set_iqt hdr qTable
mpeg_seq_hdr_set_niqt hdr niqTable
mpeg_seq_hdr_set_default_iqt hdr
mpeg_seq_hdr_set_default_niqt hdr
These query primitives initialize the fields in the MPEG seqence header.
Notes:
- Setting the width or height also sets the mb_width or mb_height.
- Currently only variable bit rate (-1) is supported for encoding.
- Setting the pic rate or aspect ratio to an unsupported value has no effect. For a list of suported values, see above.
- mpeg_seq_hdr_set_default_iqt and mpeg_seq_hdr_set_default_niqt can be used to initialize the quantizer tables to default ones.
mpeg_gop_hdr_new
Allocates a new MpegGopHdr, and return a pointer to it.
mpeg_gop_hdr_free hdr
Deallocates the MpegGopHdr pointed to by hdr.
mpeg_gop_hdr_find bp
Scan forward the input BitStream using BitParser bp for the next GOP header, and put bp's current position to the beginning of the GOP header. Return the number of full bytes skipped, or -1 if reach the end of sequence without finding any GOP header.
mpeg_gop_hdr_dump inbp outbp
Assuming the BitParser inbp is pointing to the beginning of a GOP header in the bitstream, dump the header from the input bitstream to the output bitstream attached to BitParser outbp. After dumping, the current bit position is at the beginning of picture header. Return the number of bytes dumped.
mpeg_gop_hdr_skip bp
Assuming that bp is pointing to the begining of a GOP header in the bitstream, skip the header and move bp to point to the beginning of the picture header immediately following the GOP header. Return the number of bytes skipped. Note: This has the same functionality as mpeg_pic_hdr_find, but is more efficient since we assume we are at the beginning of a GOP header and know exactly how many bytes to skip to get to the next MPEG picture header in the bitstream.
mpeg_gop_hdr_parse bp hdr
Assuming that the bp position is at the beginning of a MPEG GOP header, parse the bitstream using BitParser bp and initilize the GOP header hdr. After parsing, bp current bit position is at the beginning of next picture header. Return the number of bytes parsed, or an error if inbp is not pointing to a GOP header.
mpeg_gop_hdr_encode hdr bp
Encode the content of the GOP header hdr to the output bitstream attached to BitParser bp and return the number of bytes encoded.
mpeg_gop_hdr_get_broken_link hdr
mpeg_gop_hdr_get_closed_gop hdr
These queries return the fields in the MPEG Gop Header:
- the broken link field of the gop: 1 or 0
- the closed gop field of the gop: 1 or 0
mpeg_gop_hdr_set_drop_frame_flag hdr x
mpeg_gop_hdr_set_hours hdr x
mpeg_gop_hdr_set_minutes hdr x
mpeg_gop_hdr_set_seconds hdr x
mpeg_gop_hdr_set_pictures hdr x
mpeg_gop_hdr_set_closed_gop hdr x
mpeg_gop_hdr_set_broken_link hdr x
These queries initialize the fields in the MPEG Gop Header:
- the drop frame flag of the gop: 1 or 0
- the time code hours, minutes, seconds, pictures.
- the broken link field of the gop: 1 or 0
- the closed gop field of the gop: 1 or 0
mpeg_pic_hdr_new
Allocate a new MPEG picture header structure and return a pointer to it.
mpeg_pic_hdr_free hdr
Deallocate the MpegPicHdr hdr.
mpeg_pic_hdr_find bp
Scan forward in the bitstream using BitParser bp, looking for the next picture header, and position bp's cursor at the beginning of the picture header. Return the number of bytes skipped, or -1 if no header is found.
mpeg_pic_hdr_dump inbp outbp
Assuming the BitParser inbp is pointing to the beginning of a picture header in the bitstream, dump the header (without parsing it) from the input bitstream to the output bitstream attached to BitParser outbp. After dumping, the current bitparser cursor position is at the end of the picture header and beginning of a slice header ("picture body"). Return the number of bytes dumped, or an error if inbp is not pointing to a picture header.
mpeg_pic_hdr_skip bp
Assuming that the bitstream position is at the beginning of a MPEG pic header, skip the bitstream using BitParser bp without parsing and return the number of bytes skipped. After skipping the current bitparser position is at the end of the picture header and beginning of a slice header. Return the number of bytes skipped, or an error if inbp is not pointing to a picture header.
mpeg_pic_hdr_parse bp hdr
Assuming the BitParser bp is pointing to the beginning of a picture header in the bitstream, parse the header and initialized\ the structure pointed to by hdr. After parsing bp's current bit position is at the end of the picture header and beginning of a slice header (picture body). Return the number of bytes parsed, or an error if inbp is not pointing to a picture header.
mpeg_pic_hdr_encode hdr bp
Encode the content of pic header hdr into bitstream using BitParser bp. Return the number of bytes encoded into the bitstream.
mpeg_pic_hdr_get_temporal_ref hdr
mpeg_pic_hdr_get_type
These queries return the fields in the MPEG Picture Header:
- the temporal reference of the frame: an integer
mpeg_pic_hdr_set_temporal_ref hdr x
mpeg_pic_hdr_set_type hdr x
mpeg_pic_hdr_set_vbv_delay hdr x
mpeg_pic_hdr_set_full_pel_forward hdr x
mpeg_pic_hdr_set_forward_f_code hdr x
mpeg_pic_hdr_set_full_pel_backward hdr x
mpeg_pic_hdr_set_backward_f_code hdr x
These functions/macros initialize the fields in the MPEG Picture Header:
- the temporal reference of the frame.
- the VBV delay of the frame.
- the full pel forward flag of the frame: 0 or 1.
- the forward f code which sets the forward_r_size and forward_f of the frame: 1 to 7.
- the full pel backward flag of the frame: 0 or 1.
- the backward f code which sets the backward_r_size and backward_f of the frame: 1 to 7.
- the picture coding type of the frame: one of the strings "i-frame", "p-frame", "b-frame", or "d-frame"
mpeg_pic_dump inbp outbp
Dump the whole picture from input bitstream using inbp to output bitstream using outbp. Inbp must be positioned at the beginning of the picture (i.e., at a slice start code). When this function completes, the cursor will be positioned at the beginning of the picture header or GOP header immediately following this picture. Return the total number of bytes dumped.
mpeg_pic_skip inbp
Skip the whole picture from input bitstream using inbp. Inbp must be positioned at the beginning of the picture (i.e., at a slice start code). When this function completes, the cursor will be positioned at the beginning of the picture header or GOP header immediately following this picture. Return the total number of bytes dumped.
mpeg_pic_i_parse bp seqHdr picHdr scY scU scV
Parse an I-frame from a bitstream using bp into three SmImages scY, scU and scV. The ScImages contain dequantized coefficients. Bp must be positioned at the beginning of the picture (i.e., at a slice start code). When this function completes, the cursor will be positioned at the beginning of the picture header or GOP header immediately following this picture. Throws an error if unsuccessful.
mpeg_pic_p_parse bp seqHdr picHdr scY scU scV fmv
Parse a P-frame from a bitstream using bp into three SmImages scY, scU, and scV, and the VectorImage fmv. The ScImages contain dequantized coefficients. Bp must be positioned at the beginning of the picture (i.e., at a slice start code). When this function completes, the cursor will be positioned at the beginning of the picture header or GOP header immediately following this picture. Throws an error if unsuccessful.
mpeg_pic_b_parse bp seqHdr picHdr scY scU scV fmv bmv
Parse a B-frame from a bitstream using bp into three SmImages scY, scU, and scV, and the VectorImage fmv and bmv (which contain the forward and backward motion vectors, repectively). The ScImages contain dequantized coefficients. Bp must be positioned at the beginning of the picture (i.e., at a slice start code). When this function completes, the cursor will be positioned at the beginning of the picture header or GOP header immediately following this picture. Throws an error if unsuccessful.
mpeg_pic_i_encode picHdr scY scU scV qScale sliceInfo bp
Encode the ScImage scY, scU, and scV into the bitstream. The ScImages should be quantized. Slice headers are inserted according to the list sliceInfo which contains the number of macroblocks in each slice. sliceInfo is repeated if there are more macroblocks than the sum of the number of macroblocks in each slice of sliceInfo.
mpeg_pic_p_encode picHdr scY scU scV fmv qScale sliceInfo bp
Huffman encode the ScImage scY, scU, and scV that contain I-blocks for intra-coded macroblocks and difference blocks for non-intra macroblocks. The ScImages should be quantized. For macroblocks with a valid vector in VectorImage fmv, the motion vector information is encoded in the macroblock header. Slice headers are inserted according to the list sliceInfo which contains the number of macroblocks in each slice. sliceInfo is repeated if there are more macroblocks than the sum of the number of macroblocks in each slice of sliceInfo.
mpeg_pic_b_encode picHdr scY scU scV fmv bmv qScale sliceInfo bp
Huffman encode the ScImage scY, scU, and scV that contain I-blocks for intra-coded macroblocks and difference blocks for non-intra macroblocks. The ScImages should be quantized. For macroblocks with a valid forward or backward vector in fmv and bmv, the motion vector information is encoded in the macroblock header. Slice headers are inserted according to the list sliceInfo which contains the number of macroblocks in each slice. sliceInfo is repeated if there are more macroblocks than the sum of the number of macroblocks in each slice of sliceInfo.
byte_p_motion_vec_search picHdr y prevY intermediates fmv
Compute the predictive motion vectors from ByteImage prevY to scY using the parameters in picHdr. For half pixel precision, intermediates is an array of three ByteImages which should be computed beforehand using ComputeIntermediatePixels. For each macroblock if the motion vector coding should be used the resultant vector is stored in fmv. Otherwise if the macroblock is intra coded, the exists field of the Vector is set to 0 and the vector values are undefined. Currently supports logarithmic searching only.
byte_b_motion_vec_search picHdr y prevY nextY interPrev interNext sliceInfo fmv bmv
Analogous to BytePMotionVecSearch. Determines the best of forward, backward, and interpolative predictions and finds the appropriate motion vectors from currY, prevY, and nextY. Two arrays of the type described below in ComputeIntermediatePixels are used for searching in half pixel precision. Slice information is necessary to determine if a macroblock can be skipped, in which case the exists field of both Vectors in fmv and bmv are set to 2. For interpolative prediction, both exists fields are set to 1; for forward prediction, only the Vector of fmv is set to exists; for backward prediction, only the Vector of bmv. If the exists fields in both fmv and bmv are 0, the macroblock should be intracoded. Currently supports logarithmic searching only.
byte_compute_intermediates original intermediates
Use this function to pre-compute the intermediate values between pixels when using half-pixel precision motion search. intermediates should be a list of three ByteImages corresponding to the intermediate x values, intermediate y values, and intermediate xy values. If the dimensions of original is w x h, the first ByteImage in intermediates is (w-1) x h, the second is w x (h-1), and the third is (w-1) x (h-1).
mpeg_video_index_new size
Allocate a new MpegVideoIndex, and return a pointer to it.
mpeg_video_index_free index
Deallocate the video index index.
mpeg_video_index_get_type index frameNum
mpeg_video_index_get_next index frameNum
mpeg_video_index_get_past index frameNum
mpeg_video_index_get_offset index frameNum
mpeg_video_index_get_length index frameNum
These functions query the specific fields of the current video index element:
- the frame number of the current element
- the number of frames to skip to get the next forward reference frame (for B frames only)
- the number of frames to skip to get the previous reference frame (for B and P frames)
- the bit offset in the bitstream of frameNum
- the length of frameNum in bits
mpeg_video_index_parse bp index
Assuming an MpegVideoIndex is encoded in the bitstream which bp is attached to, parse the bitstream and store the index in index.
mpeg_video_index_encode index bp
Encode the contents of index into the output bitstream using the bitparser bp.
mpeg_video_index_findrefs index frameNum
mpeg_video_index_table_add video_index displaynum bitOffset type length pastFrame futFrame
Add an element to the video index index. The user must ensure that index is large enough to hold another element.
mpeg_video_index_resize index newSize
Resize index to hold more elements. newSize represents the size of the index as a whole, not just the number of elements to add.
mpeg_get_curr_start_code bp
Return the type of the current header the BitParser bp currently is at. Possible values returned are "seq-start-code", "gop-start-code", "pic-start-code", "slice-start-code", "seq-end-code", "sys-start-code", "sys-end-code", or unknown". (slice-start-code indicates we are at the beginning of a picture body).
mpeg_any_hdr_find bp
Advance the BitParser bp's cursor to the next MPEG start code (0x000001??). Return the number of bytes skipped.
mpeg_seq_end_code_encode bp
Encode the sequence end code (0x000001b7) to the bitstream using BitParser bp.
Last updated : Saturday, November 14, 1998, 07:50 PM