Mercurial > mplayer.hg
annotate stream/tvi_def.h @ 31375:0f1be4f9f7ff
Factorize monitor_aspect extern declaration into aspect.h.
author | diego |
---|---|
date | Thu, 17 Jun 2010 08:17:06 +0000 |
parents | 9fc9d1e788aa |
children | 535ebcd085e4 |
rev | line source |
---|---|
30426
ce0122361a39
Add license header to all files missing it in the stream subdirectory.
diego
parents:
29759
diff
changeset
|
1 /* |
ce0122361a39
Add license header to all files missing it in the stream subdirectory.
diego
parents:
29759
diff
changeset
|
2 * This file is part of MPlayer. |
ce0122361a39
Add license header to all files missing it in the stream subdirectory.
diego
parents:
29759
diff
changeset
|
3 * |
ce0122361a39
Add license header to all files missing it in the stream subdirectory.
diego
parents:
29759
diff
changeset
|
4 * MPlayer is free software; you can redistribute it and/or modify |
ce0122361a39
Add license header to all files missing it in the stream subdirectory.
diego
parents:
29759
diff
changeset
|
5 * it under the terms of the GNU General Public License as published by |
ce0122361a39
Add license header to all files missing it in the stream subdirectory.
diego
parents:
29759
diff
changeset
|
6 * the Free Software Foundation; either version 2 of the License, or |
ce0122361a39
Add license header to all files missing it in the stream subdirectory.
diego
parents:
29759
diff
changeset
|
7 * (at your option) any later version. |
ce0122361a39
Add license header to all files missing it in the stream subdirectory.
diego
parents:
29759
diff
changeset
|
8 * |
ce0122361a39
Add license header to all files missing it in the stream subdirectory.
diego
parents:
29759
diff
changeset
|
9 * MPlayer is distributed in the hope that it will be useful, |
ce0122361a39
Add license header to all files missing it in the stream subdirectory.
diego
parents:
29759
diff
changeset
|
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
ce0122361a39
Add license header to all files missing it in the stream subdirectory.
diego
parents:
29759
diff
changeset
|
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
ce0122361a39
Add license header to all files missing it in the stream subdirectory.
diego
parents:
29759
diff
changeset
|
12 * GNU General Public License for more details. |
ce0122361a39
Add license header to all files missing it in the stream subdirectory.
diego
parents:
29759
diff
changeset
|
13 * |
ce0122361a39
Add license header to all files missing it in the stream subdirectory.
diego
parents:
29759
diff
changeset
|
14 * You should have received a copy of the GNU General Public License along |
ce0122361a39
Add license header to all files missing it in the stream subdirectory.
diego
parents:
29759
diff
changeset
|
15 * with MPlayer; if not, write to the Free Software Foundation, Inc., |
ce0122361a39
Add license header to all files missing it in the stream subdirectory.
diego
parents:
29759
diff
changeset
|
16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. |
ce0122361a39
Add license header to all files missing it in the stream subdirectory.
diego
parents:
29759
diff
changeset
|
17 */ |
ce0122361a39
Add license header to all files missing it in the stream subdirectory.
diego
parents:
29759
diff
changeset
|
18 |
26029 | 19 #ifndef MPLAYER_TVI_DEF_H |
20 #define MPLAYER_TVI_DEF_H | |
26012 | 21 |
3815 | 22 #include <stdlib.h> /* malloc */ |
8123
9fc45fe0d444
*HUGE* set of compiler warning fixes, unused variables removal
arpi
parents:
5572
diff
changeset
|
23 #include <string.h> /* memset */ |
26184
7ee4ae1648e6
Add missing header #includes to fix 'make checkheaders'.
diego
parents:
26029
diff
changeset
|
24 #include "libmpcodecs/img_format.h" |
7ee4ae1648e6
Add missing header #includes to fix 'make checkheaders'.
diego
parents:
26029
diff
changeset
|
25 #include "tv.h" |
3815 | 26 |
27 static int init(priv_t *priv); | |
2802 | 28 static int uninit(priv_t *priv); |
2790 | 29 static int control(priv_t *priv, int cmd, void *arg); |
2802 | 30 static int start(priv_t *priv); |
5572
8cd761968f35
BSD-BT848 TV update patch by Charles Henrich <henrich@sigbus.com>
arpi
parents:
3815
diff
changeset
|
31 static double grab_video_frame(priv_t *priv, char *buffer, int len); |
2790 | 32 static int get_video_framesize(priv_t *priv); |
5572
8cd761968f35
BSD-BT848 TV update patch by Charles Henrich <henrich@sigbus.com>
arpi
parents:
3815
diff
changeset
|
33 static double grab_audio_frame(priv_t *priv, char *buffer, int len); |
2790 | 34 static int get_audio_framesize(priv_t *priv); |
35 | |
25684 | 36 static const tvi_functions_t functions = |
2790 | 37 { |
38 init, | |
2802 | 39 uninit, |
2790 | 40 control, |
2802 | 41 start, |
2790 | 42 grab_video_frame, |
43 get_video_framesize, | |
44 grab_audio_frame, | |
45 get_audio_framesize | |
46 }; | |
47 | |
17566
f580a7755ac5
Patch by Stefan Huehner / stefan % huehner ! org \
rathann
parents:
8123
diff
changeset
|
48 static tvi_handle_t *new_handle(void) |
2790 | 49 { |
30702 | 50 tvi_handle_t *h = malloc(sizeof(tvi_handle_t)); |
2790 | 51 |
52 if (!h) | |
26756
c43ce7268677
cosmetics: Remove useless parentheses from return statements.
diego
parents:
26184
diff
changeset
|
53 return NULL; |
30702 | 54 h->priv = malloc(sizeof(priv_t)); |
2790 | 55 if (!h->priv) |
56 { | |
57 free(h); | |
26756
c43ce7268677
cosmetics: Remove useless parentheses from return statements.
diego
parents:
26184
diff
changeset
|
58 return NULL; |
2790 | 59 } |
60 memset(h->priv, 0, sizeof(priv_t)); | |
61 h->functions = &functions; | |
2802 | 62 h->seq = 0; |
2941
60c1b7c0ea21
added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents:
2819
diff
changeset
|
63 h->chanlist = -1; |
60c1b7c0ea21
added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents:
2819
diff
changeset
|
64 h->chanlist_s = NULL; |
60c1b7c0ea21
added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents:
2819
diff
changeset
|
65 h->norm = -1; |
60c1b7c0ea21
added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents:
2819
diff
changeset
|
66 h->channel = -1; |
24105
9e71e0345c35
Automatic TV channels scanning ability for MPlayer.
voroshil
parents:
24104
diff
changeset
|
67 h->scan = NULL; |
26756
c43ce7268677
cosmetics: Remove useless parentheses from return statements.
diego
parents:
26184
diff
changeset
|
68 return h; |
2790 | 69 } |
70 | |
71 static void free_handle(tvi_handle_t *h) | |
72 { | |
3611 | 73 if (h) { |
74 if (h->priv) | |
75 free(h->priv); | |
24105
9e71e0345c35
Automatic TV channels scanning ability for MPlayer.
voroshil
parents:
24104
diff
changeset
|
76 if (h->scan) |
9e71e0345c35
Automatic TV channels scanning ability for MPlayer.
voroshil
parents:
24104
diff
changeset
|
77 free(h->scan); |
2790 | 78 free(h); |
3611 | 79 } |
2790 | 80 } |
23422 | 81 |
82 /** | |
83 Fills video frame in given buffer with blue color for yv12,i420,uyvy,yuy2. | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
26756
diff
changeset
|
84 Other formats will be filled with 0xC0 |
23422 | 85 */ |
86 static inline void fill_blank_frame(char* buffer,int len,int fmt){ | |
87 int i; | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
26756
diff
changeset
|
88 // RGB(0,0,255) <-> YVU(41,110,240) |
23422 | 89 |
90 switch(fmt){ | |
91 case IMGFMT_YV12: | |
24104
b0a47d3bf2f3
Fix blue color for yv12 and i420 image formats in "automute" screen
voroshil
parents:
24017
diff
changeset
|
92 memset(buffer, 41,4*len/6); //Y |
b0a47d3bf2f3
Fix blue color for yv12 and i420 image formats in "automute" screen
voroshil
parents:
24017
diff
changeset
|
93 memset(buffer+4*len/6, 110,len/6);//V |
b0a47d3bf2f3
Fix blue color for yv12 and i420 image formats in "automute" screen
voroshil
parents:
24017
diff
changeset
|
94 memset(buffer+5*len/6, 240,len/6);//U |
23422 | 95 break; |
96 case IMGFMT_I420: | |
24104
b0a47d3bf2f3
Fix blue color for yv12 and i420 image formats in "automute" screen
voroshil
parents:
24017
diff
changeset
|
97 memset(buffer, 41,4*len/6); //Y |
b0a47d3bf2f3
Fix blue color for yv12 and i420 image formats in "automute" screen
voroshil
parents:
24017
diff
changeset
|
98 memset(buffer+4*len/6, 240,len/6);//U |
b0a47d3bf2f3
Fix blue color for yv12 and i420 image formats in "automute" screen
voroshil
parents:
24017
diff
changeset
|
99 memset(buffer+5*len/6, 110,len/6);//V |
23422 | 100 break; |
101 case IMGFMT_UYVY: | |
102 for(i=0;i<len;i+=4){ | |
103 buffer[i]=0xFF; | |
104 buffer[i+1]=0; | |
105 buffer[i+2]=0; | |
106 buffer[i+3]=0; | |
107 } | |
108 break; | |
109 case IMGFMT_YUY2: | |
110 for(i=0;i<len;i+=4){ | |
111 buffer[i]=0; | |
112 buffer[i+1]=0xFF; | |
113 buffer[i+2]=0; | |
114 buffer[i+3]=0; | |
115 } | |
116 break; | |
23423 | 117 case IMGFMT_MJPEG: |
118 /* | |
119 This is compressed format. I don't know yet how to fill such frame with blue color. | |
120 Keeping frame unchanged. | |
121 */ | |
122 break; | |
23422 | 123 default: |
124 memset(buffer,0xC0,len); | |
125 } | |
126 } | |
26012 | 127 |
26029 | 128 #endif /* MPLAYER_TVI_DEF_H */ |