p_block->i_length = 0;
}
else if( p_stream->fmt.i_codec == VLC_CODEC_THEORA )
+ {
p_block->i_dts = p_block->i_pts = i_pts;
+ if( (p_oggpacket->granulepos & ((1<<p_stream->i_granule_shift)-1)) == 0 )
+ {
+ p_block->i_flags |= BLOCK_FLAG_TYPE_I;
+ }
+ }
else if( p_stream->fmt.i_codec == VLC_CODEC_DIRAC )
{
ogg_int64_t dts = p_oggpacket->granulepos >> 31;
/* Check for audio header (old format) */
else if( GetDWLE((oggpacket.packet+96)) == 0x05589F81 )
{
- unsigned int i_extra_size;
+ int i_extra_size;
unsigned int i_format_tag;
p_stream->fmt.i_cat = AUDIO_ES;
else if( !strncmp( st->streamtype, "audio", 5 ) )
{
char p_buffer[5];
- unsigned int i_extra_size;
+ int i_extra_size;
int i_format_tag;
st->sh.audio.channels = GetWLE( &oggpacket.packet[1+44] );
switch( i_codec )
{
- /* 3 headers with the 2° one being the comments */
+ /* 3 headers with the 2° one being the comments */
case VLC_CODEC_VORBIS:
Ogg_ExtractXiphMeta( p_demux, p_headers, i_headers, 1+6, false );
break;
Ogg_ExtractXiphMeta( p_demux, p_headers, i_headers, 0, false );
break;
- /* N headers with the 2° one being the comments */
+ /* N headers with the 2° one being the comments */
case VLC_CODEC_KATE:
/* 1 byte for header type, 7 bit for magic, 1 reserved zero byte */
Ogg_ExtractXiphMeta( p_demux, p_headers, i_headers, 1+7+1, true );
uint8_t *p = memchr( &p_oggpacket->packet[42], '\r',
p_oggpacket->bytes - 1 );
if( p && p[0] == '\r' && p[1] == '\n' )
- sscanf( (char*)(&p_oggpacket->packet[42]), "%1024s\r\n",
+ sscanf( (char*)(&p_oggpacket->packet[42]), "%1023s\r\n",
content_type_string );
}