1 /* 2 * H.261 codec 3 * Copyright (c) 2002-2004 Michael Niedermayer <michaelni@gmx.at> 4 * Copyright (c) 2004 Maarten Daniels 5 * 6 * This file is part of FFmpeg. 7 * 8 * FFmpeg is free software; you can redistribute it and/or 9 * modify it under the terms of the GNU Lesser General Public 10 * License as published by the Free Software Foundation; either 11 * version 2.1 of the License, or (at your option) any later version. 12 * 13 * FFmpeg is distributed in the hope that it will be useful, 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 16 * Lesser General Public License for more details. 17 * 18 * You should have received a copy of the GNU Lesser General Public 19 * License along with FFmpeg; if not, write to the Free Software 20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 21 */ 22 23 /** 24 * @file 25 * H.261 codec. 26 */ 27 28 #ifndef AVCODEC_H261_H 29 #define AVCODEC_H261_H 30 31 #include "mpegvideo.h" 32 #include "rl.h" 33 34 /** 35 * H261Context 36 */ 37 typedef struct H261Context { 38 MpegEncContext s; 39 40 int current_mba; 41 int mba_diff; 42 int mtype; 43 int current_mv_x; 44 int current_mv_y; 45 int gob_number; 46 int gob_start_code_skipped; // 1 if gob start code is already read before gob header is read 47 } H261Context; 48 49 #define MB_TYPE_H261_FIL 0x800000 50 51 extern const uint8_t ff_h261_mba_code[35]; 52 extern const uint8_t ff_h261_mba_bits[35]; 53 extern const uint8_t ff_h261_mtype_code[10]; 54 extern const uint8_t ff_h261_mtype_bits[10]; 55 extern const int ff_h261_mtype_map[10]; 56 extern const uint8_t ff_h261_mv_tab[17][2]; 57 extern const uint8_t ff_h261_cbp_tab[63][2]; 58 extern RLTable ff_h261_rl_tcoeff; 59 60 void ff_h261_loop_filter(MpegEncContext *s); 61 62 int ff_h261_get_picture_format(int width, int height); 63 void ff_h261_reorder_mb_index(MpegEncContext *s); 64 void ff_h261_encode_mb(MpegEncContext *s, int16_t block[6][64], 65 int motion_x, int motion_y); 66 void ff_h261_encode_picture_header(MpegEncContext *s, int picture_number); 67 void ff_h261_encode_init(MpegEncContext *s); 68 69 #endif /* AVCODEC_H261_H */ 70