unsigned ts;
int size = pkt->size;
uint8_t *data = NULL;
- int flags = -1, flags_size, ret;
+ int flags = -1, flags_size, ret = 0;
int64_t cur_offset = avio_tell(pb);
if (par->codec_type == AVMEDIA_TYPE_AUDIO && !pkt->size) {
case AVMEDIA_TYPE_VIDEO:
flv->videosize += (avio_tell(pb) - cur_offset);
flv->lasttimestamp = flv->acurframeindex / flv->framerate;
+ flv->acurframeindex++;
if (pkt->flags & AV_PKT_FLAG_KEY) {
- double ts = flv->acurframeindex / flv->framerate;
+ double ts = flv->lasttimestamp;
int64_t pos = cur_offset;
- flv->lastkeyframetimestamp = flv->acurframeindex / flv->framerate;
+ flv->lastkeyframetimestamp = ts;
flv->lastkeyframelocation = pos;
- flv_append_keyframe_info(s, flv, ts, pos);
+ ret = flv_append_keyframe_info(s, flv, ts, pos);
+ if (ret < 0)
+ goto fail;
}
- flv->acurframeindex++;
break;
case AVMEDIA_TYPE_AUDIO:
break;
}
}
-
+fail:
av_free(data);
- return pb->error;
+ return ret;
}
static int flv_check_bitstream(struct AVFormatContext *s, const AVPacket *pkt)