frames and frame rate of h.264 stream

Dudi.r dudi017 at
Mon Apr 14 01:42:33 PDT 2014


Im trying to implement seek on pcap file that contain h.264 stream and I
have two basic questions about h.264.

for doing so, I have function that counts the number of frame that I need to
skip and continue display the video from there.

              int i=0;
              int frames_to_skip= (int) (dest_time - curr_time)* FRAME_RATE;

              while (i< frames_to_skip)
				        pcap_next_ex(pcap, &header, &data);  //data- is pointer to
current packet.

					if(start_of_frame (data))											  

pcap_next_ex () returns the next pcap packet
start_of_frame () function, checks if the current packet is start of a

for now, I dont know why, but if I skip 15 minutes, I get to 17.5 minute and
the delta keeps growing for bigger skips.

there are two thing I am not sure about and might be the resons:

1. start of frame- there are FU headers that indicates (with start and stop
bits) if this packet is the start or the end of FU-A picture.

     is it o.k to assume that it is the start\end of frame? (I am counting
only if the start bit is set to 1) 
     there are also NAL units in the stream:  Mark NAL unit- Coded slice of
a non-IDR picture.
     this is also indicates something about the start\ end of frame?
     I think I am counting frames 

2. the frame rate- from my understanding, the frame rate is calculated as

         *if the "Fixed_frame_rate_flag" is 0:* -> Frame_rate= time_scale /

         *if the "Fixed_frame_rate_flag" is 1:* -> Frame_rate= time_scale /
(Fixed_frame_rate_flag * DeltaTfiDivisior)

          “DeltaTfiDivisior” is defined as the table E-6 in the ISO/IEC
           “DeltaTfiDivisior” is defined as the table E-6 in the ISO/IEC

            but there are two parameters (for determine the
DeltaTfiDivisior)- field_pic_flag and pic_struct that not include in the
h.264 stream...

  is it correct? do someone know how to calculate the frame rate from the
h.264 fields?

I will be very happy for some help on that issue.


View this message in context:
Sent from the GStreamer-devel mailing list archive at

More information about the gstreamer-devel mailing list