Merge commit '5b4d7ac7ae5d821cfa6ab89f8eab4d31851ef32c'
[ffmpeg.git] / doc / examples / encode_video.c
index 71c8c0b..fc576e0 100644 (file)
@@ -39,7 +39,7 @@
 int main(int argc, char **argv)
 {
     const char *filename, *codec_name;
-    AVCodec *codec;
+    const AVCodec *codec;
     AVCodecContext *c= NULL;
     int i, ret, x, y, got_output;
     FILE *f;
@@ -75,7 +75,9 @@ int main(int argc, char **argv)
     c->width = 352;
     c->height = 288;
     /* frames per second */
-    c->time_base = (AVRational){1,25};
+    c->time_base = (AVRational){1, 25};
+    c->framerate = (AVRational){25, 1};
+
     /* emit one intra frame every ten frames
      * check frame pict_type before passing frame
      * to encoder, if frame->pict_type is AV_PICTURE_TYPE_I
@@ -110,12 +112,9 @@ int main(int argc, char **argv)
     frame->width  = c->width;
     frame->height = c->height;
 
-    /* the image can be allocated by any means and av_image_alloc() is
-     * just the most convenient way if av_malloc() is to be used */
-    ret = av_image_alloc(frame->data, frame->linesize, c->width, c->height,
-                         c->pix_fmt, 32);
+    ret = av_frame_get_buffer(frame, 32);
     if (ret < 0) {
-        fprintf(stderr, "Could not allocate raw picture buffer\n");
+        fprintf(stderr, "Could not allocate the video frame data\n");
         exit(1);
     }
 
@@ -126,6 +125,12 @@ int main(int argc, char **argv)
         pkt.size = 0;
 
         fflush(stdout);
+
+        /* make sure the frame data is writable */
+        ret = av_frame_make_writable(frame);
+        if (ret < 0)
+            exit(1);
+
         /* prepare a dummy image */
         /* Y */
         for (y = 0; y < c->height; y++) {
@@ -180,7 +185,6 @@ int main(int argc, char **argv)
     fclose(f);
 
     avcodec_free_context(&c);
-    av_freep(&frame->data[0]);
     av_frame_free(&frame);
 
     return 0;