Commit 1cf93196 authored by Matthieu Bouron's avatar Matthieu Bouron

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

parent 82116bd8
...@@ -31,13 +31,11 @@ static const char *src_filename = NULL; ...@@ -31,13 +31,11 @@ static const char *src_filename = NULL;
static int video_stream_idx = -1; static int video_stream_idx = -1;
static AVFrame *frame = NULL; static AVFrame *frame = NULL;
static AVPacket pkt;
static int video_frame_count = 0; 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) { if (ret < 0) {
fprintf(stderr, "Error while sending a packet to the decoder: %s\n", av_err2str(ret)); fprintf(stderr, "Error while sending a packet to the decoder: %s\n", av_err2str(ret));
return ret; return ret;
...@@ -71,7 +69,6 @@ static int decode_packet(void) ...@@ -71,7 +69,6 @@ static int decode_packet(void)
av_frame_unref(frame); av_frame_unref(frame);
} }
} }
}
return 0; return 0;
} }
...@@ -124,6 +121,7 @@ static int open_codec_context(AVFormatContext *fmt_ctx, enum AVMediaType type) ...@@ -124,6 +121,7 @@ static int open_codec_context(AVFormatContext *fmt_ctx, enum AVMediaType type)
int main(int argc, char **argv) int main(int argc, char **argv)
{ {
int ret = 0; int ret = 0;
AVPacket pkt = { 0 };
if (argc != 2) { if (argc != 2) {
fprintf(stderr, "Usage: %s <video>\n", argv[0]); fprintf(stderr, "Usage: %s <video>\n", argv[0]);
...@@ -162,21 +160,17 @@ int main(int argc, char **argv) ...@@ -162,21 +160,17 @@ int main(int argc, char **argv)
printf("framenum,source,blockw,blockh,srcx,srcy,dstx,dsty,flags\n"); 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 */ /* read frames from the file */
while (av_read_frame(fmt_ctx, &pkt) >= 0) { 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); av_packet_unref(&pkt);
if (ret < 0) if (ret < 0)
break; break;
} }
/* flush cached frames */ /* flush cached frames */
pkt.data = NULL; decode_packet(NULL);
pkt.size = 0;
decode_packet();
end: end:
avcodec_free_context(&video_dec_ctx); avcodec_free_context(&video_dec_ctx);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment