X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fdemux%2Fogg.c;h=c41c962756b8ef227e1e6b95c88dba79536595c9;hb=b1efb935f041e90f2fee0a706ce542e5f7d94977;hp=5e50b7a55297a0b22759b5335d9d941525a1c237;hpb=fd7f8f854a13f7b65cb2b8622755aa47ee932919;p=vlc diff --git a/modules/demux/ogg.c b/modules/demux/ogg.c index 5e50b7a552..c41c962756 100644 --- a/modules/demux/ogg.c +++ b/modules/demux/ogg.c @@ -806,7 +806,13 @@ static void Ogg_DecodePacket( demux_t *p_demux, 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<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; @@ -1103,7 +1109,7 @@ static int Ogg_FindLogicalStreams( demux_t *p_demux ) /* 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; @@ -1214,7 +1220,7 @@ static int Ogg_FindLogicalStreams( demux_t *p_demux ) 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] ); @@ -1549,7 +1555,7 @@ static void Ogg_ExtractMeta( demux_t *p_demux, vlc_fourcc_t i_codec, const uint8 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; @@ -1560,7 +1566,7 @@ static void Ogg_ExtractMeta( demux_t *p_demux, vlc_fourcc_t i_codec, const uint8 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 ); @@ -1826,7 +1832,7 @@ static void Ogg_ReadAnnodexHeader( vlc_object_t *p_this, 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 ); }