- case 0x7:
- case 0x8:
- /* SPS, PPS */
- break;
-
- default:
- /* H.264 in mp4 (stolen from mp4creator) */
- buf->data[buf->size+0] = ( ( size - 4 ) >> 24 ) & 0xFF;
- buf->data[buf->size+1] = ( ( size - 4 ) >> 16 ) & 0xFF;
- buf->data[buf->size+2] = ( ( size - 4 ) >> 8 ) & 0xFF;
- buf->data[buf->size+3] = ( ( size - 4 ) >> 0 ) & 0xFF;
- switch( pic_out.i_type )
- {
- /* Decide what type of frame we have. */
- case X264_TYPE_IDR:
- buf->frametype = HB_FRAME_IDR;
- /* if we have a chapter marker pending and this
- frame's presentation time stamp is at or after
- the marker's time stamp, use this as the
- chapter start. */
- if( pv->next_chap != 0 && pv->next_chap <= pic_out.i_pts )
- {
- pv->next_chap = 0;
- buf->new_chap = 1;
- }
- break;
- case X264_TYPE_I:
- buf->frametype = HB_FRAME_I;
- break;
- case X264_TYPE_P:
- buf->frametype = HB_FRAME_P;
- break;
- case X264_TYPE_B:
- buf->frametype = HB_FRAME_B;
- break;
- /* This is for b-pyramid, which has reference b-frames
- However, it doesn't seem to ever be used... */
- case X264_TYPE_BREF:
- buf->frametype = HB_FRAME_BREF;
- break;
- /* If it isn't the above, what type of frame is it?? */
- default:
- buf->frametype = 0;
- }
-
- /* Since libx264 doesn't tell us when b-frames are
- themselves reference frames, figure it out on our own. */
- if( (buf->frametype == HB_FRAME_B) && (nal[i].i_ref_idc != NAL_PRIORITY_DISPOSABLE) )
- buf->frametype = HB_FRAME_BREF;
-
- /* Store the output presentation time stamp
- from x264 for use by muxmp4 in off-setting
- b-frames with the CTTS atom. */
- buf->renderOffset = pic_out.i_pts - dts_start + pv->init_delay;
-
- /* Send out the next dts values */
- buf->start = dts_start;
- buf->stop = dts_stop;
-
- buf->size += size;