H264Parser Class Reference

#include <H264Parser.h>

List of all members.

Public Types

enum  { MAX_SLICE_HEADER_SIZE = 256 }
enum  NAL_unit_type {
  UNKNOWN = 0, SLICE = 1, SLICE_DPA = 2, SLICE_DPB = 3,
  SLICE_DPC = 4, SLICE_IDR = 5, SEI = 6, SPS = 7,
  PPS = 8, AU_DELIMITER = 9, END_SEQUENCE = 10, END_STREAM = 11,
  FILLER_DATA = 12, SPS_EXT = 13, AUXILIARY_SLICE = 19
}
enum  SEI_type { SEI_TYPE_PIC_TIMING = 1, SEI_TYPE_USER_DATA_UNREGISTERED = 5, SEI_TYPE_RECOVERY_POINT = 6 }
enum  SLICE_type {
  SLICE_P = 0, SLICE_B = 1, SLICE_I = 2, SLICE_SP = 3,
  SLICE_SI = 4, SLICE_P_a = 5, SLICE_B_a = 6, SLICE_I_a = 7,
  SLICE_SP_a = 8, SLICE_SI_a = 9, SLICE_UNDEF = 10
}
enum  frame_type { FRAME = 'F', FIELD_TOP = 'T', FIELD_BOTTOM = 'B' }

Public Member Functions

 H264Parser (void)
 ~H264Parser (void)
uint32_t addBytes (const uint8_t *bytes, const uint32_t byte_count, const uint64_t stream_offset)
void Reset (void)
QString NAL_type_str (uint8_t type)
bool stateChanged (void) const
uint8_t lastNALtype (void) const
frame_type FieldType (void) const
bool onFrameStart (void) const
bool onKeyFrameStart (void) const
uint pictureWidth (void) const
uint pictureHeight (void) const
uint aspectRatio (void) const
 Computes aspect ratio from picture size and sample aspect ratio.
uint frameRate (void) const
uint64_t frameAUstreamOffset (void) const
uint64_t keyframeAUstreamOffset (void) const
void use_I_forKeyframes (bool val)
uint32_t GetTimeScale (void) const
uint32_t GetUnitsInTick (void) const
void parse_SPS (uint8_t *sps, uint32_t sps_size, bool &interlaced, int32_t &max_ref_frames)

Static Public Member Functions

static int isKeySlice (uint slice_type)
static bool NALisSlice (uint8_t nal_type)

Private Types

enum  constants { EXTENDED_SAR = 255 }

Private Member Functions

void set_AU_pending (void)
bool new_AU (void)
void resetRBSP (void)
bool fillRBSP (const uint8_t *byteP, uint32_t byte_count, bool found_start_code)
void processRBSP (bool rbsp_complete)
bool decode_Header (GetBitContext *gb)
void decode_SPS (GetBitContext *gb)
void decode_PPS (GetBitContext *gb)
void decode_SEI (GetBitContext *gb)
void vui_parameters (GetBitContext *gb)

Private Attributes

bool AU_pending
bool state_changed
bool seen_sps
bool au_contains_keyframe_message
bool is_keyframe
bool I_is_keyframe
uint32_t sync_accumulator
uint8_trbsp_buffer
uint32_t rbsp_buffer_size
uint32_t rbsp_index
uint32_t consecutive_zeros
bool have_unfinished_NAL
int prev_frame_num
int frame_num
uint slice_type
int prev_pic_parameter_set_id
int pic_parameter_set_id
int8_t prev_field_pic_flag
int8_t field_pic_flag
int8_t prev_bottom_field_flag
int8_t bottom_field_flag
uint8_t prev_nal_ref_idc
uint8_t nal_ref_idc
uint8_t prev_pic_order_cnt_type
uint8_t pic_order_cnt_type
int prev_pic_order_cnt_lsb
int pic_order_cnt_lsb
int prev_delta_pic_order_cnt_bottom
int delta_pic_order_cnt_bottom
int prev_delta_pic_order_cnt [2]
int delta_pic_order_cnt [2]
uint8_t prev_nal_unit_type
uint8_t nal_unit_type
uint prev_idr_pic_id
uint idr_pic_id
uint log2_max_frame_num
uint log2_max_pic_order_cnt_lsb
uint seq_parameter_set_id
uint8_t delta_pic_order_always_zero_flag
uint8_t separate_colour_plane_flag
int8_t frame_mbs_only_flag
int8_t pic_order_present_flag
int8_t redundant_pic_cnt_present_flag
uint num_ref_frames
uint redundant_pic_cnt
uint pic_width
uint pic_height
uint frame_crop_left_offset
uint frame_crop_right_offset
uint frame_crop_top_offset
uint frame_crop_bottom_offset
uint8_t aspect_ratio_idc
uint sar_width
uint sar_height
uint32_t unitsInTick
uint32_t timeScale
bool fixedRate
uint64_t pkt_offset
uint64_t AU_offset
uint64_t frame_start_offset
uint64_t keyframe_start_offset
bool on_frame
bool on_key_frame

