1
mirror of https://git.videolan.org/git/ffmpeg.git synced 2024-09-13 10:39:08 +02:00

doc/examples/extract_mvs: make pkt local to the main function

This commit is contained in:
Matthieu Bouron 2017-04-03 16:15:58 +02:00
parent 82116bd8a4
commit 1cf93196fc

View File

@ -31,13 +31,11 @@ static const char *src_filename = NULL;
static int video_stream_idx = -1;
static AVFrame *frame = NULL;
static AVPacket pkt;
static int video_frame_count = 0;
static int decode_packet(void)
static int decode_packet(const AVPacket *pkt)
{
if (pkt.stream_index == video_stream_idx) {
int ret = avcodec_send_packet(video_dec_ctx, &pkt);
int ret = avcodec_send_packet(video_dec_ctx, pkt);
if (ret < 0) {
fprintf(stderr, "Error while sending a packet to the decoder: %s\n", av_err2str(ret));
return ret;
@ -71,7 +69,6 @@ static int decode_packet(void)
av_frame_unref(frame);
}
}
}
return 0;
}
@ -124,6 +121,7 @@ static int open_codec_context(AVFormatContext *fmt_ctx, enum AVMediaType type)
int main(int argc, char **argv)
{
int ret = 0;
AVPacket pkt = { 0 };
if (argc != 2) {
fprintf(stderr, "Usage: %s <video>\n", argv[0]);
@ -162,21 +160,17 @@ int main(int argc, char **argv)
printf("framenum,source,blockw,blockh,srcx,srcy,dstx,dsty,flags\n");
/* initialize packet, set data to NULL, let the demuxer fill it */
av_init_packet(&pkt);
/* read frames from the file */
while (av_read_frame(fmt_ctx, &pkt) >= 0) {
ret = decode_packet();
if (pkt.stream_index == video_stream_idx)
ret = decode_packet(&pkt);
av_packet_unref(&pkt);
if (ret < 0)
break;
}
/* flush cached frames */
pkt.data = NULL;
pkt.size = 0;
decode_packet();
decode_packet(NULL);
end:
avcodec_free_context(&video_dec_ctx);