annotate xvmc_render.h @ 8520:a0164882aa38 libavcodec

Generic metadata API. avi is updated as example. No version bump, the API still might change slightly ... No update to ffmpeg.c as requested by aurel.
author michael
date Sun, 04 Jan 2009 18:48:37 +0000
parents 5dffd656f606
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5270
5e6d44208f91 Add standard licensing header to files that lack it.
diego
parents: 5223
diff changeset
1 /*
5e6d44208f91 Add standard licensing header to files that lack it.
diego
parents: 5223
diff changeset
2 * Copyright (C) 2003 Ivan Kalvachev
5e6d44208f91 Add standard licensing header to files that lack it.
diego
parents: 5223
diff changeset
3 *
5e6d44208f91 Add standard licensing header to files that lack it.
diego
parents: 5223
diff changeset
4 * This file is part of FFmpeg.
5e6d44208f91 Add standard licensing header to files that lack it.
diego
parents: 5223
diff changeset
5 *
5e6d44208f91 Add standard licensing header to files that lack it.
diego
parents: 5223
diff changeset
6 * FFmpeg is free software; you can redistribute it and/or
5e6d44208f91 Add standard licensing header to files that lack it.
diego
parents: 5223
diff changeset
7 * modify it under the terms of the GNU Lesser General Public
5e6d44208f91 Add standard licensing header to files that lack it.
diego
parents: 5223
diff changeset
8 * License as published by the Free Software Foundation; either
5e6d44208f91 Add standard licensing header to files that lack it.
diego
parents: 5223
diff changeset
9 * version 2.1 of the License, or (at your option) any later version.
5e6d44208f91 Add standard licensing header to files that lack it.
diego
parents: 5223
diff changeset
10 *
5e6d44208f91 Add standard licensing header to files that lack it.
diego
parents: 5223
diff changeset
11 * FFmpeg is distributed in the hope that it will be useful,
5e6d44208f91 Add standard licensing header to files that lack it.
diego
parents: 5223
diff changeset
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
5e6d44208f91 Add standard licensing header to files that lack it.
diego
parents: 5223
diff changeset
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
5e6d44208f91 Add standard licensing header to files that lack it.
diego
parents: 5223
diff changeset
14 * Lesser General Public License for more details.
5e6d44208f91 Add standard licensing header to files that lack it.
diego
parents: 5223
diff changeset
15 *
5e6d44208f91 Add standard licensing header to files that lack it.
diego
parents: 5223
diff changeset
16 * You should have received a copy of the GNU Lesser General Public
5e6d44208f91 Add standard licensing header to files that lack it.
diego
parents: 5223
diff changeset
17 * License along with FFmpeg; if not, write to the Free Software
5e6d44208f91 Add standard licensing header to files that lack it.
diego
parents: 5223
diff changeset
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
5e6d44208f91 Add standard licensing header to files that lack it.
diego
parents: 5223
diff changeset
19 */
5e6d44208f91 Add standard licensing header to files that lack it.
diego
parents: 5223
diff changeset
20
7760
c4a4495715dd Globally rename the header inclusion guard names.
stefano
parents: 5830
diff changeset
21 #ifndef AVCODEC_XVMC_RENDER_H
c4a4495715dd Globally rename the header inclusion guard names.
stefano
parents: 5830
diff changeset
22 #define AVCODEC_XVMC_RENDER_H
5163
9ecbfc0c82bf add multiple inclusion guards to headers
mru
parents: 4738
diff changeset
23
4524
722e3199c56e Move xvmc_render.h to libavcodec where it belongs. Blessed by Ivan.
diego
parents:
diff changeset
24 #include <X11/Xlib.h>
722e3199c56e Move xvmc_render.h to libavcodec where it belongs. Blessed by Ivan.
diego
parents:
diff changeset
25 #include <X11/Xutil.h>
722e3199c56e Move xvmc_render.h to libavcodec where it belongs. Blessed by Ivan.
diego
parents:
diff changeset
26 #include <X11/Xatom.h>
722e3199c56e Move xvmc_render.h to libavcodec where it belongs. Blessed by Ivan.
diego
parents:
diff changeset
27 #include <X11/extensions/Xv.h>
722e3199c56e Move xvmc_render.h to libavcodec where it belongs. Blessed by Ivan.
diego
parents:
diff changeset
28 #include <X11/extensions/Xvlib.h>
722e3199c56e Move xvmc_render.h to libavcodec where it belongs. Blessed by Ivan.
diego
parents:
diff changeset
29 #include <X11/extensions/XvMClib.h>
722e3199c56e Move xvmc_render.h to libavcodec where it belongs. Blessed by Ivan.
diego
parents:
diff changeset
30
722e3199c56e Move xvmc_render.h to libavcodec where it belongs. Blessed by Ivan.
diego
parents:
diff changeset
31
8322
8daa347431a4 cosmetics: typo/grammar/wording/whitespace fixes
diego
parents: 7760
diff changeset
32 //the surface should be shown, the video driver manipulates this
4524
722e3199c56e Move xvmc_render.h to libavcodec where it belongs. Blessed by Ivan.
diego
parents:
diff changeset
33 #define MP_XVMC_STATE_DISPLAY_PENDING 1
8322
8daa347431a4 cosmetics: typo/grammar/wording/whitespace fixes
diego
parents: 7760
diff changeset
34 //the surface is needed for prediction, the codec manipulates this
4524
722e3199c56e Move xvmc_render.h to libavcodec where it belongs. Blessed by Ivan.
diego
parents:
diff changeset
35 #define MP_XVMC_STATE_PREDICTION 2
4738
7bec6dd03317 get rid of unused entries in the middle of xvmc_render struct,
iive
parents: 4524
diff changeset
36 //this surface is needed for subpicture rendering
7bec6dd03317 get rid of unused entries in the middle of xvmc_render struct,
iive
parents: 4524
diff changeset
37 #define MP_XVMC_STATE_OSD_SOURCE 4
4524
722e3199c56e Move xvmc_render.h to libavcodec where it belongs. Blessed by Ivan.
diego
parents:
diff changeset
38 // 1337 IDCT MCo
722e3199c56e Move xvmc_render.h to libavcodec where it belongs. Blessed by Ivan.
diego
parents:
diff changeset
39 #define MP_XVMC_RENDER_MAGIC 0x1DC711C0
722e3199c56e Move xvmc_render.h to libavcodec where it belongs. Blessed by Ivan.
diego
parents:
diff changeset
40
8509
5dffd656f606 Avoid POSIX-reserved _t namespace.
diego
parents: 8341
diff changeset
41 struct xvmc_render_state {
8341
750453ac8c90 whitespace cosmetics
diego
parents: 8322
diff changeset
42 //these are not changed by the decoder!
750453ac8c90 whitespace cosmetics
diego
parents: 8322
diff changeset
43 int magic;
4524
722e3199c56e Move xvmc_render.h to libavcodec where it belongs. Blessed by Ivan.
diego
parents:
diff changeset
44
8341
750453ac8c90 whitespace cosmetics
diego
parents: 8322
diff changeset
45 short * data_blocks;
750453ac8c90 whitespace cosmetics
diego
parents: 8322
diff changeset
46 XvMCMacroBlock * mv_blocks;
750453ac8c90 whitespace cosmetics
diego
parents: 8322
diff changeset
47 int total_number_of_mv_blocks;
750453ac8c90 whitespace cosmetics
diego
parents: 8322
diff changeset
48 int total_number_of_data_blocks;
750453ac8c90 whitespace cosmetics
diego
parents: 8322
diff changeset
49 int mc_type; //XVMC_MPEG1/2/4,XVMC_H263 without XVMC_IDCT
750453ac8c90 whitespace cosmetics
diego
parents: 8322
diff changeset
50 int idct; //Do we use IDCT acceleration?
750453ac8c90 whitespace cosmetics
diego
parents: 8322
diff changeset
51 int chroma_format; //420, 422, 444
750453ac8c90 whitespace cosmetics
diego
parents: 8322
diff changeset
52 int unsigned_intra; //+-128 for intra pictures after clipping
750453ac8c90 whitespace cosmetics
diego
parents: 8322
diff changeset
53 XvMCSurface* p_surface; //pointer to rendered surface, never changed
4524
722e3199c56e Move xvmc_render.h to libavcodec where it belongs. Blessed by Ivan.
diego
parents:
diff changeset
54
8341
750453ac8c90 whitespace cosmetics
diego
parents: 8322
diff changeset
55 //these are changed by the decoder
750453ac8c90 whitespace cosmetics
diego
parents: 8322
diff changeset
56 //used by the XvMCRenderSurface function
750453ac8c90 whitespace cosmetics
diego
parents: 8322
diff changeset
57 XvMCSurface* p_past_surface; //pointer to the past surface
750453ac8c90 whitespace cosmetics
diego
parents: 8322
diff changeset
58 XvMCSurface* p_future_surface; //pointer to the future prediction surface
4524
722e3199c56e Move xvmc_render.h to libavcodec where it belongs. Blessed by Ivan.
diego
parents:
diff changeset
59
8341
750453ac8c90 whitespace cosmetics
diego
parents: 8322
diff changeset
60 unsigned int picture_structure; //top/bottom fields or frame!
750453ac8c90 whitespace cosmetics
diego
parents: 8322
diff changeset
61 unsigned int flags; //XVMC_SECOND_FIELD - 1st or 2nd field in the sequence
750453ac8c90 whitespace cosmetics
diego
parents: 8322
diff changeset
62 unsigned int display_flags; //1,2 or 1+2 fields for XvMCPutSurface
4524
722e3199c56e Move xvmc_render.h to libavcodec where it belongs. Blessed by Ivan.
diego
parents:
diff changeset
63
8341
750453ac8c90 whitespace cosmetics
diego
parents: 8322
diff changeset
64 //these are for internal communication
750453ac8c90 whitespace cosmetics
diego
parents: 8322
diff changeset
65 int state; //0 - free, 1 - waiting to display, 2 - waiting for prediction
750453ac8c90 whitespace cosmetics
diego
parents: 8322
diff changeset
66 int start_mv_blocks_num; //offset in the array for the current slice, updated by vo
750453ac8c90 whitespace cosmetics
diego
parents: 8322
diff changeset
67 int filled_mv_blocks_num; //processed mv block in this slice, changed by decoder
4524
722e3199c56e Move xvmc_render.h to libavcodec where it belongs. Blessed by Ivan.
diego
parents:
diff changeset
68
8341
750453ac8c90 whitespace cosmetics
diego
parents: 8322
diff changeset
69 int next_free_data_block_num; //used in add_mv_block, pointer to next free block
750453ac8c90 whitespace cosmetics
diego
parents: 8322
diff changeset
70 //extensions
750453ac8c90 whitespace cosmetics
diego
parents: 8322
diff changeset
71 void * p_osd_target_surface_render; //pointer to the surface where subpicture is rendered
4524
722e3199c56e Move xvmc_render.h to libavcodec where it belongs. Blessed by Ivan.
diego
parents:
diff changeset
72
8509
5dffd656f606 Avoid POSIX-reserved _t namespace.
diego
parents: 8341
diff changeset
73 };
5163
9ecbfc0c82bf add multiple inclusion guards to headers
mru
parents: 4738
diff changeset
74
7760
c4a4495715dd Globally rename the header inclusion guard names.
stefano
parents: 5830
diff changeset
75 #endif /* AVCODEC_XVMC_RENDER_H */