[MPlayer-dev-eng] [PATCH] vf_screenshot: do not silently create empty screenshot files.

Reimar Döffinger Reimar.Doeffinger at gmx.de
Sat Dec 6 12:34:58 CET 2014


On encode error, print a message and don't open the file.
---
 libmpcodecs/vf_screenshot.c | 16 ++++++++++------
 1 file changed, 10 insertions(+), 6 deletions(-)

diff --git a/libmpcodecs/vf_screenshot.c b/libmpcodecs/vf_screenshot.c
index 360df9d..841990f 100644
--- a/libmpcodecs/vf_screenshot.c
+++ b/libmpcodecs/vf_screenshot.c
@@ -107,18 +107,22 @@ static void write_png(struct vf_priv_s *priv)
     AVPacket pkt;
     int res, got_pkt;
 
+    av_init_packet(&pkt);
+    pkt.data = priv->outbuffer;
+    pkt.size = priv->outbuffer_size;
+    res = avcodec_encode_video2(priv->avctx, &pkt, priv->pic, &got_pkt);
+    if (res < 0 || !got_pkt || pkt.size <= 0) {
+        mp_msg(MSGT_VFILTER,MSGL_ERR,"\nFailed to encode screenshot %s!\n", fname);
+        return;
+    }
+
     fp = fopen (fname, "wb");
     if (fp == NULL) {
         mp_msg(MSGT_VFILTER,MSGL_ERR,"\nPNG Error opening %s for writing!\n", fname);
         return;
     }
 
-    av_init_packet(&pkt);
-    pkt.data = priv->outbuffer;
-    pkt.size = priv->outbuffer_size;
-    res = avcodec_encode_video2(priv->avctx, &pkt, priv->pic, &got_pkt);
-    if (res >= 0 && got_pkt && pkt.size > 0)
-        fwrite(priv->outbuffer, pkt.size, 1, fp);
+    fwrite(priv->outbuffer, pkt.size, 1, fp);
 
     fclose (fp);
     mp_msg(MSGT_VFILTER,MSGL_INFO,"*** screenshot '%s' ***\n",priv->fname);
-- 
2.1.3



More information about the MPlayer-dev-eng mailing list