[MPlayer-cvslog] r38306 - trunk/libvo/vo_png.c

reimar subversion at mplayerhq.hu
Sat May 1 20:45:29 EEST 2021


Author: reimar
Date: Sat May  1 20:45:29 2021
New Revision: 38306

Log:
vo_png: switch to new FFmpeg API.

Modified:
   trunk/libvo/vo_png.c

Modified: trunk/libvo/vo_png.c
==============================================================================
--- trunk/libvo/vo_png.c	Thu Apr 15 22:26:53 2021	(r38305)
+++ trunk/libvo/vo_png.c	Sat May  1 20:45:29 2021	(r38306)
@@ -150,8 +150,7 @@ config(uint32_t width, uint32_t height,
 
 static uint32_t draw_image(mp_image_t* mpi){
     AVFrame *pic;
-    int buffersize;
-    int res, got_pkt;
+    int res;
     char buf[100];
     FILE *outfile;
     AVPacket pkt;
@@ -174,26 +173,25 @@ static uint32_t draw_image(mp_image_t* m
     pic->format = imgfmt2pixfmt(png_format);
     pic->data[0] = mpi->planes[0];
     pic->linesize[0] = mpi->stride[0];
-    buffersize = mpi->w * mpi->h * 8;
-    if (outbuffer_size < buffersize) {
-        av_freep(&outbuffer);
-        outbuffer = av_malloc(buffersize);
-        outbuffer_size = buffersize;
-    }
     av_init_packet(&pkt);
-    pkt.data = outbuffer;
-    pkt.size = outbuffer_size;
-    res = avcodec_encode_video2(avctx, &pkt, pic, &got_pkt);
+    res = avcodec_send_frame(avctx, pic);
+    if (res >= 0) {
+        res = avcodec_receive_packet(avctx, &pkt);
+        if (res == AVERROR(EAGAIN)) {
+            avcodec_send_frame(avctx, NULL);
+            res = avcodec_receive_packet(avctx, &pkt);
+        }
+    }
     av_frame_free(&pic);
 
-    if (res < 0 || !got_pkt) {
+    if (res < 0) {
  	    mp_msg(MSGT_VO,MSGL_WARN, MSGTR_LIBVO_PNG_ErrorInCreatePng);
     } else {
-        fwrite(outbuffer, pkt.size, 1, outfile);
+        fwrite(pkt.data, pkt.size, 1, outfile);
     }
 
     fclose(outfile);
-    av_free_packet(&pkt);
+    av_packet_unref(&pkt);
 
     return VO_TRUE;
 }
@@ -251,7 +249,6 @@ static int preinit(const char *arg)
     if (subopt_parse(arg, subopts) != 0) {
         return -1;
     }
-    avcodec_register_all();
     return 0;
 }
 


More information about the MPlayer-cvslog mailing list