[Mp4-tech] Only half POC range available for ordered ranges?

Gary Sullivan garysull windows.microsoft.com
Mon Sep 10 16:32:51 EDT 2007


Mr. Palfreyman et al,

I think you are not interpreting the equations correctly.  I think the statement of "the fact that POC increases by 2 on each frame or field pair" is not correct in general (i.e., unless the encoder wants it to be correct).

I think that you have also provided insufficient data for your example.  For example, you did not provide the values of pic_order_cnt_lsb, field_pic_flag and bottom_field_flag.  You also did not explicitly provide the value of MaxPicOrderCntLsb.

Guessing somwhat, I suspect that in your example, you are saying that pic_order_cnt_lsb = 20 and MaxPicOrderCntLsb = 64.  If that is true, then consider the following:

 if( ( pic_order_cnt_lsb < prevPicOrderCntLsb ) &&
   ( ( prevPicOrderCntLsb – pic_order_cnt_lsb ) >= ( MaxPicOrderCntLsb / 2 ) ) )
  PicOrderCntMsb = prevPicOrderCntMsb + MaxPicOrderCntLsb
 else if( ( pic_order_cnt_lsb > prevPicOrderCntLsb ) &&
   ( ( pic_order_cnt_lsb – prevPicOrderCntLsb ) > ( MaxPicOrderCntLsb / 2 ) ) )
  PicOrderCntMsb = prevPicOrderCntMsb – MaxPicOrderCntLsb
 else
  PicOrderCntMsb = prevPicOrderCntMsb
reduces to

 if( ( 20 < 18 ) && anything )
  doesn't matter because the expression is false
 else if( ( 20 > 18 ) && ( ( 20 – 18 ) > ( 32 ) ) )
  doesn't matter because the expression is false
 else
  PicOrderCntMsb = 0
Which is different than what you said.

Best Regards,

Gary Sullivan


________________________________
From: mp4-tech-bounces lists.mpegif.org [mailto:mp4-tech-bounces lists.mpegif.org] On Behalf Of Andrew Palfreyman
Sent: Monday, September 10, 2007 12:39 PM
To: mp4-tech lists.mpegif.org
Subject: [Mp4-tech] Only half POC range available for ordered ranges?

Per paragraph 8.2.1.1 (see attached analysis) for picture_count_type = 0, it would appear that, while POCs increase between consecutive frames in stream order, the maximum number of such frames in this group can be no larger than MaxPicOrderCntLsb / 2 , else POC will go negative. I'm curious as to why this restriction exists. I'm guessing it relates somehow to the fact that POC increases by 2 on each frame or field pair. I'm also curious as to why negative POC values are interpreted as such and instead aren't allowed to simply roll over.

Best,
Andrew Palfreyman
-------------- next part --------------
An HTML attachment was scrubbed...
URL: /pipermail/mp4-tech/attachments/20070910/7a84d11b/attachment-0001.html


More information about the Mp4-tech mailing list