Detailed Description

Definition at line 51 of file H264Parser.h.


Member Enumeration Documentation

anonymous enum
Enumerator:
MAX_SLICE_HEADER_SIZE 

Definition at line 54 of file H264Parser.h.

Enumerator:
UNKNOWN 
SLICE 
SLICE_DPA 
SLICE_DPB 
SLICE_DPC 
SLICE_IDR 
SEI 
SPS 
PPS 
AU_DELIMITER 
END_SEQUENCE 
END_STREAM 
FILLER_DATA 
SPS_EXT 
AUXILIARY_SLICE 

Definition at line 59 of file H264Parser.h.

Enumerator:
SEI_TYPE_PIC_TIMING 
SEI_TYPE_USER_DATA_UNREGISTERED 
SEI_TYPE_RECOVERY_POINT 

Definition at line 77 of file H264Parser.h.

Enumerator:
SLICE_P 
SLICE_B 
SLICE_I 
SLICE_SP 
SLICE_SI 
SLICE_P_a 
SLICE_B_a 
SLICE_I_a 
SLICE_SP_a 
SLICE_SI_a 
SLICE_UNDEF 

Definition at line 90 of file H264Parser.h.

Enumerator:
FRAME 
FIELD_TOP 
FIELD_BOTTOM 

Definition at line 104 of file H264Parser.h.

enum H264Parser::constants [private]
Enumerator:
EXTENDED_SAR 

Definition at line 171 of file H264Parser.h.


Constructor & Destructor Documentation

H264Parser::H264Parser ( void   ) 

Definition at line 92 of file H264Parser.cpp.

H264Parser::~H264Parser ( void   )  [inline]

Definition at line 111 of file H264Parser.h.


Member Function Documentation

uint32_t H264Parser::addBytes ( const uint8_t bytes,
const uint32_t  byte_count,
const uint64_t  stream_offset 
)
void H264Parser::Reset ( void   ) 
QString H264Parser::NAL_type_str ( uint8_t  type  ) 

Definition at line 156 of file H264Parser.cpp.

bool H264Parser::stateChanged ( void   )  const [inline]
uint8_t H264Parser::lastNALtype ( void   )  const [inline]

Definition at line 122 of file H264Parser.h.

frame_type H264Parser::FieldType ( void   )  const [inline]
bool H264Parser::onFrameStart ( void   )  const [inline]
bool H264Parser::onKeyFrameStart ( void   )  const [inline]
uint H264Parser::pictureWidth ( void   )  const [inline]

Definition at line 135 of file H264Parser.h.

Referenced by DTVRecorder::FindH264Keyframes().

uint H264Parser::pictureHeight ( void   )  const [inline]

Definition at line 136 of file H264Parser.h.

Referenced by DTVRecorder::FindH264Keyframes().

uint H264Parser::aspectRatio ( void   )  const

Computes aspect ratio from picture size and sample aspect ratio.

Definition at line 1232 of file H264Parser.cpp.

Referenced by DTVRecorder::FindH264Keyframes().

uint H264Parser::frameRate ( void   )  const

Definition at line 1221 of file H264Parser.cpp.

Referenced by DTVRecorder::FindH264Keyframes().

uint64_t H264Parser::frameAUstreamOffset ( void   )  const [inline]

Definition at line 143 of file H264Parser.h.

uint64_t H264Parser::keyframeAUstreamOffset ( void   )  const [inline]

Definition at line 144 of file H264Parser.h.

Referenced by DTVRecorder::HandleH264Keyframe().

static int H264Parser::isKeySlice ( uint  slice_type  )  [inline, static]

Definition at line 146 of file H264Parser.h.

Referenced by decode_Header().

static bool H264Parser::NALisSlice ( uint8_t  nal_type  )  [inline, static]

Definition at line 154 of file H264Parser.h.

Referenced by addBytes(), and processRBSP().

void H264Parser::use_I_forKeyframes ( bool  val  )  [inline]

Definition at line 161 of file H264Parser.h.

Referenced by MpegRecorder::OpenV4L2DeviceAsInput().

uint32_t H264Parser::GetTimeScale ( void   )  const [inline]

Definition at line 163 of file H264Parser.h.

Referenced by DTVRecorder::FindH264Keyframes().

