*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*
*/
/* debugging support */
#define DEBUG_INTERPLAY 0
#if DEBUG_INTERPLAY
-#define debug_interplay printf
+#define debug_interplay(x,...) av_log(NULL, AV_LOG_DEBUG, x, __VA_ARGS__)
#else
static inline void debug_interplay(const char *format, ...) { }
#endif
#define CHECK_STREAM_PTR(n) \
if ((s->stream_ptr + n) > s->stream_end) { \
- printf ("Interplay video warning: stream_ptr out of bounds (%p >= %p)\n", \
+ av_log(s->avctx, AV_LOG_ERROR, "Interplay video warning: stream_ptr out of bounds (%p >= %p)\n", \
s->stream_ptr + n, s->stream_end); \
return -1; \
}
motion_offset += y * s->stride; \
motion_offset += x; \
if (motion_offset < 0) { \
- printf (" Interplay video: motion offset < 0 (%d)\n", motion_offset); \
+ av_log(s->avctx, AV_LOG_ERROR, " Interplay video: motion offset < 0 (%d)\n", motion_offset); \
return -1; \
} else if (motion_offset > s->upper_motion_limit_offset) { \
- printf (" Interplay video: motion offset above limit (%d >= %d)\n", \
+ av_log(s->avctx, AV_LOG_ERROR, " Interplay video: motion offset above limit (%d >= %d)\n", \
motion_offset, s->upper_motion_limit_offset); \
return -1; \
} \
motion_offset += y * s->stride; \
motion_offset += x; \
if (motion_offset < 0) { \
- printf (" Interplay video: motion offset < 0 (%d)\n", motion_offset); \
+ av_log(s->avctx, AV_LOG_ERROR, " Interplay video: motion offset < 0 (%d)\n", motion_offset); \
return -1; \
} else if (motion_offset > s->upper_motion_limit_offset) { \
- printf (" Interplay video: motion offset above limit (%d >= %d)\n", \
+ av_log(s->avctx, AV_LOG_ERROR, " Interplay video: motion offset above limit (%d >= %d)\n", \
motion_offset, s->upper_motion_limit_offset); \
return -1; \
} \
motion_offset += y * s->stride; \
motion_offset += x; \
if (motion_offset < 0) { \
- printf (" Interplay video: motion offset < 0 (%d)\n", motion_offset); \
+ av_log(s->avctx, AV_LOG_ERROR, " Interplay video: motion offset < 0 (%d)\n", motion_offset); \
return -1; \
} else if (motion_offset > s->upper_motion_limit_offset) { \
- printf (" Interplay video: motion offset above limit (%d >= %d)\n", \
+ av_log(s->avctx, AV_LOG_ERROR, " Interplay video: motion offset above limit (%d >= %d)\n", \
motion_offset, s->upper_motion_limit_offset); \
return -1; \
} \
static int ipvideo_decode_block_opcode_0x6(IpvideoContext *s)
{
/* mystery opcode? skip multiple blocks? */
- printf (" Interplay video: Help! Mystery opcode 0x6 seen\n");
+ av_log(s->avctx, AV_LOG_ERROR, " Interplay video: Help! Mystery opcode 0x6 seen\n");
/* report success */
return 0;
s->pixel_ptr = s->current_frame.data[0] + x;
ret = ipvideo_decode_block[opcode](s);
if (ret != 0) {
- printf(" Interplay video: decode problem on frame %d, @ block (%d, %d)\n",
+ av_log(s->avctx, AV_LOG_ERROR, " Interplay video: decode problem on frame %d, @ block (%d, %d)\n",
frame, x - y, y / s->stride);
return;
}
}
if ((s->stream_ptr != s->stream_end) &&
(s->stream_ptr + 1 != s->stream_end)) {
- printf (" Interplay video: decode finished with %d bytes left over\n",
+ av_log(s->avctx, AV_LOG_ERROR, " Interplay video: decode finished with %td bytes left over\n",
s->stream_end - s->stream_ptr);
}
}
s->avctx = avctx;
if (s->avctx->palctrl == NULL) {
- printf (" Interplay video: palette expected.\n");
+ av_log(avctx, AV_LOG_ERROR, " Interplay video: palette expected.\n");
return -1;
}
IpvideoContext *s = avctx->priv_data;
AVPaletteControl *palette_control = avctx->palctrl;
+ /* compressed buffer needs to be large enough to at least hold an entire
+ * decoding map */
+ if (buf_size < s->decoding_map_size)
+ return buf_size;
+
s->decoding_map = buf;
s->buf = buf + s->decoding_map_size;
s->size = buf_size - s->decoding_map_size;
s->current_frame.reference = 3;
if (avctx->get_buffer(avctx, &s->current_frame)) {
- printf (" Interplay Video: get_buffer() failed\n");
+ av_log(avctx, AV_LOG_ERROR, " Interplay Video: get_buffer() failed\n");
return -1;
}