@ -235,7 +235,6 @@ typedef struct {
AVPacket * prev_pkt ;
int done ;
int has_cluster_id ;
/* What to skip before effectively reading a packet. */
int skip_to_keyframe ;
@ -471,7 +470,7 @@ static EbmlSyntax matroska_segment[] = {
{ MATROSKA_ID_CUES , EBML_NEST , 0 , 0 , { . n = matroska_index } } ,
{ MATROSKA_ID_TAGS , EBML_NEST , 0 , 0 , { . n = matroska_tags } } ,
{ MATROSKA_ID_SEEKHEAD , EBML_NEST , 0 , 0 , { . n = matroska_seekhead } } ,
{ MATROSKA_ID_CLUSTER , EBML_STOP , 0 , offsetof ( MatroskaDemuxContext , has_cluster_id ) } ,
{ MATROSKA_ID_CLUSTER , EBML_STOP } ,
{ 0 }
} ;
@ -795,7 +794,7 @@ static int ebml_parse_elem(MatroskaDemuxContext *matroska,
matroska - > segment_start = url_ftell ( matroska - > ctx - > pb ) ;
return ebml_parse_nest ( matroska , syntax - > def . n , data ) ;
case EBML_PASS : return ebml_parse_id ( matroska , syntax - > def . n , id , data ) ;
case EBML_STOP : * ( int * ) data = 1 ; return 1 ;
case EBML_STOP : return 1 ;
default : return url_fseek ( pb , length , SEEK_CUR ) < 0 ? AVERROR ( EIO ) : 0 ;
}
if ( res = = AVERROR_INVALIDDATA )
@ -1797,14 +1796,8 @@ static int matroska_parse_cluster(MatroskaDemuxContext *matroska)
int i , res ;
int64_t pos = url_ftell ( matroska - > ctx - > pb ) ;
matroska - > prev_pkt = NULL ;
if ( matroska - > has_cluster_id ) {
/* For the first cluster we parse, its ID was already read as
part of matroska_read_header ( ) , so don ' t read it again */
res = ebml_parse_id ( matroska , matroska_clusters ,
MATROSKA_ID_CLUSTER , & cluster ) ;
if ( matroska - > current_id )
pos - = 4 ; /* sizeof the ID which was already read */
matroska - > has_cluster_id = 0 ;
} else
res = ebml_parse ( matroska , matroska_clusters , & cluster ) ;
blocks_list = & cluster . blocks ;
blocks = blocks_list - > elem ;