- if(buf_size <= 4){
- av_log(avctx, AV_LOG_ERROR, "Too small buffer passed (%i bytes)\n", buf_size);
- return AVERROR(EINVAL);
+
+ buf_size = avpkt->size & ~3;
+ if (buf_size <= 0) {
+ av_log(avctx, AV_LOG_ERROR, "packet size is too small (%i bytes)\n",
+ avpkt->size);
+ return AVERROR_INVALIDDATA;
+ }
+ if (buf_size != avpkt->size) {
+ av_log(avctx, AV_LOG_WARNING, "packet size is not a multiple of 4. "
+ "extra bytes at the end will be skipped.\n");