annotate libvo/vo_jpeg.c @ 13199:53cd01eabc3e

URL with lavc option descriptions, pointed out by Attila.
author diego
date Mon, 30 Aug 2004 11:05:19 +0000
parents b872a27aea9e
children 43fe55f36522
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5648
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
1 /*
12857
db49cdedb88d embarassing typo
diego
parents: 9989
diff changeset
2 * vo_jpeg.c, JPEG Renderer for MPlayer
5648
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
3 *
5649
764db6a6a851 upsz, 10l :)
pontscho
parents: 5648
diff changeset
4 * Copyright 2002 by Pontscho (pontscho@makacs.poliod.hu)
9989
98791b90215a Spring cleanup: supporting only RGB24 as input (native jpeg lib supports only that, maybe we could later add nativ YCbCr (YUV) support, but not swscale ones)
alex
parents: 9019
diff changeset
5 * 25/04/2003: Spring cleanup -- alex
13158
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
6 * 04/08/2004: Added multiple subdirectory support -- ivop@euronet.nl
5648
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
7 *
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
8 */
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
9
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
10 #include <stdio.h>
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
11 #include <stdlib.h>
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
12 #include <string.h>
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
13 #include <errno.h>
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
14
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
15 #include <jpeglib.h>
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
16
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
17 #include "config.h"
13158
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
18 #include "mp_msg.h"
5648
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
19 #include "video_out.h"
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
20 #include "video_out_internal.h"
13158
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
21 #include "mplayer.h" /* for exit_player() */
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
22 #include "help_mp.h"
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
23
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
24 #include <sys/stat.h>
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
25 #include <sys/types.h>
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
26 #include <unistd.h>
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
27
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
28 /* Used for temporary buffers to store file- and pathnames */
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
29 #define BUFLENGTH 512
5648
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
30
8148
5b39e79af5fe removed get_info, using the same sheme as in libmpcodecs instead
alex
parents: 7487
diff changeset
31 static vo_info_t info=
5648
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
32 {
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
33 "JPEG file",
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
34 "jpeg",
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
35 "Zoltan Ponekker (pontscho@makacs.poliod.hu)",
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
36 ""
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
37 };
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
38
8148
5b39e79af5fe removed get_info, using the same sheme as in libmpcodecs instead
alex
parents: 7487
diff changeset
39 LIBVO_EXTERN (jpeg)
5b39e79af5fe removed get_info, using the same sheme as in libmpcodecs instead
alex
parents: 7487
diff changeset
40
5648
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
41 static int image_width;
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
42 static int image_height;
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
43
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
44 int jpeg_baseline = 1;
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
45 int jpeg_progressive_mode = 0;
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
46 int jpeg_optimize = 100;
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
47 int jpeg_smooth = 0;
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
48 int jpeg_quality = 75;
5659
b17666766389 fix ".". thanksz pl.
pontscho
parents: 5649
diff changeset
49 char * jpeg_outdir = ".";
13158
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
50 char * jpeg_subdirs = NULL;
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
51 int jpeg_maxfiles=1000;
5648
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
52
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
53 static int framenum=0;
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
54
7124
eca7dbad0166 finally removed query_vaa, bes_da and vo_tune_info - the obsoleted libvo api
alex
parents: 6751
diff changeset
55 static uint32_t config(uint32_t width, uint32_t height, uint32_t d_width, uint32_t d_height, uint32_t fullscreen, char *title, uint32_t format)
5648
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
56 {
13158
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
57 char buf[BUFLENGTH];
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
58 struct stat stat_p;
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
59
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
60 /* Create outdir. If it already exists, test if it's a writable directory */
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
61
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
62 snprintf (buf, BUFLENGTH, "%s", jpeg_outdir);
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
63
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
64 if (mkdir (buf, 0755)<0) {
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
65 switch (errno) { /* use switch in case other errors need to be caught and handled in the future */
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
66 case EEXIST:
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
67 if ( stat(buf, &stat_p) < 0 ) {
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
68 mp_msg(MSGT_VO, MSGL_ERR, "%s: %s: %s\n", info.short_name, MSGTR_VO_JPEG_GenericError, strerror(errno) );
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
69 mp_msg(MSGT_VO, MSGL_ERR, "%s: %s %s\n", info.short_name, MSGTR_VO_JPEG_UnableToAccess,buf);
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
70 exit_player(MSGTR_Exit_error);
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
71 }
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
72 if ( !S_ISDIR(stat_p.st_mode) ) {
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
73 mp_msg(MSGT_VO, MSGL_ERR, "%s: %s %s\n", info.short_name, buf, MSGTR_VO_JPEG_ExistsButNoDirectory);
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
74 exit_player(MSGTR_Exit_error);
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
75 }
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
76 if ( !(stat_p.st_mode & S_IWUSR) ) {
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
77 mp_msg(MSGT_VO, MSGL_ERR, "%s: %s\n", info.short_name, MSGTR_VO_JPEG_DirExistsButNotWritable);
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
78 exit_player(MSGTR_Exit_error);
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
79 }
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
80
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
81 mp_msg(MSGT_VO, MSGL_INFO, "%s: %s\n", info.short_name, MSGTR_VO_JPEG_DirExistsAndIsWritable);
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
82 break;
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
83
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
84 default:
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
85 mp_msg(MSGT_VO, MSGL_ERR, "%s: %s: %s\n", info.short_name, MSGTR_VO_JPEG_GenericError, strerror(errno) );
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
86 mp_msg(MSGT_VO, MSGL_ERR, "%s: %s\n", info.short_name, MSGTR_VO_JPEG_CantCreateDirectory);
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
87 exit_player(MSGTR_Exit_error);
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
88 } /* end switch */
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
89 } else {
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
90 mp_msg(MSGT_VO, MSGL_INFO, "%s: %s\n", info.short_name, MSGTR_VO_JPEG_DirectoryCreateSuccess);
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
91 } /* end if */
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
92
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
93 image_height=height;
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
94 image_width=width;
5648
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
95
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
96 return 0;
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
97 }
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
98
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
99 static uint32_t jpeg_write( uint8_t * name,uint8_t * buffer )
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
100 {
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
101 FILE * o;
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
102 struct jpeg_compress_struct cinfo;
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
103 struct jpeg_error_mgr jerr;
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
104 JSAMPROW row_pointer[1];
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
105 int row_stride;
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
106
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
107 if ( !buffer ) return 1;
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
108 if ( (o=fopen( name,"wb" )) == NULL ) return 1;
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
109
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
110 cinfo.err=jpeg_std_error(&jerr);
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
111 jpeg_create_compress(&cinfo);
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
112 jpeg_stdio_dest( &cinfo,o );
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
113
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
114 cinfo.image_width=image_width;
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
115 cinfo.image_height=image_height;
9989
98791b90215a Spring cleanup: supporting only RGB24 as input (native jpeg lib supports only that, maybe we could later add nativ YCbCr (YUV) support, but not swscale ones)
alex
parents: 9019
diff changeset
116 cinfo.input_components=3;
5648
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
117 cinfo.in_color_space=JCS_RGB;
8267
1ac2523775ad patch from tonglijing <tong@intec.iscas.ac.cn>
pontscho
parents: 8148
diff changeset
118
1ac2523775ad patch from tonglijing <tong@intec.iscas.ac.cn>
pontscho
parents: 8148
diff changeset
119 jpeg_set_defaults( &cinfo );
1ac2523775ad patch from tonglijing <tong@intec.iscas.ac.cn>
pontscho
parents: 8148
diff changeset
120 jpeg_set_quality( &cinfo,jpeg_quality,jpeg_baseline );
5648
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
121 cinfo.optimize_coding=jpeg_optimize;
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
122 cinfo.smoothing_factor=jpeg_smooth;
8267
1ac2523775ad patch from tonglijing <tong@intec.iscas.ac.cn>
pontscho
parents: 8148
diff changeset
123
5648
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
124 if ( jpeg_progressive_mode ) jpeg_simple_progression( &cinfo );
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
125 jpeg_start_compress( &cinfo,TRUE );
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
126
9989
98791b90215a Spring cleanup: supporting only RGB24 as input (native jpeg lib supports only that, maybe we could later add nativ YCbCr (YUV) support, but not swscale ones)
alex
parents: 9019
diff changeset
127 row_stride = image_width * 3;
5648
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
128 while ( cinfo.next_scanline < cinfo.image_height )
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
129 {
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
130 row_pointer[0]=&buffer[ cinfo.next_scanline * row_stride ];
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
131 (void)jpeg_write_scanlines( &cinfo,row_pointer,1 );
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
132 }
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
133
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
134 jpeg_finish_compress( &cinfo );
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
135 fclose( o );
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
136 jpeg_destroy_compress( &cinfo );
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
137
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
138 return 0;
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
139 }
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
140
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
141 static uint32_t draw_frame(uint8_t * src[])
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
142 {
13158
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
143 static uint32_t framecounter=0, subdircounter=0;
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
144 char buf[BUFLENGTH];
6751
82cfd2a85519 fixing swscaler bug ;)
michael
parents: 5659
diff changeset
145 uint8_t *dst= src[0];
13158
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
146 static char subdirname[BUFLENGTH] = "";
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
147 struct stat stat_p;
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
148
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
149 /* Start writing to new subdirectory after a certain amount of frames */
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
150 if ( framecounter == jpeg_maxfiles ) {
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
151 framecounter = 0;
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
152 }
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
153
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
154 /* If framecounter is zero (or reset to zero), increment subdirectory number
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
155 * and create the subdirectory.
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
156 * If jpeg_subdirs is not set, do nothing and resort to old behaviour. */
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
157 if ( !framecounter && jpeg_subdirs ) {
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
158 snprintf (subdirname, BUFLENGTH, "%s%08d", jpeg_subdirs, ++subdircounter);
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
159 snprintf (buf, BUFLENGTH, "%s/%s", jpeg_outdir, subdirname);
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
160 if (mkdir (buf, 0755)<0) {
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
161 switch (errno) { /* use switch in case other errors need to be caught and handled in the future */
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
162 case EEXIST:
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
163 if ( stat(buf, &stat_p) < 0 ) {
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
164 mp_msg(MSGT_VO, MSGL_ERR, "%s: %s: %s\n", info.short_name, MSGTR_VO_JPEG_GenericError, strerror(errno) );
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
165 mp_msg(MSGT_VO, MSGL_ERR, "%s: %s %s\n", info.short_name, MSGTR_VO_JPEG_UnableToAccess, buf);
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
166 exit_player(MSGTR_Exit_error);
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
167 }
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
168 if ( !S_ISDIR(stat_p.st_mode) ) {
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
169 mp_msg(MSGT_VO, MSGL_ERR, "\n%s: %s %s\n", info.short_name, buf, MSGTR_VO_JPEG_ExistsButNoDirectory);
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
170 exit_player(MSGTR_Exit_error);
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
171 }
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
172 if ( !(stat_p.st_mode & S_IWUSR) ) {
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
173 mp_msg(MSGT_VO, MSGL_ERR, "\n%s: %s - %s\n", info.short_name, buf, MSGTR_VO_JPEG_DirExistsButNotWritable);
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
174 exit_player(MSGTR_Exit_error);
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
175 }
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
176
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
177 mp_msg(MSGT_VO, MSGL_INFO, "\n%s: %s - %s\n", info.short_name, buf, MSGTR_VO_JPEG_DirExistsAndIsWritable);
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
178 break;
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
179
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
180 default:
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
181 mp_msg(MSGT_VO, MSGL_ERR, "%s: %s: %s\n", info.short_name, MSGTR_VO_JPEG_GenericError, strerror(errno) );
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
182 mp_msg(MSGT_VO, MSGL_ERR, "\n%s: %s - %s.\n", info.short_name, buf, MSGTR_VO_JPEG_CantCreateDirectory);
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
183 exit_player(MSGTR_Exit_error);
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
184 break;
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
185 }
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
186 } /* switch */
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
187 } /* if !framecounter && jpeg_subdirs */
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
188
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
189
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
190 framenum++;
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
191
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
192 /* snprintf the full pathname of the outputfile */
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
193 snprintf (buf, BUFLENGTH, "%s/%s/%08d.jpg", jpeg_outdir, subdirname, framenum);
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
194
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
195 framecounter++;
5648
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
196
9989
98791b90215a Spring cleanup: supporting only RGB24 as input (native jpeg lib supports only that, maybe we could later add nativ YCbCr (YUV) support, but not swscale ones)
alex
parents: 9019
diff changeset
197 return jpeg_write( buf,src[0] );
5648
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
198 }
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
199
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
200 static void draw_osd(void)
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
201 {
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
202 }
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
203
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
204 static void flip_page (void)
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
205 {
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
206 }
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
207
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
208 static uint32_t draw_slice( uint8_t *src[],int stride[],int w,int h,int x,int y )
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
209 {
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
210 return 0;
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
211 }
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
212
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
213 static uint32_t query_format(uint32_t format)
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
214 {
9989
98791b90215a Spring cleanup: supporting only RGB24 as input (native jpeg lib supports only that, maybe we could later add nativ YCbCr (YUV) support, but not swscale ones)
alex
parents: 9019
diff changeset
215 if (format == IMGFMT_RGB24)
98791b90215a Spring cleanup: supporting only RGB24 as input (native jpeg lib supports only that, maybe we could later add nativ YCbCr (YUV) support, but not swscale ones)
alex
parents: 9019
diff changeset
216 return VFCAP_CSP_SUPPORTED|VFCAP_CSP_SUPPORTED_BY_HW;
98791b90215a Spring cleanup: supporting only RGB24 as input (native jpeg lib supports only that, maybe we could later add nativ YCbCr (YUV) support, but not swscale ones)
alex
parents: 9019
diff changeset
217
98791b90215a Spring cleanup: supporting only RGB24 as input (native jpeg lib supports only that, maybe we could later add nativ YCbCr (YUV) support, but not swscale ones)
alex
parents: 9019
diff changeset
218 return 0;
5648
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
219 }
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
220
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
221 static void uninit(void)
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
222 {
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
223 }
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
224
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
225 static void check_events(void)
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
226 {
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
227 }
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
228
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
229 static uint32_t preinit(const char *arg)
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
230 {
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
231 return 0;
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
232 }
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
233
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
234 static uint32_t control(uint32_t request, void *data, ...)
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
235 {
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
236 switch (request)
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
237 {
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
238 case VOCTRL_QUERY_FORMAT:
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
239 return query_format(*((uint32_t*)data));
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
240 }
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
241 return VO_NOTIMPL;
c3ca8f05b3a9 add jpeg support for libvo
pontscho
parents:
diff changeset
242 }
13158
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
243
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
244 #undef BUFLENGTH
b872a27aea9e Added output to multiple directories for vo_jpeg.
ivo
parents: 12857
diff changeset
245