annotate h264pred.h @ 5876:731ee5ad6bde libavcodec

Correct assignment of interlaced_frame; was being set on output frames, in display order, based on decoding information in decoding order. Now set properly, immediately upon completion of decode. Based on original patch from Reinhard Nissl, rnisssl % gmx , de Original Thread: [FFmpeg-devel] H.264 + PAFF: BBC HD recording shows extreme interlacing artefacts, Thu, 01 Nov 2007 22:43:09
author heydowns
date Mon, 05 Nov 2007 18:16:42 +0000
parents 1d83e9c34641
children ce3b68242317
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4975
9a6a0818e93f split h264.c to move parser in its own file
aurel
parents:
diff changeset
1 /*
9a6a0818e93f split h264.c to move parser in its own file
aurel
parents:
diff changeset
2 * H.26L/H.264/AVC/JVT/14496-10/... encoder/decoder
9a6a0818e93f split h264.c to move parser in its own file
aurel
parents:
diff changeset
3 * Copyright (c) 2003 Michael Niedermayer <michaelni@gmx.at>
9a6a0818e93f split h264.c to move parser in its own file
aurel
parents:
diff changeset
4 *
9a6a0818e93f split h264.c to move parser in its own file
aurel
parents:
diff changeset
5 * This file is part of FFmpeg.
9a6a0818e93f split h264.c to move parser in its own file
aurel
parents:
diff changeset
6 *
9a6a0818e93f split h264.c to move parser in its own file
aurel
parents:
diff changeset
7 * FFmpeg is free software; you can redistribute it and/or
9a6a0818e93f split h264.c to move parser in its own file
aurel
parents:
diff changeset
8 * modify it under the terms of the GNU Lesser General Public
9a6a0818e93f split h264.c to move parser in its own file
aurel
parents:
diff changeset
9 * License as published by the Free Software Foundation; either
9a6a0818e93f split h264.c to move parser in its own file
aurel
parents:
diff changeset
10 * version 2.1 of the License, or (at your option) any later version.
9a6a0818e93f split h264.c to move parser in its own file
aurel
parents:
diff changeset
11 *
9a6a0818e93f split h264.c to move parser in its own file
aurel
parents:
diff changeset
12 * FFmpeg is distributed in the hope that it will be useful,
9a6a0818e93f split h264.c to move parser in its own file
aurel
parents:
diff changeset
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9a6a0818e93f split h264.c to move parser in its own file
aurel
parents:
diff changeset
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
9a6a0818e93f split h264.c to move parser in its own file
aurel
parents:
diff changeset
15 * Lesser General Public License for more details.
9a6a0818e93f split h264.c to move parser in its own file
aurel
parents:
diff changeset
16 *
9a6a0818e93f split h264.c to move parser in its own file
aurel
parents:
diff changeset
17 * You should have received a copy of the GNU Lesser General Public
9a6a0818e93f split h264.c to move parser in its own file
aurel
parents:
diff changeset
18 * License along with FFmpeg; if not, write to the Free Software
9a6a0818e93f split h264.c to move parser in its own file
aurel
parents:
diff changeset
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
9a6a0818e93f split h264.c to move parser in its own file
aurel
parents:
diff changeset
20 */
9a6a0818e93f split h264.c to move parser in its own file
aurel
parents:
diff changeset
21
9a6a0818e93f split h264.c to move parser in its own file
aurel
parents:
diff changeset
22 /**
5638
4a26dc4ca11d Move H.264 intra prediction functions into their own context
kostya
parents: 5231
diff changeset
23 * @file h264pred.h
4a26dc4ca11d Move H.264 intra prediction functions into their own context
kostya
parents: 5231
diff changeset
24 * H.264 / AVC / MPEG4 prediction functions.
4975
9a6a0818e93f split h264.c to move parser in its own file
aurel
parents:
diff changeset
25 * @author Michael Niedermayer <michaelni@gmx.at>
9a6a0818e93f split h264.c to move parser in its own file
aurel
parents:
diff changeset
26 */
9a6a0818e93f split h264.c to move parser in its own file
aurel
parents:
diff changeset
27
5830
1d83e9c34641 Add FFMPEG_ prefix to all multiple inclusion guards.
diego
parents: 5638
diff changeset
28 #ifndef FFMPEG_H264PRED_H
1d83e9c34641 Add FFMPEG_ prefix to all multiple inclusion guards.
diego
parents: 5638
diff changeset
29 #define FFMPEG_H264PRED_H
4975
9a6a0818e93f split h264.c to move parser in its own file
aurel
parents:
diff changeset
30
5638
4a26dc4ca11d Move H.264 intra prediction functions into their own context
kostya
parents: 5231
diff changeset
31 #include "common.h"
4975
9a6a0818e93f split h264.c to move parser in its own file
aurel
parents:
diff changeset
32
9a6a0818e93f split h264.c to move parser in its own file
aurel
parents:
diff changeset
33 /**
5638
4a26dc4ca11d Move H.264 intra prediction functions into their own context
kostya
parents: 5231
diff changeset
34 * Prediction types
4975
9a6a0818e93f split h264.c to move parser in its own file
aurel
parents:
diff changeset
35 */
5638
4a26dc4ca11d Move H.264 intra prediction functions into their own context
kostya
parents: 5231
diff changeset
36 //@{
4a26dc4ca11d Move H.264 intra prediction functions into their own context
kostya
parents: 5231
diff changeset
37 #define VERT_PRED 0
4a26dc4ca11d Move H.264 intra prediction functions into their own context
kostya
parents: 5231
diff changeset
38 #define HOR_PRED 1
4a26dc4ca11d Move H.264 intra prediction functions into their own context
kostya
parents: 5231
diff changeset
39 #define DC_PRED 2
4a26dc4ca11d Move H.264 intra prediction functions into their own context
kostya
parents: 5231
diff changeset
40 #define DIAG_DOWN_LEFT_PRED 3
4a26dc4ca11d Move H.264 intra prediction functions into their own context
kostya
parents: 5231
diff changeset
41 #define DIAG_DOWN_RIGHT_PRED 4
4a26dc4ca11d Move H.264 intra prediction functions into their own context
kostya
parents: 5231
diff changeset
42 #define VERT_RIGHT_PRED 5
4a26dc4ca11d Move H.264 intra prediction functions into their own context
kostya
parents: 5231
diff changeset
43 #define HOR_DOWN_PRED 6
4a26dc4ca11d Move H.264 intra prediction functions into their own context
kostya
parents: 5231
diff changeset
44 #define VERT_LEFT_PRED 7
4a26dc4ca11d Move H.264 intra prediction functions into their own context
kostya
parents: 5231
diff changeset
45 #define HOR_UP_PRED 8
4975
9a6a0818e93f split h264.c to move parser in its own file
aurel
parents:
diff changeset
46
5638
4a26dc4ca11d Move H.264 intra prediction functions into their own context
kostya
parents: 5231
diff changeset
47 #define LEFT_DC_PRED 9
4a26dc4ca11d Move H.264 intra prediction functions into their own context
kostya
parents: 5231
diff changeset
48 #define TOP_DC_PRED 10
4a26dc4ca11d Move H.264 intra prediction functions into their own context
kostya
parents: 5231
diff changeset
49 #define DC_128_PRED 11
4a26dc4ca11d Move H.264 intra prediction functions into their own context
kostya
parents: 5231
diff changeset
50
4a26dc4ca11d Move H.264 intra prediction functions into their own context
kostya
parents: 5231
diff changeset
51 #define DIAG_DOWN_LEFT_PRED_RV40_NODOWN 12
4a26dc4ca11d Move H.264 intra prediction functions into their own context
kostya
parents: 5231
diff changeset
52 #define HOR_UP_PRED_RV40_NODOWN 13
4a26dc4ca11d Move H.264 intra prediction functions into their own context
kostya
parents: 5231
diff changeset
53
4a26dc4ca11d Move H.264 intra prediction functions into their own context
kostya
parents: 5231
diff changeset
54 #define DC_PRED8x8 0
4a26dc4ca11d Move H.264 intra prediction functions into their own context
kostya
parents: 5231
diff changeset
55 #define HOR_PRED8x8 1
4a26dc4ca11d Move H.264 intra prediction functions into their own context
kostya
parents: 5231
diff changeset
56 #define VERT_PRED8x8 2
4a26dc4ca11d Move H.264 intra prediction functions into their own context
kostya
parents: 5231
diff changeset
57 #define PLANE_PRED8x8 3
4a26dc4ca11d Move H.264 intra prediction functions into their own context
kostya
parents: 5231
diff changeset
58
4a26dc4ca11d Move H.264 intra prediction functions into their own context
kostya
parents: 5231
diff changeset
59 #define LEFT_DC_PRED8x8 4
4a26dc4ca11d Move H.264 intra prediction functions into their own context
kostya
parents: 5231
diff changeset
60 #define TOP_DC_PRED8x8 5
4a26dc4ca11d Move H.264 intra prediction functions into their own context
kostya
parents: 5231
diff changeset
61 #define DC_128_PRED8x8 6
4a26dc4ca11d Move H.264 intra prediction functions into their own context
kostya
parents: 5231
diff changeset
62 //@}
4975
9a6a0818e93f split h264.c to move parser in its own file
aurel
parents:
diff changeset
63
9a6a0818e93f split h264.c to move parser in its own file
aurel
parents:
diff changeset
64 /**
5638
4a26dc4ca11d Move H.264 intra prediction functions into their own context
kostya
parents: 5231
diff changeset
65 * Context for storing H.264 prediction functions
4975
9a6a0818e93f split h264.c to move parser in its own file
aurel
parents:
diff changeset
66 */
5638
4a26dc4ca11d Move H.264 intra prediction functions into their own context
kostya
parents: 5231
diff changeset
67 typedef struct H264PredContext{
4a26dc4ca11d Move H.264 intra prediction functions into their own context
kostya
parents: 5231
diff changeset
68 void (*pred4x4 [9+3+2])(uint8_t *src, uint8_t *topright, int stride);//FIXME move to dsp?
4975
9a6a0818e93f split h264.c to move parser in its own file
aurel
parents:
diff changeset
69 void (*pred8x8l [9+3])(uint8_t *src, int topleft, int topright, int stride);
9a6a0818e93f split h264.c to move parser in its own file
aurel
parents:
diff changeset
70 void (*pred8x8 [4+3])(uint8_t *src, int stride);
9a6a0818e93f split h264.c to move parser in its own file
aurel
parents:
diff changeset
71 void (*pred16x16[4+3])(uint8_t *src, int stride);
5638
4a26dc4ca11d Move H.264 intra prediction functions into their own context
kostya
parents: 5231
diff changeset
72 }H264PredContext;
4975
9a6a0818e93f split h264.c to move parser in its own file
aurel
parents:
diff changeset
73
5638
4a26dc4ca11d Move H.264 intra prediction functions into their own context
kostya
parents: 5231
diff changeset
74 void ff_h264_pred_init(H264PredContext *h, int codec_id);
4975
9a6a0818e93f split h264.c to move parser in its own file
aurel
parents:
diff changeset
75
5830
1d83e9c34641 Add FFMPEG_ prefix to all multiple inclusion guards.
diego
parents: 5638
diff changeset
76 #endif /* FFMPEG_H264PRED_H */