summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2016-10-20 11:03:20 +0200
committerAnton Khirnov <anton@khirnov.net>2016-11-23 13:10:22 +0100
commit59ab9e8ba1df7e3347a4cd2bd56c32e74aede802 (patch)
tree1584c03380a092ce24959632d7d8a91e8fa1554a /doc
parent5f102a9559099429826e84758b8b5182244c52db (diff)
examples/encode_video: allocate the packet dynamically
AVPackets on stack are discouraged.
Diffstat (limited to 'doc')
-rw-r--r--doc/examples/encode_video.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/doc/examples/encode_video.c b/doc/examples/encode_video.c
index 2ff6354354..cb128361d5 100644
--- a/doc/examples/encode_video.c
+++ b/doc/examples/encode_video.c
@@ -69,7 +69,7 @@ int main(int argc, char **argv)
int i, ret, x, y;
FILE *f;
AVFrame *picture;
- AVPacket pkt;
+ AVPacket *pkt;
uint8_t endcode[] = { 0, 0, 1, 0xb7 };
if (argc <= 1) {
@@ -90,6 +90,10 @@ int main(int argc, char **argv)
c = avcodec_alloc_context3(codec);
picture = av_frame_alloc();
+ pkt = av_packet_alloc();
+ if (!pkt)
+ exit(1);
+
/* put sample parameters */
c->bit_rate = 400000;
/* resolution must be a multiple of two */
@@ -127,10 +131,6 @@ int main(int argc, char **argv)
/* encode 1 second of video */
for(i=0;i<25;i++) {
- av_init_packet(&pkt);
- pkt.data = NULL; // packet data will be allocated by the encoder
- pkt.size = 0;
-
fflush(stdout);
/* make sure the frame data is writable */
@@ -157,11 +157,11 @@ int main(int argc, char **argv)
picture->pts = i;
/* encode the image */
- encode(c, picture, &pkt, f);
+ encode(c, picture, pkt, f);
}
/* flush the encoder */
- encode(c, NULL, &pkt, f);
+ encode(c, NULL, pkt, f);
/* add sequence end code to have a real MPEG file */
fwrite(endcode, 1, sizeof(endcode), f);
@@ -169,6 +169,7 @@ int main(int argc, char **argv)
avcodec_free_context(&c);
av_frame_free(&picture);
+ av_packet_free(&pkt);
return 0;
}