static int cmv_process_header(CmvContext *s, const uint8_t *buf, const uint8_t *buf_end)
{
    int pal_start, pal_count, i, ret, fps;
    if(buf_end - buf < 16) {
        av_log(s->avctx, AV_LOG_WARNING, "truncated header\n");
        return AVERROR_INVALIDDATA;
    s->width  = AV_RL16(&buf[4]);
    s->height = AV_RL16(&buf[6]);
    ret = ff_set_dimensions(s->avctx, s->width, s->height);
    if (ret < 0)
        return ret;
    fps = AV_RL16(&buf[10]);
    if (fps > 0)
        s->avctx->time_base = (AVRational){ 1, fps };
    pal_start = AV_RL16(&buf[12]);
    pal_count = AV_RL16(&buf[14]);
    buf += 16;
    for (i=pal_start; i<pal_start+pal_count && i<AVPALETTE_COUNT && buf_end - buf >= 3; i++) {
        s->palette[i] = AV_RB24(buf);
        buf += 3;
    return 0;
static int cmv_process_header(CmvContext *s, const uint8_t *buf, const uint8_t *buf_end)
{
    int pal_start, pal_count, i, ret, fps;
    if(buf_end - buf < 16) {
        av_log(s->avctx, AV_LOG_WARNING, "truncated header\n");
        return AVERROR_INVALIDDATA;
    s->width  = AV_RL16(&buf[4]);
    s->height = AV_RL16(&buf[6]);
    ret = ff_set_dimensions(s->avctx, s->width, s->height);
    if (ret < 0)
        return ret;
    fps = AV_RL16(&buf[10]);
    if (fps > 0)
        s->avctx->time_base = (AVRational){ 1, fps };
    pal_start = AV_RL16(&buf[12]);
    pal_count = AV_RL16(&buf[14]);
    buf += 16;
    for (i=pal_start; i<pal_start+pal_count && i<AVPALETTE_COUNT && buf_end - buf >= 3; i++) {
        s->palette[i] = AV_RB24(buf);
        buf += 3;
    return 0;
static int FUNC_0(CmvContext *VAR_0, const uint8_t *VAR_1, const uint8_t *VAR_2)
{
    int VAR_3, VAR_4, VAR_5, VAR_6, VAR_7;
    if(VAR_2 - VAR_1 < 16) {
        av_log(VAR_0->avctx, AV_LOG_WARNING, "truncated header\n");
        return AVERROR_INVALIDDATA;
    VAR_0->width  = AV_RL16(&VAR_1[4]);
    VAR_0->height = AV_RL16(&VAR_1[6]);
    VAR_6 = ff_set_dimensions(VAR_0->avctx, VAR_0->width, VAR_0->height);
    if (VAR_6 < 0)
        return VAR_6;
    VAR_7 = AV_RL16(&VAR_1[10]);
    if (VAR_7 > 0)
        VAR_0->avctx->time_base = (AVRational){ 1, VAR_7 };
    VAR_3 = AV_RL16(&VAR_1[12]);
    VAR_4 = AV_RL16(&VAR_1[14]);
    VAR_1 += 16;
    for (VAR_5=VAR_3; VAR_5<VAR_3+VAR_4 && VAR_5<AVPALETTE_COUNT && VAR_2 - VAR_1 >= 3; VAR_5++) {
        VAR_0->palette[VAR_5] = AV_RB24(VAR_1);
        VAR_1 += 3;
    return 0;
static int FUNC_0(CmvContext *VAR_0, const uint8_t *VAR_1, const uint8_t *VAR_2)
{ int VAR_3, VAR_4, VAR_5, VAR_6, VAR_7; if(VAR_2 - VAR_1 < 16) { av_log(VAR_0->avctx, AV_LOG_WARNING, "truncated header\n"); return AVERROR_INVALIDDATA; VAR_0->width  = AV_RL16(&VAR_1[4]); VAR_0->height = AV_RL16(&VAR_1[6]); VAR_6 = ff_set_dimensions(VAR_0->avctx, VAR_0->width, VAR_0->height); if (VAR_6 < 0)
return VAR_6; VAR_7 = AV_RL16(&VAR_1[10]); if (VAR_7 > 0)
VAR_0->avctx->time_base = (AVRational){ 1, VAR_7 }; VAR_3 = AV_RL16(&VAR_1[12]); VAR_4 = AV_RL16(&VAR_1[14]); VAR_1 += 16; for (VAR_5=VAR_3; VAR_5<VAR_3+VAR_4 && VAR_5<AVPALETTE_COUNT && VAR_2 - VAR_1 >= 3; VAR_5++) { VAR_0->palette[VAR_5] = AV_RB24(VAR_1); VAR_1 += 3; return 0;