uint32_t H264Parser::GetUnitsInTick ( void   )  const [inline]

Definition at line 165 of file H264Parser.h.

Referenced by DTVRecorder::FindH264Keyframes().

void H264Parser::parse_SPS ( uint8_t sps,
uint32_t  sps_size,
bool interlaced,
int32_t max_ref_frames 
)

Definition at line 950 of file H264Parser.cpp.

Referenced by PrivateDecoderVDA::Init().

void H264Parser::set_AU_pending ( void   )  [inline, private]

Definition at line 173 of file H264Parser.h.

Referenced by addBytes(), and processRBSP().

bool H264Parser::new_AU ( void   )  [private]

Definition at line 192 of file H264Parser.cpp.

Referenced by processRBSP().

void H264Parser::resetRBSP ( void   )  [private]

Definition at line 312 of file H264Parser.cpp.

Referenced by addBytes(), and Reset().

bool H264Parser::fillRBSP ( const uint8_t byteP,
uint32_t  byte_count,
bool  found_start_code 
) [private]

Definition at line 319 of file H264Parser.cpp.

Referenced by addBytes().

void H264Parser::processRBSP ( bool  rbsp_complete  )  [private]

Definition at line 498 of file H264Parser.cpp.

Referenced by addBytes().

bool H264Parser::decode_Header ( GetBitContext *  gb  )  [private]

Definition at line 575 of file H264Parser.cpp.

Referenced by processRBSP().

void H264Parser::decode_SPS ( GetBitContext *  gb  )  [private]

Definition at line 759 of file H264Parser.cpp.

Referenced by parse_SPS(), and processRBSP().

void H264Parser::decode_PPS ( GetBitContext *  gb  )  [private]

Definition at line 960 of file H264Parser.cpp.

Referenced by processRBSP().

void H264Parser::decode_SEI ( GetBitContext *  gb  )  [private]

Definition at line 1033 of file H264Parser.cpp.

Referenced by processRBSP().

void H264Parser::vui_parameters ( GetBitContext *  gb  )  [private]

Definition at line 1072 of file H264Parser.cpp.

Referenced by decode_SPS().


Member Data Documentation

Definition at line 194 of file H264Parser.h.

Referenced by processRBSP(), Reset(), and set_AU_pending().

Definition at line 195 of file H264Parser.h.

Referenced by addBytes(), processRBSP(), Reset(), and stateChanged().

Definition at line 196 of file H264Parser.h.

Referenced by decode_SPS(), and Reset().

Definition at line 197 of file H264Parser.h.

Referenced by decode_SEI(), H264Parser(), processRBSP(), and set_AU_pending().

Definition at line 198 of file H264Parser.h.

Referenced by decode_Header(), processRBSP(), and Reset().

Definition at line 199 of file H264Parser.h.

Referenced by decode_Header(), H264Parser(), and use_I_forKeyframes().

Definition at line 201 of file H264Parser.h.

Referenced by addBytes(), and Reset().

Definition at line 202 of file H264Parser.h.

Referenced by fillRBSP(), H264Parser(), processRBSP(), and ~H264Parser().

Definition at line 203 of file H264Parser.h.

Referenced by fillRBSP(), and H264Parser().

Definition at line 204 of file H264Parser.h.

Referenced by fillRBSP(), processRBSP(), and resetRBSP().

Definition at line 205 of file H264Parser.h.

Referenced by fillRBSP(), and resetRBSP().

Definition at line 206 of file H264Parser.h.

Referenced by addBytes(), processRBSP(), and resetRBSP().

Definition at line 208 of file H264Parser.h.

Referenced by new_AU(), and Reset().

int H264Parser::frame_num [private]

Definition at line 208 of file H264Parser.h.

Referenced by decode_Header(), new_AU(), and Reset().

Definition at line 209 of file H264Parser.h.

Referenced by decode_Header(), and Reset().

Definition at line 210 of file H264Parser.h.

Referenced by new_AU(), and Reset().

Definition at line 210 of file H264Parser.h.

Referenced by decode_Header(), decode_PPS(), new_AU(), and Reset().

Definition at line 211 of file H264Parser.h.

Referenced by new_AU(), and Reset().

Definition at line 211 of file H264Parser.h.

Referenced by decode_Header(), new_AU(), and Reset().

Definition at line 212 of file H264Parser.h.

Referenced by new_AU(), and Reset().

Definition at line 212 of file H264Parser.h.

Referenced by decode_Header(), FieldType(), new_AU(), and Reset().

Definition at line 213 of file H264Parser.h.

Referenced by new_AU(), and Reset().

Definition at line 213 of file H264Parser.h.

