[FFmpeg-cvslog] libmodplug: simplify and fix read_packet() callback.

Clément Bœsch git at videolan.org
Wed Oct 5 21:31:37 CEST 2011


ffmpeg | branch: master | Clément Bœsch <ubitux at gmail.com> | Wed Oct  5 21:20:28 2011 +0200| [9a2ceee2e3aba4902ed1fcecfdfdd0b1921778fc] | committer: Clément Bœsch

libmodplug: simplify and fix read_packet() callback.

In case of av_new_packet() error, a correct return error code is raised,
the data memcpy is avoided, and pkt dts/pts are not assigned anymore
(since the defaults are good).

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=9a2ceee2e3aba4902ed1fcecfdfdd0b1921778fc
---

 libavformat/libmodplug.c |   18 +++++++-----------
 1 files changed, 7 insertions(+), 11 deletions(-)

diff --git a/libavformat/libmodplug.c b/libavformat/libmodplug.c
index 212e225..b4978b9 100644
--- a/libavformat/libmodplug.c
+++ b/libavformat/libmodplug.c
@@ -66,20 +66,16 @@ static int modplug_read_header(AVFormatContext *s, AVFormatParameters *ap)
 
 static int modplug_read_packet(AVFormatContext *s, AVPacket *pkt)
 {
-    int ret, n;
     ModPlugContext *modplug = s->priv_data;
-    uint8_t buf[512];
 
-    n = ModPlug_Read(modplug->f, buf, sizeof(buf));
-    if (n <= 0)
-        return AVERROR(EIO);
+    if (av_new_packet(pkt, 512) < 0)
+        return AVERROR(ENOMEM);
 
-    ret = av_new_packet(pkt, n);
-    if (ret)
-        return ret;
-    pkt->pts  = pkt->dts = AV_NOPTS_VALUE;
-    pkt->size = n;
-    memcpy(pkt->data, buf, n);
+    pkt->size = ModPlug_Read(modplug->f, pkt->data, 512);
+    if (pkt->size <= 0) {
+        av_free_packet(pkt);
+        return AVERROR(EIO);
+    }
     return 0;
 }
 



More information about the ffmpeg-cvslog mailing list