int smush_size;
} BinkDemuxContext;
-static int probe(AVProbeData *p)
+static int probe(const AVProbeData *p)
{
const uint8_t *b = p->buf;
int smush = AV_RN32(p->buf) == AV_RN32("SMUS");
uint16_t flags;
int keyframe;
int ret;
+ uint32_t signature;
+ uint8_t revision;
vst = avformat_new_stream(s, NULL);
if (!vst)
vst->codecpar->codec_id = AV_CODEC_ID_NONE;
}
- if (ff_get_extradata(s, vst->codecpar, pb, 4) < 0)
- return AVERROR(ENOMEM);
+ if ((ret = ff_get_extradata(s, vst->codecpar, pb, 4)) < 0)
+ return ret;
bink->num_audio_tracks = avio_rl32(pb);
return AVERROR(EIO);
}
- if (bink->num_audio_tracks) {
- uint32_t signature = (vst->codecpar->codec_tag & 0xFFFFFF);
- uint8_t revision = ((vst->codecpar->codec_tag >> 24) % 0xFF);
+ signature = (vst->codecpar->codec_tag & 0xFFFFFF);
+ revision = ((vst->codecpar->codec_tag >> 24) % 0xFF);
- if ((signature == AV_RL32("BIK") && (revision == 0x6b)) || /* k */
- (signature == AV_RL32("KB2") && (revision == 0x69 || revision == 0x6a || revision == 0x6b))) /* i,j,k */
- avio_skip(pb, 4); /* unknown new field */
+ if ((signature == AV_RL32("BIK") && (revision == 'k')) ||
+ (signature == AV_RL32("KB2") && (revision == 'i' || revision == 'j' || revision == 'k')))
+ avio_skip(pb, 4); /* unknown new field */
+ if (bink->num_audio_tracks) {
avio_skip(pb, 4 * bink->num_audio_tracks); /* max decoded size */
for (i = 0; i < bink->num_audio_tracks; i++) {
ast->codecpar->channels = 1;
ast->codecpar->channel_layout = AV_CH_LAYOUT_MONO;
}
- if (ff_alloc_extradata(ast->codecpar, 4))
- return AVERROR(ENOMEM);
+ if ((ret = ff_alloc_extradata(ast->codecpar, 4)) < 0)
+ return ret;
AV_WL32(ast->codecpar->extradata, vst->codecpar->codec_tag);
}
{
BinkDemuxContext *bink = s->priv_data;
AVStream *vst = s->streams[0];
+ int64_t ret;
if (!(s->pb->seekable & AVIO_SEEKABLE_NORMAL))
return -1;
/* seek to the first frame */
- if (avio_seek(s->pb, vst->index_entries[0].pos + bink->smush_size, SEEK_SET) < 0)
- return -1;
+ ret = avio_seek(s->pb, vst->index_entries[0].pos + bink->smush_size, SEEK_SET);
+ if (ret < 0)
+ return ret;
bink->video_pts = 0;
memset(bink->audio_pts, 0, sizeof(bink->audio_pts));