typedef struct R3DContext {
unsigned video_offsets_count;
- unsigned *video_offsets;
unsigned rdvo_offset;
int audio_channels;
int i;
r3d->video_offsets_count = (atom->size - 8) / 4;
- r3d->video_offsets = av_malloc(atom->size);
- if (!r3d->video_offsets)
- return AVERROR(ENOMEM);
for (i = 0; i < r3d->video_offsets_count; i++) {
- r3d->video_offsets[i] = avio_rb32(s->pb);
- if (!r3d->video_offsets[i]) {
+ unsigned video_offset = avio_rb32(s->pb);
+ if (!video_offset) {
r3d->video_offsets_count = i;
break;
}
- av_log(s, AV_LOG_TRACE, "video offset %d: %#x\n", i, r3d->video_offsets[i]);
+ av_log(s, AV_LOG_TRACE, "video offset %d: %#x\n", i, video_offset);
}
if (st->avg_frame_rate.num)
return 0;
}
-static int r3d_close(AVFormatContext *s)
-{
- R3DContext *r3d = s->priv_data;
-
- av_freep(&r3d->video_offsets);
-
- return 0;
-}
-
AVInputFormat ff_r3d_demuxer = {
.name = "r3d",
.long_name = NULL_IF_CONFIG_SMALL("REDCODE R3D"),
.read_probe = r3d_probe,
.read_header = r3d_read_header,
.read_packet = r3d_read_packet,
- .read_close = r3d_close,
.read_seek = r3d_seek,
};