Mercurial > mplayer.hg
annotate libvo/vo_pgm.c @ 11330:a974c00c779d
Removed temporary .cpp file used during the Matroska test. Updated the libebml and libmatroska requirements to at least v0.6.0 for both. There have been changes in the lacing code, and users WILL come and complain why mplayer, linked against older versions, will have issues playing newer files.
author | mosu |
---|---|
date | Thu, 30 Oct 2003 14:57:06 +0000 |
parents | 5b39e79af5fe |
children |
rev | line source |
---|---|
1 | 1 /* |
2 * video_out_pgm.c, pgm interface | |
3 * | |
4 * | |
5 * Copyright (C) 1996, MPEG Software Simulation Group. All Rights Reserved. | |
6 * | |
7 * Hacked into mpeg2dec by | |
8 * | |
9 * Aaron Holtzman <aholtzma@ess.engr.uvic.ca> | |
10 * | |
11 * 15 & 16 bpp support added by Franck Sicard <Franck.Sicard@solsoft.fr> | |
12 * | |
13 * Xv image suuport by Gerd Knorr <kraxel@goldbach.in-berlin.de> | |
14 */ | |
15 | |
16 #include <stdio.h> | |
17 #include <stdlib.h> | |
18 #include <string.h> | |
4737
32e1f5042f65
I don't like such reports: '-vo dga:vidix or -vo x11:vidix works fine for me'
nick
parents:
4596
diff
changeset
|
19 #include <errno.h> |
1 | 20 |
21 #include "config.h" | |
22 #include "video_out.h" | |
23 #include "video_out_internal.h" | |
24 | |
8148
5b39e79af5fe
removed get_info, using the same sheme as in libmpcodecs instead
alex
parents:
7124
diff
changeset
|
25 static vo_info_t info = |
1 | 26 { |
27 "PGM file", | |
28 "pgm", | |
29 "walken", | |
30 "" | |
31 }; | |
32 | |
8148
5b39e79af5fe
removed get_info, using the same sheme as in libmpcodecs instead
alex
parents:
7124
diff
changeset
|
33 LIBVO_EXTERN (pgm) |
5b39e79af5fe
removed get_info, using the same sheme as in libmpcodecs instead
alex
parents:
7124
diff
changeset
|
34 |
1 | 35 static int image_width; |
36 static int image_height; | |
37 static char header[1024]; | |
491 | 38 static int framenum = 0; |
39 | |
40 static uint8_t *image=NULL; | |
41 | |
42 char vo_pgm_filename[24]; | |
1 | 43 |
44 static uint32_t | |
7124
eca7dbad0166
finally removed query_vaa, bes_da and vo_tune_info - the obsoleted libvo api
alex
parents:
4737
diff
changeset
|
45 config(uint32_t width, uint32_t height, uint32_t d_width, uint32_t d_height, uint32_t fullscreen, char *title, uint32_t format) |
1 | 46 { |
47 image_height = height; | |
48 image_width = width; | |
491 | 49 image=malloc(width*height*3/2); |
1 | 50 |
1094 | 51 snprintf (header, 1024, "P5\n\n%d %d\n255\n", width, height*3/2); |
1 | 52 |
53 return 0; | |
54 } | |
55 | |
1502 | 56 static void draw_osd(void) |
57 { | |
58 } | |
59 | |
1 | 60 static void flip_page (void) |
61 { | |
62 FILE * f; | |
63 | |
1094 | 64 snprintf (vo_pgm_filename, 24, "%08d.pgm", framenum++); |
491 | 65 |
66 f = fopen (vo_pgm_filename, "wb"); if (f == NULL) return; | |
1 | 67 fwrite (header, strlen (header), 1, f); |
491 | 68 fwrite (image, image_width, image_height*3/2, f); |
1 | 69 fclose (f); |
70 | |
491 | 71 return; |
72 } | |
73 | |
74 static uint32_t draw_slice(uint8_t *srcimg[], int stride[], int w,int h,int x,int y) | |
75 { | |
76 int i; | |
77 // copy Y: | |
78 uint8_t *dst=image+image_width*y+x; | |
79 uint8_t *src=srcimg[0]; | |
80 for(i=0;i<h;i++){ | |
81 memcpy(dst,src,w); | |
82 src+=stride[0]; | |
83 dst+=image_width; | |
84 } | |
85 { | |
86 // copy U+V: | |
87 uint8_t *src1=srcimg[1]; | |
88 uint8_t *src2=srcimg[2]; | |
89 uint8_t *dst=image+image_width*image_height+image_width*(y/2)+(x/2); | |
90 for(i=0;i<h/2;i++){ | |
91 memcpy(dst,src1,w/2); | |
92 memcpy(dst+image_width/2,src2,w/2); | |
93 src1+=stride[1]; | |
94 src2+=stride[2]; | |
95 dst+=image_width; | |
96 } | |
97 | |
98 } | |
99 | |
1 | 100 return 0; |
101 } | |
102 | |
491 | 103 |
1 | 104 static uint32_t draw_frame(uint8_t * src[]) |
105 { | |
491 | 106 return 0; |
1 | 107 } |
108 | |
109 static uint32_t | |
110 query_format(uint32_t format) | |
111 { | |
491 | 112 if(format==IMGFMT_YV12) return 1; |
15 | 113 // switch(format){ |
114 // case IMGFMT_YV12: | |
1 | 115 // case IMGFMT_RGB|24: |
116 // case IMGFMT_BGR|24: | |
15 | 117 // return 1; |
118 // } | |
1 | 119 return 0; |
120 } | |
121 | |
122 static void | |
123 uninit(void) | |
124 { | |
491 | 125 if(image){ free(image);image=NULL;} |
1 | 126 } |
127 | |
128 | |
31 | 129 static void check_events(void) |
130 { | |
131 } | |
1 | 132 |
4352 | 133 static uint32_t preinit(const char *arg) |
134 { | |
4737
32e1f5042f65
I don't like such reports: '-vo dga:vidix or -vo x11:vidix works fine for me'
nick
parents:
4596
diff
changeset
|
135 if(arg) |
32e1f5042f65
I don't like such reports: '-vo dga:vidix or -vo x11:vidix works fine for me'
nick
parents:
4596
diff
changeset
|
136 { |
32e1f5042f65
I don't like such reports: '-vo dga:vidix or -vo x11:vidix works fine for me'
nick
parents:
4596
diff
changeset
|
137 printf("vo_pgm: Unknown subdevice: %s\n",arg); |
32e1f5042f65
I don't like such reports: '-vo dga:vidix or -vo x11:vidix works fine for me'
nick
parents:
4596
diff
changeset
|
138 return ENOSYS; |
32e1f5042f65
I don't like such reports: '-vo dga:vidix or -vo x11:vidix works fine for me'
nick
parents:
4596
diff
changeset
|
139 } |
32e1f5042f65
I don't like such reports: '-vo dga:vidix or -vo x11:vidix works fine for me'
nick
parents:
4596
diff
changeset
|
140 return 0; |
4352 | 141 } |
31 | 142 |
4596 | 143 static uint32_t control(uint32_t request, void *data, ...) |
4352 | 144 { |
4592
5fbfd8545c3b
query_ stuff replaced by new control() - patch by David Holm
arpi
parents:
4433
diff
changeset
|
145 switch (request) { |
5fbfd8545c3b
query_ stuff replaced by new control() - patch by David Holm
arpi
parents:
4433
diff
changeset
|
146 case VOCTRL_QUERY_FORMAT: |
5fbfd8545c3b
query_ stuff replaced by new control() - patch by David Holm
arpi
parents:
4433
diff
changeset
|
147 return query_format(*((uint32_t*)data)); |
5fbfd8545c3b
query_ stuff replaced by new control() - patch by David Holm
arpi
parents:
4433
diff
changeset
|
148 } |
5fbfd8545c3b
query_ stuff replaced by new control() - patch by David Holm
arpi
parents:
4433
diff
changeset
|
149 return VO_NOTIMPL; |
4352 | 150 } |