Browse Source

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).
tags/n0.9
Clément Bœsch 13 years ago
parent
commit
9a2ceee2e3
1 changed files with 7 additions and 11 deletions
  1. +7
    -11
      libavformat/libmodplug.c

+ 7
- 11
libavformat/libmodplug.c View File

@@ -66,20 +66,16 @@ static int modplug_read_header(AVFormatContext *s, AVFormatParameters *ap)


static int modplug_read_packet(AVFormatContext *s, AVPacket *pkt) static int modplug_read_packet(AVFormatContext *s, AVPacket *pkt)
{ {
int ret, n;
ModPlugContext *modplug = s->priv_data; 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; return 0;
} }




Loading…
Cancel
Save