Mercurial > mplayer.hg
annotate stream/tvi_def.h @ 29839:a2a009b24502
Calculate length of ASF files with more than 1 second precision.
Based on patch by On2.
author | reimar |
---|---|
date | Tue, 10 Nov 2009 16:24:16 +0000 |
parents | d287e2785570 |
children | ce0122361a39 |
rev | line source |
---|---|
26029 | 1 #ifndef MPLAYER_TVI_DEF_H |
2 #define MPLAYER_TVI_DEF_H | |
26012 | 3 |
3815 | 4 #include <stdlib.h> /* malloc */ |
8123
9fc45fe0d444
*HUGE* set of compiler warning fixes, unused variables removal
arpi
parents:
5572
diff
changeset
|
5 #include <string.h> /* memset */ |
26184
7ee4ae1648e6
Add missing header #includes to fix 'make checkheaders'.
diego
parents:
26029
diff
changeset
|
6 #include "libmpcodecs/img_format.h" |
7ee4ae1648e6
Add missing header #includes to fix 'make checkheaders'.
diego
parents:
26029
diff
changeset
|
7 #include "tv.h" |
3815 | 8 |
9 static int init(priv_t *priv); | |
2802 | 10 static int uninit(priv_t *priv); |
2790 | 11 static int control(priv_t *priv, int cmd, void *arg); |
2802 | 12 static int start(priv_t *priv); |
5572
8cd761968f35
BSD-BT848 TV update patch by Charles Henrich <henrich@sigbus.com>
arpi
parents:
3815
diff
changeset
|
13 static double grab_video_frame(priv_t *priv, char *buffer, int len); |
2790 | 14 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
|
15 static double grab_audio_frame(priv_t *priv, char *buffer, int len); |
2790 | 16 static int get_audio_framesize(priv_t *priv); |
17 | |
25684 | 18 static const tvi_functions_t functions = |
2790 | 19 { |
20 init, | |
2802 | 21 uninit, |
2790 | 22 control, |
2802 | 23 start, |
2790 | 24 grab_video_frame, |
25 get_video_framesize, | |
26 grab_audio_frame, | |
27 get_audio_framesize | |
28 }; | |
29 | |
17566
f580a7755ac5
Patch by Stefan Huehner / stefan % huehner ! org \
rathann
parents:
8123
diff
changeset
|
30 static tvi_handle_t *new_handle(void) |
2790 | 31 { |
2819
2e58962dc9fe
cleaned up some warnings, and tv_param_on moved out from #ifdef USE_TV
alex
parents:
2802
diff
changeset
|
32 tvi_handle_t *h = (tvi_handle_t *)malloc(sizeof(tvi_handle_t)); |
2790 | 33 |
34 if (!h) | |
26756
c43ce7268677
cosmetics: Remove useless parentheses from return statements.
diego
parents:
26184
diff
changeset
|
35 return NULL; |
2802 | 36 h->priv = (priv_t *)malloc(sizeof(priv_t)); |
2790 | 37 if (!h->priv) |
38 { | |
39 free(h); | |
26756
c43ce7268677
cosmetics: Remove useless parentheses from return statements.
diego
parents:
26184
diff
changeset
|
40 return NULL; |
2790 | 41 } |
42 memset(h->priv, 0, sizeof(priv_t)); | |
43 h->functions = &functions; | |
2802 | 44 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
|
45 h->chanlist = -1; |
60c1b7c0ea21
added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents:
2819
diff
changeset
|
46 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
|
47 h->norm = -1; |
60c1b7c0ea21
added support for norm=,chanlist=,channel= and also on-the-fly channel chaning with keys
alex
parents:
2819
diff
changeset
|
48 h->channel = -1; |
24105
9e71e0345c35
Automatic TV channels scanning ability for MPlayer.
voroshil
parents:
24104
diff
changeset
|
49 h->scan = NULL; |
26756
c43ce7268677
cosmetics: Remove useless parentheses from return statements.
diego
parents:
26184
diff
changeset
|
50 return h; |
2790 | 51 } |
52 | |
53 static void free_handle(tvi_handle_t *h) | |
54 { | |
3611 | 55 if (h) { |
56 if (h->priv) | |
57 free(h->priv); | |
24105
9e71e0345c35
Automatic TV channels scanning ability for MPlayer.
voroshil
parents:
24104
diff
changeset
|
58 if (h->scan) |
9e71e0345c35
Automatic TV channels scanning ability for MPlayer.
voroshil
parents:
24104
diff
changeset
|
59 free(h->scan); |
2790 | 60 free(h); |
3611 | 61 } |
2790 | 62 } |
23422 | 63 |
64 /** | |
65 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
|
66 Other formats will be filled with 0xC0 |
23422 | 67 */ |
68 static inline void fill_blank_frame(char* buffer,int len,int fmt){ | |
69 int i; | |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
26756
diff
changeset
|
70 // RGB(0,0,255) <-> YVU(41,110,240) |
23422 | 71 |
72 switch(fmt){ | |
73 case IMGFMT_YV12: | |
24104
b0a47d3bf2f3
Fix blue color for yv12 and i420 image formats in "automute" screen
voroshil
parents:
24017
diff
changeset
|
74 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
|
75 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
|
76 memset(buffer+5*len/6, 240,len/6);//U |
23422 | 77 break; |
78 case IMGFMT_I420: | |
24104
b0a47d3bf2f3
Fix blue color for yv12 and i420 image formats in "automute" screen
voroshil
parents:
24017
diff
changeset
|
79 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
|
80 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
|
81 memset(buffer+5*len/6, 110,len/6);//V |
23422 | 82 break; |
83 case IMGFMT_UYVY: | |
84 for(i=0;i<len;i+=4){ | |
85 buffer[i]=0xFF; | |
86 buffer[i+1]=0; | |
87 buffer[i+2]=0; | |
88 buffer[i+3]=0; | |
89 } | |
90 break; | |
91 case IMGFMT_YUY2: | |
92 for(i=0;i<len;i+=4){ | |
93 buffer[i]=0; | |
94 buffer[i+1]=0xFF; | |
95 buffer[i+2]=0; | |
96 buffer[i+3]=0; | |
97 } | |
98 break; | |
23423 | 99 case IMGFMT_MJPEG: |
100 /* | |
101 This is compressed format. I don't know yet how to fill such frame with blue color. | |
102 Keeping frame unchanged. | |
103 */ | |
104 break; | |
23422 | 105 default: |
106 memset(buffer,0xC0,len); | |
107 } | |
108 } | |
26012 | 109 |
26029 | 110 #endif /* MPLAYER_TVI_DEF_H */ |