Annotation of margi2/video.h, revision 1.1.1.1
1.1 cvs 1: /*
2: video.h
3:
4: Copyright (C) Christian Wolff for convergence integrated media.
5:
6: This program is free software; you can redistribute it and/or modify
7: it under the terms of the GNU General Public License as published by
8: the Free Software Foundation; either version 2 of the License, or
9: (at your option) any later version.
10:
11: This program is distributed in the hope that it will be useful,
12: but WITHOUT ANY WARRANTY; without even the implied warranty of
13: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14: GNU General Public License for more details.
15:
16: You should have received a copy of the GNU General Public License
17: along with this program; if not, write to the Free Software
18: Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19: */
20:
21: #ifndef CVDV_VIDEO_H
22: #define CVDV_VIDEO_H
23:
24: //
25: // Video Decoder
26: //
27:
28: #include "cardbase.h"
29:
30: // Set the background of the OSD and SPU and it's color
31: // mode=0: Video on Black
32: // mode=1: Black
33: // mode=2: Selected Color
34: // mode=3: Video on Selected Color
35: void VideoSetBackground(struct cvdv_cards *card, int mode, u8 Y, u8 Cb,
36: u8 Cr);
37:
38:
39: int DecoderStartDecode(struct cvdv_cards *card);
40:
41: int DecoderStopDecode(struct cvdv_cards *card);
42:
43: // Sets Display Override (Still Image Display) to Frame Buffer at specified addresses,
44: // addresses are 16 bit, in 64 byte resolution
45: // mode: 0=off, 1=Frame, 2=Field
46: // width: width of the still picture in 8 pixel units
47: int DecoderStillImageDisplay(struct cvdv_cards *card, int mode, int width,
48: u16 LumaAddr, u16 ChromaAddr);
49:
50: // Frees allocated frame buffers
51: int DecoderKillFrameBuffers(struct cvdv_cards *card);
52:
53: int DecoderSetFrameBuffers(struct cvdv_cards *card, int lines, // number of lines of the decoded MPEG
54: int TwoFrames, // 1 if no B-Frames are present in the video stream, thus allowing only 2 framestores
55: int RMM); // 1 if RMM
56:
57: // returns size of the Video ES Buffer in bytes or 0=error
58: u32 DecoderGetVideoESSize(struct cvdv_cards *card);
59:
60: // returns level of fullness in bytes
61: u32 DecoderGetVideoESLevel(struct cvdv_cards *card);
62:
63: // pics=0 --> items=bytes
64: // pics=1 --> items=pictures
65: void DecoderSetVideoPanic(struct cvdv_cards *card, int pics, int items);
66:
67: int DecoderClose(struct cvdv_cards *card);
68:
69: // returns 0 on success, 1 on "picture size too big", 2 on "out of DRAM memory"
70: int DecoderOpen(struct cvdv_cards *card, int x, int y, // size of the decoded MPEG picture
71: int aspect, // pixel or picture aspect ratio of the MPEG picture: 1=square pixel 2=3:4 3=9:16 4=1:2.21
72: int Field, // 0:Frame (interlaced, MPEG-2) , 1:Field (non-interlaced, MPEG-1) structure
73: int Letterbox, // 0:PanScan (4:3), 1:letterbox (16:9, 8:3) picture ratio // TODO, ignored for now
74: int RMM // 1:use ReducedMemoryMode
75: );
76:
77: // displays a still image, whose pixel data is in luma and chroma
78: int DecoderShowStill(struct cvdv_cards *card, int width, int height,
79: u8 * luma, u8 * chroma);
80:
81: // TODO: untested, probably won't work (have to use "main reads per line" instead of width on SIF)
82: int DecoderGetStill(struct cvdv_cards *card, int *width, int *height,
83: u8 * luma, u8 * chroma);
84:
85: #endif /* CVDV_VIDEO_H */
LinuxTV legacy CVS <linuxtv.org/cvs>