Mercurial > libavcodec.hg
annotate rv20enc.c @ 10600:40af8390d83f libavcodec
Fix dual prime motion compensation in field pictures.
Fixes issue1125.
author | michael |
---|---|
date | Mon, 30 Nov 2009 02:37:03 +0000 |
parents | 38cfe222e1a4 |
children | 86bf7e0db6ea |
rev | line source |
---|---|
10017 | 1 /* |
2 * RV20 encoder | |
3 * Copyright (c) 2000,2001 Fabrice Bellard | |
4 * Copyright (c) 2002-2004 Michael Niedermayer | |
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 libavcodec/rv20enc.c | |
25 * RV20 encoder | |
26 */ | |
27 | |
28 #include "mpegvideo.h" | |
29 #include "put_bits.h" | |
30 | |
31 void rv20_encode_picture_header(MpegEncContext *s, int picture_number){ | |
32 put_bits(&s->pb, 2, s->pict_type); //I 0 vs. 1 ? | |
33 put_bits(&s->pb, 1, 0); /* unknown bit */ | |
34 put_bits(&s->pb, 5, s->qscale); | |
35 | |
36 put_sbits(&s->pb, 8, picture_number); //FIXME wrong, but correct is not known | |
37 s->mb_x= s->mb_y= 0; | |
38 ff_h263_encode_mba(s); | |
39 | |
40 put_bits(&s->pb, 1, s->no_rounding); | |
41 | |
42 assert(s->f_code == 1); | |
43 assert(s->unrestricted_mv == 1); | |
44 assert(s->alt_inter_vlc == 0); | |
45 assert(s->umvplus == 0); | |
46 assert(s->modified_quant==1); | |
47 assert(s->loop_filter==1); | |
48 | |
49 s->h263_aic= s->pict_type == FF_I_TYPE; | |
50 if(s->h263_aic){ | |
51 s->y_dc_scale_table= | |
52 s->c_dc_scale_table= ff_aic_dc_scale_table; | |
53 }else{ | |
54 s->y_dc_scale_table= | |
55 s->c_dc_scale_table= ff_mpeg1_dc_scale_table; | |
56 } | |
57 } | |
58 | |
59 AVCodec rv20_encoder = { | |
60 "rv20", | |
61 CODEC_TYPE_VIDEO, | |
62 CODEC_ID_RV20, | |
63 sizeof(MpegEncContext), | |
64 MPV_encode_init, | |
65 MPV_encode_picture, | |
66 MPV_encode_end, | |
10146
38cfe222e1a4
Mark all pix_fmts and supported_framerates compound literals as const.
reimar
parents:
10017
diff
changeset
|
67 .pix_fmts= (const enum PixelFormat[]){PIX_FMT_YUV420P, PIX_FMT_NONE}, |
10017 | 68 .long_name= NULL_IF_CONFIG_SMALL("RealVideo 2.0"), |
69 }; |