avformat/smacker: Use st->priv_data to store array
It simplifies freeing and allows to completely remove smacker_read_close. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
This commit is contained in:
		
							parent
							
								
									638ef5f758
								
							
						
					
					
						commit
						e40ad1c0d4
					
				@ -205,10 +205,11 @@ static int smacker_read_header(AVFormatContext *s)
 | 
				
			|||||||
    avio_rl32(pb); /* padding */
 | 
					    avio_rl32(pb); /* padding */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /* setup data */
 | 
					    /* setup data */
 | 
				
			||||||
    smk->frm_size  = av_malloc_array(smk->frames, sizeof(*smk->frm_size) +
 | 
					    st->priv_data  = av_malloc_array(smk->frames, sizeof(*smk->frm_size) +
 | 
				
			||||||
                                                  sizeof(*smk->frm_flags));
 | 
					                                                  sizeof(*smk->frm_flags));
 | 
				
			||||||
    if (!smk->frm_size)
 | 
					    if (!st->priv_data)
 | 
				
			||||||
        return AVERROR(ENOMEM);
 | 
					        return AVERROR(ENOMEM);
 | 
				
			||||||
 | 
					    smk->frm_size  = st->priv_data;
 | 
				
			||||||
    smk->frm_flags = (void*)(smk->frm_size + smk->frames);
 | 
					    smk->frm_flags = (void*)(smk->frm_size + smk->frames);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /* read frame info */
 | 
					    /* read frame info */
 | 
				
			||||||
@ -219,7 +220,6 @@ static int smacker_read_header(AVFormatContext *s)
 | 
				
			|||||||
        /* load trees to extradata, they will be unpacked by decoder */
 | 
					        /* load trees to extradata, they will be unpacked by decoder */
 | 
				
			||||||
        (ret = ffio_read_size(pb, par->extradata + 16,
 | 
					        (ret = ffio_read_size(pb, par->extradata + 16,
 | 
				
			||||||
                              par->extradata_size - 16)) < 0) {
 | 
					                              par->extradata_size - 16)) < 0) {
 | 
				
			||||||
        av_freep(&smk->frm_size);
 | 
					 | 
				
			||||||
        return ret;
 | 
					        return ret;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -351,15 +351,6 @@ next_frame:
 | 
				
			|||||||
    return ret;
 | 
					    return ret;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int smacker_read_close(AVFormatContext *s)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
    SmackerContext *smk = s->priv_data;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    av_freep(&smk->frm_size);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    return 0;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
AVInputFormat ff_smacker_demuxer = {
 | 
					AVInputFormat ff_smacker_demuxer = {
 | 
				
			||||||
    .name           = "smk",
 | 
					    .name           = "smk",
 | 
				
			||||||
    .long_name      = NULL_IF_CONFIG_SMALL("Smacker"),
 | 
					    .long_name      = NULL_IF_CONFIG_SMALL("Smacker"),
 | 
				
			||||||
@ -367,5 +358,4 @@ AVInputFormat ff_smacker_demuxer = {
 | 
				
			|||||||
    .read_probe     = smacker_probe,
 | 
					    .read_probe     = smacker_probe,
 | 
				
			||||||
    .read_header    = smacker_read_header,
 | 
					    .read_header    = smacker_read_header,
 | 
				
			||||||
    .read_packet    = smacker_read_packet,
 | 
					    .read_packet    = smacker_read_packet,
 | 
				
			||||||
    .read_close     = smacker_read_close,
 | 
					 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user