Mercurial > mplayer.hg
annotate libvo/vo_md5sum.c @ 33273:8c4a81b0bd5f
Update Doxyfile from doxygen 1.3.7 to 1.5.6.
The latter is the version available in Debian oldstable and should thus be a
suitable baseline that can be expected to be available on all systems.
The update makes new Doxygen features available in the configuration file
and avoids several deprecation warnings when using newer doxygen versions.
author | diego |
---|---|
date | Wed, 04 May 2011 14:27:35 +0000 |
parents | 6d0b010a2bb7 |
children | ddb45e9443ec |
rev | line source |
---|---|
13395
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
1 /* ------------------------------------------------------------------------- */ |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
2 |
26739
2a34d9fa52ab
Use standard license headers with standard formatting.
diego
parents:
26069
diff
changeset
|
3 /* |
2a34d9fa52ab
Use standard license headers with standard formatting.
diego
parents:
26069
diff
changeset
|
4 * md5sum video output driver |
13395
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
5 * |
28307
2391228b7ff0
cosmetics: Remove pointless period after copyright statement non-sentences.
diego
parents:
26739
diff
changeset
|
6 * Copyright (C) 2004, 2005, 2006 Ivo van Poorten |
13395
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
7 * |
26739
2a34d9fa52ab
Use standard license headers with standard formatting.
diego
parents:
26069
diff
changeset
|
8 * This file is part of MPlayer. |
13395
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
9 * |
26739
2a34d9fa52ab
Use standard license headers with standard formatting.
diego
parents:
26069
diff
changeset
|
10 * MPlayer is free software; you can redistribute it and/or modify |
2a34d9fa52ab
Use standard license headers with standard formatting.
diego
parents:
26069
diff
changeset
|
11 * it under the terms of the GNU General Public License as published by |
2a34d9fa52ab
Use standard license headers with standard formatting.
diego
parents:
26069
diff
changeset
|
12 * the Free Software Foundation; either version 2 of the License, or |
2a34d9fa52ab
Use standard license headers with standard formatting.
diego
parents:
26069
diff
changeset
|
13 * (at your option) any later version. |
2a34d9fa52ab
Use standard license headers with standard formatting.
diego
parents:
26069
diff
changeset
|
14 * |
2a34d9fa52ab
Use standard license headers with standard formatting.
diego
parents:
26069
diff
changeset
|
15 * MPlayer is distributed in the hope that it will be useful, |
25175 | 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
18 * GNU General Public License for more details. | |
19 * | |
26739
2a34d9fa52ab
Use standard license headers with standard formatting.
diego
parents:
26069
diff
changeset
|
20 * You should have received a copy of the GNU General Public License along |
2a34d9fa52ab
Use standard license headers with standard formatting.
diego
parents:
26069
diff
changeset
|
21 * with MPlayer; if not, write to the Free Software Foundation, Inc., |
2a34d9fa52ab
Use standard license headers with standard formatting.
diego
parents:
26069
diff
changeset
|
22 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. |
13395
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
23 */ |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
24 |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
25 /* ------------------------------------------------------------------------- */ |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
26 |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
27 /* Global Includes */ |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
28 |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
29 #include <stdio.h> |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
30 #include <stdlib.h> |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
31 #include <string.h> |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
32 #include <errno.h> |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
33 |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
34 /* ------------------------------------------------------------------------- */ |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
35 |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
36 /* Local Includes */ |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
37 |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
38 #include "config.h" |
14508
3673ad04ebfb
Replaced suboption parser by call to suboption helper.
ivo
parents:
13395
diff
changeset
|
39 #include "subopt-helper.h" |
13395
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
40 #include "mp_msg.h" |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
41 #include "video_out.h" |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
42 #include "video_out_internal.h" |
30516 | 43 #include "mp_core.h" /* for exit_player() */ |
13395
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
44 #include "help_mp.h" |
18882
21f45afa0f87
use libavutil's md5 implementation instead of local imported copy
ivo
parents:
16171
diff
changeset
|
45 #include "libavutil/md5.h" |
13395
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
46 |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
47 /* ------------------------------------------------------------------------- */ |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
48 |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
49 /* Info */ |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
50 |
25216 | 51 static const vo_info_t info= |
13395
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
52 { |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
53 "md5sum of each frame", |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
54 "md5sum", |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
55 "Ivo van Poorten (ivop@euronet.nl)", |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
56 "" |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
57 }; |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
58 |
25220
c9e9ac2008c2
Mark the vo_functions_t definitions as const where possible.
reimar
parents:
25216
diff
changeset
|
59 const LIBVO_EXTERN (md5sum) |
13395
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
60 |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
61 /* ------------------------------------------------------------------------- */ |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
62 |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
63 /* Global Variables */ |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
64 |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
65 char *md5sum_outfile = NULL; |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
66 |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
67 FILE *md5sum_fd; |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
68 int framenum = 0; |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
69 |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
70 /* ------------------------------------------------------------------------- */ |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
71 |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
72 /** \brief An error occured while writing to a file. |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
73 * |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
74 * The program failed to write data to a file. |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
75 * It displays a message and exits the player. |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
76 * |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
77 * \return nothing It does not return. |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
78 */ |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
79 |
18950 | 80 static void md5sum_write_error(void) { |
13395
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
81 mp_msg(MSGT_VO, MSGL_ERR, MSGTR_ErrorWritingFile, info.short_name); |
30516 | 82 exit_player(EXIT_ERROR); |
13395
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
83 } |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
84 |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
85 /* ------------------------------------------------------------------------- */ |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
86 |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
87 /** \brief Pre-initialisation. |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
88 * |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
89 * This function is called before initialising the video output driver. It |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
90 * parses all suboptions and sets variables accordingly. If an error occurs |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
91 * (like an option being out of range, not having any value or an unknown |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
92 * option is stumbled upon) the player will exit. It also sets default |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
93 * values if necessary. |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
94 * |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
95 * \param arg A string containing all the suboptions passed to the video |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
96 * output driver. |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
97 * |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
98 * \return 0 All went well. |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
99 */ |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
100 |
16171
fd51fd1ff231
Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents:
15212
diff
changeset
|
101 static int preinit(const char *arg) |
13395
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
102 { |
28828
56eee6ffba9b
Make data related to suboption parsing const in libvo
reimar
parents:
28307
diff
changeset
|
103 const opt_t subopts[] = { |
28922
9dd905e52639
Remove obsolete extra elements from opt_t struct initialization.
diego
parents:
28828
diff
changeset
|
104 {"outfile", OPT_ARG_MSTRZ, &md5sum_outfile, NULL}, |
9dd905e52639
Remove obsolete extra elements from opt_t struct initialization.
diego
parents:
28828
diff
changeset
|
105 {NULL, 0, NULL, NULL} |
14508
3673ad04ebfb
Replaced suboption parser by call to suboption helper.
ivo
parents:
13395
diff
changeset
|
106 }; |
3673ad04ebfb
Replaced suboption parser by call to suboption helper.
ivo
parents:
13395
diff
changeset
|
107 |
31287
168e89b341b1
Reduce verbosity about suboption parsing in vo drivers.
diego
parents:
31151
diff
changeset
|
108 mp_msg(MSGT_VO, MSGL_V, "%s: %s\n", info.short_name, |
168e89b341b1
Reduce verbosity about suboption parsing in vo drivers.
diego
parents:
31151
diff
changeset
|
109 "Parsing suboptions."); |
14508
3673ad04ebfb
Replaced suboption parser by call to suboption helper.
ivo
parents:
13395
diff
changeset
|
110 |
14538
00c3c4111017
New suboption type: malloc'ed, zero terminated string
reimar
parents:
14508
diff
changeset
|
111 md5sum_outfile = strdup("md5sums"); |
14508
3673ad04ebfb
Replaced suboption parser by call to suboption helper.
ivo
parents:
13395
diff
changeset
|
112 if (subopt_parse(arg, subopts) != 0) { |
3673ad04ebfb
Replaced suboption parser by call to suboption helper.
ivo
parents:
13395
diff
changeset
|
113 return -1; |
3673ad04ebfb
Replaced suboption parser by call to suboption helper.
ivo
parents:
13395
diff
changeset
|
114 } |
13395
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
115 |
14508
3673ad04ebfb
Replaced suboption parser by call to suboption helper.
ivo
parents:
13395
diff
changeset
|
116 mp_msg(MSGT_VO, MSGL_V, "%s: outfile --> %s\n", info.short_name, |
3673ad04ebfb
Replaced suboption parser by call to suboption helper.
ivo
parents:
13395
diff
changeset
|
117 md5sum_outfile); |
3673ad04ebfb
Replaced suboption parser by call to suboption helper.
ivo
parents:
13395
diff
changeset
|
118 |
31287
168e89b341b1
Reduce verbosity about suboption parsing in vo drivers.
diego
parents:
31151
diff
changeset
|
119 mp_msg(MSGT_VO, MSGL_V, "%s: %s\n", info.short_name, |
168e89b341b1
Reduce verbosity about suboption parsing in vo drivers.
diego
parents:
31151
diff
changeset
|
120 "Suboptions parsed OK."); |
13395
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
121 return 0; |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
122 } |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
123 |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
124 /* ------------------------------------------------------------------------- */ |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
125 |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
126 /** \brief Configure the video output driver. |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
127 * |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
128 * This functions configures the video output driver. It opens the output |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
129 * file to which this driver will write all the MD5 sums. If something |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
130 * goes wrong, the player will exit. |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
131 * |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
132 * \return 0 All went well. |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
133 */ |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
134 |
16171
fd51fd1ff231
Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents:
15212
diff
changeset
|
135 static int config(uint32_t width, uint32_t height, uint32_t d_width, |
15212
05aa13cdf92f
replace VO and VF numeric flags with #defined identifiers
henry
parents:
14850
diff
changeset
|
136 uint32_t d_height, uint32_t flags, char *title, |
13395
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
137 uint32_t format) |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
138 { |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
139 if (vo_config_count > 0 ) { /* Already configured */ |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
140 return 0; |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
141 } |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
142 |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
143 if ( (md5sum_fd = fopen(md5sum_outfile, "w") ) == NULL ) { |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
144 mp_msg(MSGT_VO, MSGL_ERR, "\n%s: %s\n", info.short_name, |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
145 MSGTR_VO_CantCreateFile); |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
146 mp_msg(MSGT_VO, MSGL_ERR, "%s: %s: %s\n", |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
147 info.short_name, MSGTR_VO_GenericError, strerror(errno) ); |
30516 | 148 exit_player(EXIT_ERROR); |
13395
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
149 } |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
150 |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
151 return 0; |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
152 } |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
153 |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
154 /* ------------------------------------------------------------------------- */ |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
155 |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
156 /** \brief Write MD5 sum to output file. |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
157 * |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
158 * This function writes an ASCII representation of a 16-byte hexadecimal |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
159 * MD5 sum to our output file. The file descriptor is a global variable. |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
160 * |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
161 * \param md5sum Sixteen bytes that represent an MD5 sum. |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
162 * |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
163 * \return None The player will exit if a write error occurs. |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
164 */ |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
165 |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
166 static void md5sum_output_sum(unsigned char *md5sum) { |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
167 int i; |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
168 |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
169 for(i=0; i<16; i++) { |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
170 if ( fprintf(md5sum_fd, "%02x", md5sum[i]) < 0 ) md5sum_write_error(); |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
171 } |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
172 if ( fprintf(md5sum_fd, " frame%08d\n", framenum) < 0 ) |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
173 md5sum_write_error(); |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
174 |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
175 framenum++; |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
176 } |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
177 |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
178 /* ------------------------------------------------------------------------- */ |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
179 |
16171
fd51fd1ff231
Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents:
15212
diff
changeset
|
180 static int draw_frame(uint8_t *src[]) |
13395
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
181 { |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
182 mp_msg(MSGT_VO, MSGL_V, "%s: draw_frame() is called!\n", info.short_name); |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
183 return -1; |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
184 } |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
185 |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
186 /* ------------------------------------------------------------------------- */ |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
187 |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
188 static uint32_t draw_image(mp_image_t *mpi) |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
189 { |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
190 unsigned char md5sum[16]; |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
191 uint32_t w = mpi->w; |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
192 uint32_t h = mpi->h; |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
193 uint8_t *rgbimage = mpi->planes[0]; |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
194 uint8_t *planeY = mpi->planes[0]; |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
195 uint8_t *planeU = mpi->planes[1]; |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
196 uint8_t *planeV = mpi->planes[2]; |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
197 uint32_t strideY = mpi->stride[0]; |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
198 uint32_t strideU = mpi->stride[1]; |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
199 uint32_t strideV = mpi->stride[2]; |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
200 |
18882
21f45afa0f87
use libavutil's md5 implementation instead of local imported copy
ivo
parents:
16171
diff
changeset
|
201 uint8_t md5_context_memory[av_md5_size]; |
21f45afa0f87
use libavutil's md5 implementation instead of local imported copy
ivo
parents:
16171
diff
changeset
|
202 struct AVMD5 *md5_context = (struct AVMD5*) md5_context_memory; |
14850 | 203 unsigned int i; |
13395
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
204 |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
205 if (mpi->flags & MP_IMGFLAG_PLANAR) { /* Planar */ |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
206 if (mpi->flags & MP_IMGFLAG_YUV) { /* Planar YUV */ |
18882
21f45afa0f87
use libavutil's md5 implementation instead of local imported copy
ivo
parents:
16171
diff
changeset
|
207 av_md5_init(md5_context); |
13395
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
208 for (i=0; i<h; i++) { |
18882
21f45afa0f87
use libavutil's md5 implementation instead of local imported copy
ivo
parents:
16171
diff
changeset
|
209 av_md5_update(md5_context, planeY + i * strideY, w); |
13395
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
210 } |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
211 w = w / 2; |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
212 h = h / 2; |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
213 for (i=0; i<h; i++) { |
18882
21f45afa0f87
use libavutil's md5 implementation instead of local imported copy
ivo
parents:
16171
diff
changeset
|
214 av_md5_update(md5_context, planeU + i * strideU, w); |
31151
944efc839c41
Change -vo md5sum to not interleave U and V lines when calculating
reimar
parents:
30633
diff
changeset
|
215 } |
944efc839c41
Change -vo md5sum to not interleave U and V lines when calculating
reimar
parents:
30633
diff
changeset
|
216 for (i=0; i<h; i++) { |
18882
21f45afa0f87
use libavutil's md5 implementation instead of local imported copy
ivo
parents:
16171
diff
changeset
|
217 av_md5_update(md5_context, planeV + i * strideV, w); |
13395
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
218 } |
18882
21f45afa0f87
use libavutil's md5 implementation instead of local imported copy
ivo
parents:
16171
diff
changeset
|
219 av_md5_final(md5_context, md5sum); |
13395
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
220 md5sum_output_sum(md5sum); |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
221 return VO_TRUE; |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
222 } else { /* Planar RGB */ |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
223 return VO_FALSE; |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
224 } |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
225 } else { /* Packed */ |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
226 if (mpi->flags & MP_IMGFLAG_YUV) { /* Packed YUV */ |
29263
0f1b5b68af32
whitespace cosmetics: Remove all trailing whitespace.
diego
parents:
28922
diff
changeset
|
227 |
13395
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
228 return VO_FALSE; |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
229 } else { /* Packed RGB */ |
18882
21f45afa0f87
use libavutil's md5 implementation instead of local imported copy
ivo
parents:
16171
diff
changeset
|
230 av_md5_sum(md5sum, rgbimage, mpi->w * (mpi->bpp >> 3) * mpi->h); |
13395
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
231 md5sum_output_sum(md5sum); |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
232 return VO_TRUE; |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
233 } |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
234 } |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
235 |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
236 return VO_FALSE; |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
237 } |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
238 |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
239 /* ------------------------------------------------------------------------- */ |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
240 |
16171
fd51fd1ff231
Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents:
15212
diff
changeset
|
241 static int draw_slice(uint8_t *src[], int stride[], int w, int h, |
13395
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
242 int x, int y) |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
243 { |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
244 return 0; |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
245 } |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
246 |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
247 /* ------------------------------------------------------------------------- */ |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
248 |
16171
fd51fd1ff231
Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents:
15212
diff
changeset
|
249 static int query_format(uint32_t format) |
13395
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
250 { |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
251 switch (format) { |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
252 case IMGFMT_RGB24: |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
253 case IMGFMT_YV12: |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
254 return VFCAP_CSP_SUPPORTED|VFCAP_CSP_SUPPORTED_BY_HW; |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
255 default: |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
256 return 0; |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
257 } |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
258 } |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
259 |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
260 /* ------------------------------------------------------------------------- */ |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
261 |
16171
fd51fd1ff231
Fix the return types of all (six) libvo API functions. Used to be uint32_t, but
ivo
parents:
15212
diff
changeset
|
262 static int control(uint32_t request, void *data, ...) |
13395
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
263 { |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
264 switch (request) { |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
265 case VOCTRL_QUERY_FORMAT: |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
266 return query_format(*((uint32_t*)data)); |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
267 case VOCTRL_DRAW_IMAGE: |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
268 return draw_image(data); |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
269 } |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
270 return VO_NOTIMPL; |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
271 } |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
272 |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
273 /* ------------------------------------------------------------------------- */ |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
274 |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
275 static void uninit(void) |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
276 { |
32537
8fa2f43cb760
Remove most of the NULL pointer check before free all over the code
cboesch
parents:
31287
diff
changeset
|
277 free(md5sum_outfile); |
8fa2f43cb760
Remove most of the NULL pointer check before free all over the code
cboesch
parents:
31287
diff
changeset
|
278 md5sum_outfile = NULL; |
13395
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
279 if (md5sum_fd) fclose(md5sum_fd); |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
280 } |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
281 |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
282 /* ------------------------------------------------------------------------- */ |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
283 |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
284 static void check_events(void) |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
285 { |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
286 } |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
287 |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
288 /* ------------------------------------------------------------------------- */ |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
289 |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
290 static void draw_osd(void) |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
291 { |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
292 } |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
293 |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
294 /* ------------------------------------------------------------------------- */ |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
295 |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
296 static void flip_page (void) |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
297 { |
07708ec98d87
New MD5 sum video output driver. For every frame, it calculates the MD5 sum
ivo
parents:
diff
changeset
|
298 } |