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