annotate libmpcodecs/mp_image.h @ 33771:6e774a02d00c

Remove gtkClearStruct code from mplayer() in interface.c. Move it as static function guiInfoMediumClear() where it is used and rename the symbolic constants used with this code.
author ib
date Sat, 09 Jul 2011 11:48:13 +0000
parents 7af3e6f901fd
children a93891202051
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
30421
bbb6ebec87a0 Add missing license headers to all files in the libmpcodecs directory.
diego
parents: 30115
diff changeset
1 /*
bbb6ebec87a0 Add missing license headers to all files in the libmpcodecs directory.
diego
parents: 30115
diff changeset
2 * This file is part of MPlayer.
bbb6ebec87a0 Add missing license headers to all files in the libmpcodecs directory.
diego
parents: 30115
diff changeset
3 *
bbb6ebec87a0 Add missing license headers to all files in the libmpcodecs directory.
diego
parents: 30115
diff changeset
4 * MPlayer is free software; you can redistribute it and/or modify
bbb6ebec87a0 Add missing license headers to all files in the libmpcodecs directory.
diego
parents: 30115
diff changeset
5 * it under the terms of the GNU General Public License as published by
bbb6ebec87a0 Add missing license headers to all files in the libmpcodecs directory.
diego
parents: 30115
diff changeset
6 * the Free Software Foundation; either version 2 of the License, or
bbb6ebec87a0 Add missing license headers to all files in the libmpcodecs directory.
diego
parents: 30115
diff changeset
7 * (at your option) any later version.
bbb6ebec87a0 Add missing license headers to all files in the libmpcodecs directory.
diego
parents: 30115
diff changeset
8 *
bbb6ebec87a0 Add missing license headers to all files in the libmpcodecs directory.
diego
parents: 30115
diff changeset
9 * MPlayer is distributed in the hope that it will be useful,
bbb6ebec87a0 Add missing license headers to all files in the libmpcodecs directory.
diego
parents: 30115
diff changeset
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
bbb6ebec87a0 Add missing license headers to all files in the libmpcodecs directory.
diego
parents: 30115
diff changeset
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
bbb6ebec87a0 Add missing license headers to all files in the libmpcodecs directory.
diego
parents: 30115
diff changeset
12 * GNU General Public License for more details.
bbb6ebec87a0 Add missing license headers to all files in the libmpcodecs directory.
diego
parents: 30115
diff changeset
13 *
bbb6ebec87a0 Add missing license headers to all files in the libmpcodecs directory.
diego
parents: 30115
diff changeset
14 * You should have received a copy of the GNU General Public License along
bbb6ebec87a0 Add missing license headers to all files in the libmpcodecs directory.
diego
parents: 30115
diff changeset
15 * with MPlayer; if not, write to the Free Software Foundation, Inc.,
bbb6ebec87a0 Add missing license headers to all files in the libmpcodecs directory.
diego
parents: 30115
diff changeset
16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
bbb6ebec87a0 Add missing license headers to all files in the libmpcodecs directory.
diego
parents: 30115
diff changeset
17 */
bbb6ebec87a0 Add missing license headers to all files in the libmpcodecs directory.
diego
parents: 30115
diff changeset
18
26029
4129c8cfa742 Add MPLAYER_ prefix to multiple inclusion guards.
diego
parents: 25535
diff changeset
19 #ifndef MPLAYER_MP_IMAGE_H
4129c8cfa742 Add MPLAYER_ prefix to multiple inclusion guards.
diego
parents: 25535
diff changeset
20 #define MPLAYER_MP_IMAGE_H
4185
85c90bb8729a initial stuff. comments welcomed...
arpi
parents:
diff changeset
21
26147
41652035483c Add necessary header #includes to fix 'make checkheaders'.
diego
parents: 26029
diff changeset
22 #include <stdio.h>
41652035483c Add necessary header #includes to fix 'make checkheaders'.
diego
parents: 26029
diff changeset
23 #include <stdlib.h>
41652035483c Add necessary header #includes to fix 'make checkheaders'.
diego
parents: 26029
diff changeset
24 #include <string.h>
28518
bc49856e5024 Replace fprintf call by mp_msg, fixes the warning:
diego
parents: 28517
diff changeset
25 #include "mp_msg.h"
26147
41652035483c Add necessary header #includes to fix 'make checkheaders'.
diego
parents: 26029
diff changeset
26
6875
255b150a75a5 - some reorder/cleanup of mp_image flags
arpi
parents: 6863
diff changeset
27 //--------- codec's requirements (filled by the codec/vf) ---------
255b150a75a5 - some reorder/cleanup of mp_image flags
arpi
parents: 6863
diff changeset
28
255b150a75a5 - some reorder/cleanup of mp_image flags
arpi
parents: 6863
diff changeset
29 //--- buffer content restrictions:
4877
9d97874d8691 new flags added for direct rendering (libmpcodecs core)
arpi
parents: 4187
diff changeset
30 // set if buffer content shouldn't be modified:
9d97874d8691 new flags added for direct rendering (libmpcodecs core)
arpi
parents: 4187
diff changeset
31 #define MP_IMGFLAG_PRESERVE 0x01
6538
afb4f3c107e7 better planar support, chroma subsampling support and Y8/Y800 support
alex
parents: 6525
diff changeset
32 // set if buffer content will be READ for next frame's MC: (I/P mpeg frames)
4877
9d97874d8691 new flags added for direct rendering (libmpcodecs core)
arpi
parents: 4187
diff changeset
33 #define MP_IMGFLAG_READABLE 0x02
6875
255b150a75a5 - some reorder/cleanup of mp_image flags
arpi
parents: 6863
diff changeset
34
255b150a75a5 - some reorder/cleanup of mp_image flags
arpi
parents: 6863
diff changeset
35 //--- buffer width/stride/plane restrictions: (used for direct rendering)
255b150a75a5 - some reorder/cleanup of mp_image flags
arpi
parents: 6863
diff changeset
36 // stride _have_to_ be aligned to MB boundary: [for DR restrictions]
255b150a75a5 - some reorder/cleanup of mp_image flags
arpi
parents: 6863
diff changeset
37 #define MP_IMGFLAG_ACCEPT_ALIGNED_STRIDE 0x4
255b150a75a5 - some reorder/cleanup of mp_image flags
arpi
parents: 6863
diff changeset
38 // stride should be aligned to MB boundary: [for buffer allocation]
255b150a75a5 - some reorder/cleanup of mp_image flags
arpi
parents: 6863
diff changeset
39 #define MP_IMGFLAG_PREFER_ALIGNED_STRIDE 0x8
4877
9d97874d8691 new flags added for direct rendering (libmpcodecs core)
arpi
parents: 4187
diff changeset
40 // codec accept any stride (>=width):
9d97874d8691 new flags added for direct rendering (libmpcodecs core)
arpi
parents: 4187
diff changeset
41 #define MP_IMGFLAG_ACCEPT_STRIDE 0x10
6875
255b150a75a5 - some reorder/cleanup of mp_image flags
arpi
parents: 6863
diff changeset
42 // codec accept any width (width*bpp=stride -> stride%bpp==0) (>=width):
4962
993f274191ff ACCEPT_WIDTH flag added
arpi
parents: 4933
diff changeset
43 #define MP_IMGFLAG_ACCEPT_WIDTH 0x20
6875
255b150a75a5 - some reorder/cleanup of mp_image flags
arpi
parents: 6863
diff changeset
44 //--- for planar formats only:
255b150a75a5 - some reorder/cleanup of mp_image flags
arpi
parents: 6863
diff changeset
45 // uses only stride[0], and stride[1]=stride[2]=stride[0]>>mpi->chroma_x_shift
255b150a75a5 - some reorder/cleanup of mp_image flags
arpi
parents: 6863
diff changeset
46 #define MP_IMGFLAG_COMMON_STRIDE 0x40
255b150a75a5 - some reorder/cleanup of mp_image flags
arpi
parents: 6863
diff changeset
47 // uses only planes[0], and calculates planes[1,2] from width,height,imgfmt
255b150a75a5 - some reorder/cleanup of mp_image flags
arpi
parents: 6863
diff changeset
48 #define MP_IMGFLAG_COMMON_PLANE 0x80
4185
85c90bb8729a initial stuff. comments welcomed...
arpi
parents:
diff changeset
49
6875
255b150a75a5 - some reorder/cleanup of mp_image flags
arpi
parents: 6863
diff changeset
50 #define MP_IMGFLAGMASK_RESTRICTIONS 0xFF
255b150a75a5 - some reorder/cleanup of mp_image flags
arpi
parents: 6863
diff changeset
51
255b150a75a5 - some reorder/cleanup of mp_image flags
arpi
parents: 6863
diff changeset
52 //--------- color info (filled by mp_image_setfmt() ) -----------
4185
85c90bb8729a initial stuff. comments welcomed...
arpi
parents:
diff changeset
53 // set if number of planes > 1
4877
9d97874d8691 new flags added for direct rendering (libmpcodecs core)
arpi
parents: 4187
diff changeset
54 #define MP_IMGFLAG_PLANAR 0x100
4185
85c90bb8729a initial stuff. comments welcomed...
arpi
parents:
diff changeset
55 // set if it's YUV colorspace
4877
9d97874d8691 new flags added for direct rendering (libmpcodecs core)
arpi
parents: 4187
diff changeset
56 #define MP_IMGFLAG_YUV 0x200
6875
255b150a75a5 - some reorder/cleanup of mp_image flags
arpi
parents: 6863
diff changeset
57 // set if it's swapped (BGR or YVU) plane/byteorder
4877
9d97874d8691 new flags added for direct rendering (libmpcodecs core)
arpi
parents: 4187
diff changeset
58 #define MP_IMGFLAG_SWAPPED 0x400
30074
5cb79ad246f2 Support mp_image with allocated palette.
reimar
parents: 28956
diff changeset
59 // set if you want memory for palette allocated and managed by vf_get_image etc.
6875
255b150a75a5 - some reorder/cleanup of mp_image flags
arpi
parents: 6863
diff changeset
60 #define MP_IMGFLAG_RGB_PALETTE 0x800
255b150a75a5 - some reorder/cleanup of mp_image flags
arpi
parents: 6863
diff changeset
61
255b150a75a5 - some reorder/cleanup of mp_image flags
arpi
parents: 6863
diff changeset
62 #define MP_IMGFLAGMASK_COLORS 0xF00
255b150a75a5 - some reorder/cleanup of mp_image flags
arpi
parents: 6863
diff changeset
63
255b150a75a5 - some reorder/cleanup of mp_image flags
arpi
parents: 6863
diff changeset
64 // codec uses drawing/rendering callbacks (draw_slice()-like thing, DR method 2)
255b150a75a5 - some reorder/cleanup of mp_image flags
arpi
parents: 6863
diff changeset
65 // [the codec will set this flag if it supports callbacks, and the vo _may_
255b150a75a5 - some reorder/cleanup of mp_image flags
arpi
parents: 6863
diff changeset
66 // clear it in get_image() if draw_slice() not implemented]
255b150a75a5 - some reorder/cleanup of mp_image flags
arpi
parents: 6863
diff changeset
67 #define MP_IMGFLAG_DRAW_CALLBACK 0x1000
255b150a75a5 - some reorder/cleanup of mp_image flags
arpi
parents: 6863
diff changeset
68 // set if it's in video buffer/memory: [set by vo/vf's get_image() !!!]
255b150a75a5 - some reorder/cleanup of mp_image flags
arpi
parents: 6863
diff changeset
69 #define MP_IMGFLAG_DIRECT 0x2000
255b150a75a5 - some reorder/cleanup of mp_image flags
arpi
parents: 6863
diff changeset
70 // set if buffer is allocated (used in destination images):
255b150a75a5 - some reorder/cleanup of mp_image flags
arpi
parents: 6863
diff changeset
71 #define MP_IMGFLAG_ALLOCATED 0x4000
255b150a75a5 - some reorder/cleanup of mp_image flags
arpi
parents: 6863
diff changeset
72
255b150a75a5 - some reorder/cleanup of mp_image flags
arpi
parents: 6863
diff changeset
73 // buffer type was printed (do NOT set this flag - it's for INTERNAL USE!!!)
255b150a75a5 - some reorder/cleanup of mp_image flags
arpi
parents: 6863
diff changeset
74 #define MP_IMGFLAG_TYPE_DISPLAYED 0x8000
4185
85c90bb8729a initial stuff. comments welcomed...
arpi
parents:
diff changeset
75
4877
9d97874d8691 new flags added for direct rendering (libmpcodecs core)
arpi
parents: 4187
diff changeset
76 // codec doesn't support any form of direct rendering - it has own buffer
9d97874d8691 new flags added for direct rendering (libmpcodecs core)
arpi
parents: 4187
diff changeset
77 // allocation. so we just export its buffer pointers:
4186
f5c38da17b59 bpp != depth
arpi
parents: 4185
diff changeset
78 #define MP_IMGTYPE_EXPORT 0
4877
9d97874d8691 new flags added for direct rendering (libmpcodecs core)
arpi
parents: 4187
diff changeset
79 // codec requires a static WO buffer, but it does only partial updates later:
4186
f5c38da17b59 bpp != depth
arpi
parents: 4185
diff changeset
80 #define MP_IMGTYPE_STATIC 1
4877
9d97874d8691 new flags added for direct rendering (libmpcodecs core)
arpi
parents: 4187
diff changeset
81 // codec just needs some WO memory, where it writes/copies the whole frame to:
4186
f5c38da17b59 bpp != depth
arpi
parents: 4185
diff changeset
82 #define MP_IMGTYPE_TEMP 2
4877
9d97874d8691 new flags added for direct rendering (libmpcodecs core)
arpi
parents: 4187
diff changeset
83 // I+P type, requires 2+ independent static R/W buffers
9d97874d8691 new flags added for direct rendering (libmpcodecs core)
arpi
parents: 4187
diff changeset
84 #define MP_IMGTYPE_IP 3
9d97874d8691 new flags added for direct rendering (libmpcodecs core)
arpi
parents: 4187
diff changeset
85 // I+P+B type, requires 2+ independent static R/W and 1+ temp WO buffers
9d97874d8691 new flags added for direct rendering (libmpcodecs core)
arpi
parents: 4187
diff changeset
86 #define MP_IMGTYPE_IPB 4
28515
134689b7b548 Add MP_IMGTYPE_NUMBERED which gives access to the kind of mp_image_t that
reimar
parents: 26147
diff changeset
87 // Upper 16 bits give desired buffer number, -1 means get next available
134689b7b548 Add MP_IMGTYPE_NUMBERED which gives access to the kind of mp_image_t that
reimar
parents: 26147
diff changeset
88 #define MP_IMGTYPE_NUMBERED 5
31953
2b390c08ed07 Improve correct-pts with PAFF streams.
cehoyos
parents: 31173
diff changeset
89 // Doesn't need any buffer, incomplete image (probably a first field only)
2b390c08ed07 Improve correct-pts with PAFF streams.
cehoyos
parents: 31173
diff changeset
90 // we need this type to be able to differentiate between half frames and
2b390c08ed07 Improve correct-pts with PAFF streams.
cehoyos
parents: 31173
diff changeset
91 // all other cases
2b390c08ed07 Improve correct-pts with PAFF streams.
cehoyos
parents: 31173
diff changeset
92 #define MP_IMGTYPE_INCOMPLETE 6
4186
f5c38da17b59 bpp != depth
arpi
parents: 4185
diff changeset
93
32702
7af3e6f901fd Convert some tabs to whitespace to allow using MPlayer filter sourcecode in FFmpeg.
cehoyos
parents: 31953
diff changeset
94 #define MP_MAX_PLANES 4
6538
afb4f3c107e7 better planar support, chroma subsampling support and Y8/Y800 support
alex
parents: 6525
diff changeset
95
10663
711159267b2d clean up field flags:
rfelker
parents: 10510
diff changeset
96 #define MP_IMGFIELD_ORDERED 0x01
711159267b2d clean up field flags:
rfelker
parents: 10510
diff changeset
97 #define MP_IMGFIELD_TOP_FIRST 0x02
711159267b2d clean up field flags:
rfelker
parents: 10510
diff changeset
98 #define MP_IMGFIELD_REPEAT_FIRST 0x04
711159267b2d clean up field flags:
rfelker
parents: 10510
diff changeset
99 #define MP_IMGFIELD_TOP 0x08
711159267b2d clean up field flags:
rfelker
parents: 10510
diff changeset
100 #define MP_IMGFIELD_BOTTOM 0x10
11669
bcf9862f61b2 set top_field first for lavc decoding and add MP_IMGFIELD_INTERLACED
michael
parents: 11386
diff changeset
101 #define MP_IMGFIELD_INTERLACED 0x20
10510
73b3e4336cd4 Add mpeg2_flags to mp_image_t, copy flags in vd_libmpeg2.c,
ranma
parents: 10316
diff changeset
102
31173
b35751576d17 cosmetics: Drop pointless _s suffix from 'struct mp_image'.
diego
parents: 30996
diff changeset
103 typedef struct mp_image {
28515
134689b7b548 Add MP_IMGTYPE_NUMBERED which gives access to the kind of mp_image_t that
reimar
parents: 26147
diff changeset
104 unsigned int flags;
4186
f5c38da17b59 bpp != depth
arpi
parents: 4185
diff changeset
105 unsigned char type;
28515
134689b7b548 Add MP_IMGTYPE_NUMBERED which gives access to the kind of mp_image_t that
reimar
parents: 26147
diff changeset
106 int number;
4186
f5c38da17b59 bpp != depth
arpi
parents: 4185
diff changeset
107 unsigned char bpp; // bits/pixel. NOT depth! for RGB it will be n*8
4185
85c90bb8729a initial stuff. comments welcomed...
arpi
parents:
diff changeset
108 unsigned int imgfmt;
85c90bb8729a initial stuff. comments welcomed...
arpi
parents:
diff changeset
109 int width,height; // stored dimensions
85c90bb8729a initial stuff. comments welcomed...
arpi
parents:
diff changeset
110 int x,y,w,h; // visible dimensions
6538
afb4f3c107e7 better planar support, chroma subsampling support and Y8/Y800 support
alex
parents: 6525
diff changeset
111 unsigned char* planes[MP_MAX_PLANES];
14792
6c12ee26fab9 stride must be signed! otherwise negative stride is broken on 64bit systems
rfelker
parents: 11669
diff changeset
112 int stride[MP_MAX_PLANES];
7984
a57c1fc0c2fc change qscale type to int8 and fix qscale ordering
michael
parents: 7957
diff changeset
113 char * qscale;
4185
85c90bb8729a initial stuff. comments welcomed...
arpi
parents:
diff changeset
114 int qstride;
7957
31fd09cc9ba2 passing picture_type (might be usefull for postprocessing)
michael
parents: 6911
diff changeset
115 int pict_type; // 0->unknown, 1->I, 2->P, 3->B
10663
711159267b2d clean up field flags:
rfelker
parents: 10510
diff changeset
116 int fields;
9925
420640a0f6d0 passing qscale_type around so the pp code can fix the mpeg2 <<1 thing
michael
parents: 9171
diff changeset
117 int qscale_type; // 0->mpeg1/4/h263, 1->mpeg2
6538
afb4f3c107e7 better planar support, chroma subsampling support and Y8/Y800 support
alex
parents: 6525
diff changeset
118 int num_planes;
afb4f3c107e7 better planar support, chroma subsampling support and Y8/Y800 support
alex
parents: 6525
diff changeset
119 /* these are only used by planar formats Y,U(Cb),V(Cr) */
afb4f3c107e7 better planar support, chroma subsampling support and Y8/Y800 support
alex
parents: 6525
diff changeset
120 int chroma_width;
afb4f3c107e7 better planar support, chroma subsampling support and Y8/Y800 support
alex
parents: 6525
diff changeset
121 int chroma_height;
6539
79b536a37e40 better planar support, chroma subsampling support and Y8/Y800 support
alex
parents: 6538
diff changeset
122 int chroma_x_shift; // horizontal
79b536a37e40 better planar support, chroma subsampling support and Y8/Y800 support
alex
parents: 6538
diff changeset
123 int chroma_y_shift; // vertical
28956
6d0da4fd4544 Allow to use vdpau temporal deinterlacers with hardware accelerated decoding.
cehoyos
parents: 28518
diff changeset
124 int usage_count;
6759
415be01747ae added 'priv' field to mpi - requires for tracking frames with different
arpi
parents: 6707
diff changeset
125 /* for private use by filter or vo driver (to store buffer id or dmpi) */
415be01747ae added 'priv' field to mpi - requires for tracking frames with different
arpi
parents: 6707
diff changeset
126 void* priv;
4185
85c90bb8729a initial stuff. comments welcomed...
arpi
parents:
diff changeset
127 } mp_image_t;
85c90bb8729a initial stuff. comments welcomed...
arpi
parents:
diff changeset
128
30996
6e9ece21c004 Move functions that really do not need to be inlined from the header
reimar
parents: 30702
diff changeset
129 void mp_image_setfmt(mp_image_t* mpi,unsigned int out_fmt);
6e9ece21c004 Move functions that really do not need to be inlined from the header
reimar
parents: 30702
diff changeset
130 mp_image_t* new_mp_image(int w,int h);
6e9ece21c004 Move functions that really do not need to be inlined from the header
reimar
parents: 30702
diff changeset
131 void free_mp_image(mp_image_t* mpi);
5737
de47aebf654c filters uninit
arpi
parents: 5609
diff changeset
132
23994
8572d2ef5263 Move alloc_mpi and copy_mpi from libmenu/vf_menu.c to libmpcodecs/mp_image.c.
cehoyos
parents: 23689
diff changeset
133 mp_image_t* alloc_mpi(int w, int h, unsigned long int fmt);
30115
ad61464d02a7 Add support for YUV format with alpha and fix the codecs.conf entry for vp6a
reimar
parents: 30110
diff changeset
134 void mp_image_alloc_planes(mp_image_t *mpi);
23994
8572d2ef5263 Move alloc_mpi and copy_mpi from libmenu/vf_menu.c to libmpcodecs/mp_image.c.
cehoyos
parents: 23689
diff changeset
135 void copy_mpi(mp_image_t *dmpi, mp_image_t *mpi);
8572d2ef5263 Move alloc_mpi and copy_mpi from libmenu/vf_menu.c to libmpcodecs/mp_image.c.
cehoyos
parents: 23689
diff changeset
136
26029
4129c8cfa742 Add MPLAYER_ prefix to multiple inclusion guards.
diego
parents: 25535
diff changeset
137 #endif /* MPLAYER_MP_IMAGE_H */