Referenced by addBytes(), new_AU(), and Reset().

Definition at line 214 of file H264Parser.h.

Referenced by new_AU(), and Reset().

Definition at line 214 of file H264Parser.h.

Referenced by decode_Header(), decode_SPS(), new_AU(), and Reset().

Definition at line 215 of file H264Parser.h.

Referenced by new_AU(), and Reset().

Definition at line 215 of file H264Parser.h.

Referenced by decode_Header(), new_AU(), and Reset().

Definition at line 216 of file H264Parser.h.

Referenced by new_AU(), and Reset().

Definition at line 216 of file H264Parser.h.

Referenced by decode_Header(), new_AU(), and Reset().

Definition at line 217 of file H264Parser.h.

Referenced by new_AU(), and Reset().

Definition at line 217 of file H264Parser.h.

Referenced by decode_Header(), new_AU(), and Reset().

Definition at line 218 of file H264Parser.h.

Referenced by new_AU(), and Reset().

Definition at line 218 of file H264Parser.h.

Referenced by addBytes(), decode_Header(), lastNALtype(), new_AU(), processRBSP(), and Reset().

Definition at line 219 of file H264Parser.h.

Referenced by new_AU(), and Reset().

Definition at line 219 of file H264Parser.h.

Referenced by decode_Header(), new_AU(), and Reset().

Definition at line 221 of file H264Parser.h.

Referenced by decode_Header(), decode_SPS(), and Reset().

Definition at line 221 of file H264Parser.h.

Referenced by decode_Header(), decode_SPS(), and Reset().

Definition at line 222 of file H264Parser.h.

Referenced by decode_PPS(), and Reset().

Definition at line 224 of file H264Parser.h.

Referenced by decode_Header(), decode_SPS(), and Reset().

Definition at line 225 of file H264Parser.h.

Referenced by decode_Header(), decode_SPS(), and Reset().

Definition at line 226 of file H264Parser.h.

Referenced by decode_Header(), decode_SPS(), parse_SPS(), and Reset().

Definition at line 227 of file H264Parser.h.

Referenced by decode_Header(), decode_PPS(), and Reset().

Definition at line 228 of file H264Parser.h.

Referenced by decode_Header(), decode_PPS(), and Reset().

Definition at line 230 of file H264Parser.h.

Referenced by decode_SPS(), parse_SPS(), and Reset().

Definition at line 231 of file H264Parser.h.

Referenced by decode_Header(), and Reset().

Definition at line 233 of file H264Parser.h.

Referenced by aspectRatio(), decode_SPS(), pictureWidth(), and Reset().

Definition at line 233 of file H264Parser.h.

Referenced by aspectRatio(), decode_SPS(), pictureHeight(), and Reset().

Definition at line 234 of file H264Parser.h.

Referenced by decode_SPS(), and Reset().

Definition at line 235 of file H264Parser.h.

Referenced by decode_SPS(), and Reset().

Definition at line 236 of file H264Parser.h.

Referenced by decode_SPS(), and Reset().

Definition at line 237 of file H264Parser.h.

Referenced by decode_SPS(), and Reset().

Definition at line 238 of file H264Parser.h.

Referenced by aspectRatio(), Reset(), and vui_parameters().

Definition at line 239 of file H264Parser.h.

Referenced by aspectRatio(), Reset(), and vui_parameters().

Definition at line 239 of file H264Parser.h.

Referenced by aspectRatio(), Reset(), and vui_parameters().

Definition at line 240 of file H264Parser.h.

Referenced by frameRate(), GetUnitsInTick(), Reset(), and vui_parameters().

Definition at line 240 of file H264Parser.h.

Referenced by frameRate(), GetTimeScale(), Reset(), and vui_parameters().

Definition at line 241 of file H264Parser.h.

Referenced by Reset(), and vui_parameters().

Definition at line 243 of file H264Parser.h.

Referenced by addBytes(), and set_AU_pending().

Definition at line 243 of file H264Parser.h.

Referenced by processRBSP(), Reset(), and set_AU_pending().

Definition at line 243 of file H264Parser.h.

Referenced by frameAUstreamOffset(), processRBSP(), and Reset().

Definition at line 243 of file H264Parser.h.

Referenced by keyframeAUstreamOffset(), processRBSP(), and Reset().

Definition at line 244 of file H264Parser.h.

Referenced by addBytes(), onFrameStart(), processRBSP(), and Reset().

Definition at line 244 of file H264Parser.h.

Referenced by addBytes(), onKeyFrameStart(), processRBSP(), and Reset().


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends
Generated on Mon May 28 06:42:05 2012 for MythTV by  doxygen 1.6.3