Commit 6db36a02 authored by Clément Bœsch's avatar Clément Bœsch

Merge commit '59ab9e8b'

* commit '59ab9e8b':
  examples/encode_video: allocate the packet dynamically
Merged-by: 's avatarClément Bœsch <cboesch@gopro.com>
parents 4ea942f2 59ab9e8b
...@@ -71,7 +71,7 @@ int main(int argc, char **argv) ...@@ -71,7 +71,7 @@ int main(int argc, char **argv)
int i, ret, x, y; int i, ret, x, y;
FILE *f; FILE *f;
AVFrame *frame; AVFrame *frame;
AVPacket pkt; AVPacket *pkt;
uint8_t endcode[] = { 0, 0, 1, 0xb7 }; uint8_t endcode[] = { 0, 0, 1, 0xb7 };
if (argc <= 2) { if (argc <= 2) {
...@@ -96,6 +96,10 @@ int main(int argc, char **argv) ...@@ -96,6 +96,10 @@ int main(int argc, char **argv)
exit(1); exit(1);
} }
pkt = av_packet_alloc();
if (!pkt)
exit(1);
/* put sample parameters */ /* put sample parameters */
c->bit_rate = 400000; c->bit_rate = 400000;
/* resolution must be a multiple of two */ /* resolution must be a multiple of two */
...@@ -147,10 +151,6 @@ int main(int argc, char **argv) ...@@ -147,10 +151,6 @@ int main(int argc, char **argv)
/* encode 1 second of video */ /* encode 1 second of video */
for (i = 0; i < 25; i++) { 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); fflush(stdout);
/* make sure the frame data is writable */ /* make sure the frame data is writable */
...@@ -177,11 +177,11 @@ int main(int argc, char **argv) ...@@ -177,11 +177,11 @@ int main(int argc, char **argv)
frame->pts = i; frame->pts = i;
/* encode the image */ /* encode the image */
encode(c, frame, &pkt, f); encode(c, frame, pkt, f);
} }
/* flush the encoder */ /* flush the encoder */
encode(c, NULL, &pkt, f); encode(c, NULL, pkt, f);
/* add sequence end code to have a real MPEG file */ /* add sequence end code to have a real MPEG file */
fwrite(endcode, 1, sizeof(endcode), f); fwrite(endcode, 1, sizeof(endcode), f);
...@@ -189,6 +189,7 @@ int main(int argc, char **argv) ...@@ -189,6 +189,7 @@ int main(int argc, char **argv)
avcodec_free_context(&c); avcodec_free_context(&c);
av_frame_free(&frame); av_frame_free(&frame);
av_packet_free(&pkt);
return 0; return 0;
} }
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