|  |  | @@ -336,20 +336,15 @@ static void end_ebml_master(AVIOContext *pb, ebml_master master) | 
		
	
		
			
			|  |  |  | static int start_ebml_master_crc32(AVIOContext *pb, AVIOContext **dyn_cp, MatroskaMuxContext *mkv, | 
		
	
		
			
			|  |  |  | ebml_master *master, uint32_t elementid, uint64_t expectedsize) | 
		
	
		
			
			|  |  |  | { | 
		
	
		
			
			|  |  |  | int ret; | 
		
	
		
			
			|  |  |  | int ret, bytes = expectedsize ? ebml_num_size(expectedsize) : 8; | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | if ((ret = avio_open_dyn_buf(dyn_cp)) < 0) | 
		
	
		
			
			|  |  |  | return ret; | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | if (pb->seekable & AVIO_SEEKABLE_NORMAL) { | 
		
	
		
			
			|  |  |  | int bytes = expectedsize ? ebml_num_size(expectedsize) : 8; | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | put_ebml_id(pb, elementid); | 
		
	
		
			
			|  |  |  | *master = (ebml_master) { avio_tell(pb), bytes }; | 
		
	
		
			
			|  |  |  | if (mkv->write_crc) | 
		
	
		
			
			|  |  |  | put_ebml_void(*dyn_cp, 6); /* Reserve space for CRC32 so position/size calculations using avio_tell() take it into account */ | 
		
	
		
			
			|  |  |  | } else | 
		
	
		
			
			|  |  |  | *master = start_ebml_master(*dyn_cp, elementid, expectedsize); | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | return 0; | 
		
	
		
			
			|  |  |  | } | 
		
	
	
		
			
				|  |  | @@ -360,7 +355,6 @@ static void end_ebml_master_crc32(AVIOContext *pb, AVIOContext **dyn_cp, Matrosk | 
		
	
		
			
			|  |  |  | uint8_t *buf, crc[4]; | 
		
	
		
			
			|  |  |  | int size, skip = 0; | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | if (pb->seekable & AVIO_SEEKABLE_NORMAL) { | 
		
	
		
			
			|  |  |  | size = avio_close_dyn_buf(*dyn_cp, &buf); | 
		
	
		
			
			|  |  |  | put_ebml_num(pb, size, master.sizebytes); | 
		
	
		
			
			|  |  |  | if (mkv->write_crc) { | 
		
	
	
		
			
				|  |  | @@ -369,11 +363,7 @@ static void end_ebml_master_crc32(AVIOContext *pb, AVIOContext **dyn_cp, Matrosk | 
		
	
		
			
			|  |  |  | put_ebml_binary(pb, EBML_ID_CRC32, crc, sizeof(crc)); | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | avio_write(pb, buf + skip, size - skip); | 
		
	
		
			
			|  |  |  | } else { | 
		
	
		
			
			|  |  |  | end_ebml_master(*dyn_cp, master); | 
		
	
		
			
			|  |  |  | size = avio_close_dyn_buf(*dyn_cp, &buf); | 
		
	
		
			
			|  |  |  | avio_write(pb, buf, size); | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | av_free(buf); | 
		
	
		
			
			|  |  |  | *dyn_cp = NULL; | 
		
	
		
			
			|  |  |  | } | 
		
	
	
		
			
				|  |  | 
 |