diff options
Diffstat (limited to 'libavformat/mpc.c')
-rw-r--r-- | libavformat/mpc.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/libavformat/mpc.c b/libavformat/mpc.c index a8f526a627..a67d9ae218 100644 --- a/libavformat/mpc.c +++ b/libavformat/mpc.c @@ -117,7 +117,8 @@ static int mpc_read_packet(AVFormatContext *s, AVPacket *pkt) { MPCContext *c = s->priv_data; int ret, size, size2, curbits, cur = c->curframe; - int64_t tmp, pos; + unsigned tmp; + int64_t pos; if (c->curframe >= c->fcount && c->fcount) return -1; @@ -134,8 +135,7 @@ static int mpc_read_packet(AVFormatContext *s, AVPacket *pkt) if(curbits <= 12){ size2 = (tmp >> (12 - curbits)) & 0xFFFFF; }else{ - tmp = (tmp << 32) | avio_rl32(s->pb); - size2 = (tmp >> (44 - curbits)) & 0xFFFFF; + size2 = (tmp << (curbits - 12) | avio_rl32(s->pb) >> (44 - curbits)) & 0xFFFFF; } curbits += 20; avio_seek(s->pb, pos, SEEK_SET); |