1/* 2 * Copyright (c) 2002 The FFmpeg Project 3 * 4 * This file is part of FFmpeg. 5 * 6 * FFmpeg is free software; you can redistribute it and/or 7 * modify it under the terms of the GNU Lesser General Public 8 * License as published by the Free Software Foundation; either 9 * version 2.1 of the License, or (at your option) any later version. 10 * 11 * FFmpeg is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 * Lesser General Public License for more details. 15 * 16 * You should have received a copy of the GNU Lesser General Public 17 * License along with FFmpeg; if not, write to the Free Software 18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 19 */ 20 21#ifndef AVCODEC_WMV2_H 22#define AVCODEC_WMV2_H 23 24#include "mpegvideo.h" 25#include "wmv2dsp.h" 26 27#define SKIP_TYPE_NONE 0 28#define SKIP_TYPE_MPEG 1 29#define SKIP_TYPE_ROW 2 30#define SKIP_TYPE_COL 3 31 32 33typedef struct WMV2Context { 34 WMV2DSPContext wdsp; 35 int hshift; 36} WMV2Context; 37 38void ff_wmv2_common_init(MpegEncContext *s); 39 40void ff_mspel_motion(MpegEncContext *s, 41 uint8_t *dest_y, uint8_t *dest_cb, uint8_t *dest_cr, 42 uint8_t **ref_picture, op_pixels_func (*pix_op)[4], 43 int motion_x, int motion_y, int h); 44 45 46static av_always_inline int wmv2_get_cbp_table_index(MpegEncContext *s, int cbp_index) 47{ 48 static const uint8_t map[3][3] = { 49 { 0, 2, 1 }, 50 { 1, 0, 2 }, 51 { 2, 1, 0 }, 52 }; 53 54 return map[(s->qscale > 10) + (s->qscale > 20)][cbp_index]; 55} 56 57#endif /* AVCODEC_WMV2_H */ 58