- if( p_sys->i_headers == 0 && p_dec->fmt_in.i_extra )
- {
- /* Headers already available as extra data */
- p_sys->i_headers = 3;
- }
- else if( oggpacket.bytes && p_sys->i_headers < 3 )
- {
- /* Backup headers as extra data */
- uint8_t *p_extra;
-
- p_dec->fmt_in.p_extra =
- realloc( p_dec->fmt_in.p_extra, p_dec->fmt_in.i_extra +
- oggpacket.bytes + 2 );
- p_extra = ((uint8_t *)p_dec->fmt_in.p_extra) + p_dec->fmt_in.i_extra;
- *(p_extra++) = oggpacket.bytes >> 8;
- *(p_extra++) = oggpacket.bytes & 0xFF;
-
- memcpy( p_extra, oggpacket.packet, oggpacket.bytes );
- p_dec->fmt_in.i_extra += oggpacket.bytes + 2;
-
- block_Release( *pp_block );
- p_sys->i_headers++;
- return NULL;
- }
-
- if( p_sys->i_headers == 3 )