printf ("  MS RLE: get_buffer() failed\n");
av_log(avctx, AV_LOG_ERROR, "  MS RLE: get_buffer() failed\n");
static int msrle_decode_frame(AVCodecContext *avctx,                              void *data, int *data_size,                              uint8_t *buf, int buf_size){    MsrleContext *s = (MsrleContext *)avctx->priv_data;    s->buf = buf;    s->size = buf_size;    s->frame.reference = 1;    if (avctx->get_buffer(avctx, &s->frame)) {        printf ("  MS RLE: get_buffer() failed\n");        return -1;    }    if (s->prev_frame.data[0] && (s->frame.linesize[0] != s->prev_frame.linesize[0]))        printf ("  MS RLE: Buffer linesize changed: current %u, previous %u.\n"                "          Expect wrong image and/or crash!\n",                s->frame.linesize[0], s->prev_frame.linesize[0]);    /* grossly inefficient, but...oh well */    if (s->prev_frame.data[0] != NULL)	memcpy(s->frame.data[0], s->prev_frame.data[0],         s->frame.linesize[0] * s->avctx->height);    msrle_decode_pal8(s);    if (s->prev_frame.data[0])        avctx->release_buffer(avctx, &s->prev_frame);    /* shuffle frames */    s->prev_frame = s->frame;    *data_size = sizeof(AVFrame);    *(AVFrame*)data = s->frame;    /* report that the buffer was completely consumed */    return buf_size;}