|
|
|
@ -172,22 +172,20 @@ static int read_header(AVFormatContext *s) |
|
|
|
|
!p->blocks_offset_table || |
|
|
|
|
!p->video_frame || |
|
|
|
|
!p->audio_frame || |
|
|
|
|
!p->temp_audio_frame) { |
|
|
|
|
ret = AVERROR(ENOMEM); |
|
|
|
|
goto fail; |
|
|
|
|
} |
|
|
|
|
!p->temp_audio_frame) |
|
|
|
|
return AVERROR(ENOMEM); |
|
|
|
|
|
|
|
|
|
avio_seek(pb, p->buffer_size, SEEK_SET); |
|
|
|
|
|
|
|
|
|
ret = read_table(s, p->blocks_count_table, p->nb_frames); |
|
|
|
|
if (ret < 0) |
|
|
|
|
goto fail; |
|
|
|
|
return ret; |
|
|
|
|
ret = read_table(s, p->frames_offset_table, p->nb_frames); |
|
|
|
|
if (ret < 0) |
|
|
|
|
goto fail; |
|
|
|
|
return ret; |
|
|
|
|
ret = read_table(s, p->blocks_offset_table, p->frame_blks); |
|
|
|
|
if (ret < 0) |
|
|
|
|
goto fail; |
|
|
|
|
return ret; |
|
|
|
|
|
|
|
|
|
p->got_audio = 0; |
|
|
|
|
p->current_frame = 0; |
|
|
|
@ -196,11 +194,6 @@ static int read_header(AVFormatContext *s) |
|
|
|
|
avio_seek(pb, p->start_offset, SEEK_SET); |
|
|
|
|
|
|
|
|
|
return 0; |
|
|
|
|
|
|
|
|
|
fail: |
|
|
|
|
read_close(s); |
|
|
|
|
|
|
|
|
|
return ret; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static int read_packet(AVFormatContext *s, AVPacket *pkt) |
|
|
|
@ -275,6 +268,7 @@ const AVInputFormat ff_paf_demuxer = { |
|
|
|
|
.name = "paf", |
|
|
|
|
.long_name = NULL_IF_CONFIG_SMALL("Amazing Studio Packed Animation File"), |
|
|
|
|
.priv_data_size = sizeof(PAFDemuxContext), |
|
|
|
|
.flags_internal = FF_FMT_INIT_CLEANUP, |
|
|
|
|
.read_probe = read_probe, |
|
|
|
|
.read_header = read_header, |
|
|
|
|
.read_packet = read_packet, |
|
|
|
|