annotate TOOLS/subrip.c @ 27319:09cf111f68b8

Revert to previous dependency checking behavior. Take included header files into account when generating dependency files. This has problems when header files are removed or renamed, but does not silently miscompile files.
author diego
date Sat, 26 Jul 2008 18:36:48 +0000
parents 7a7a294e07e2
children c54d67cf49f9
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
6830
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
1 /*
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
2 * Use with CVS JOCR/GOCR.
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
3 *
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
4 * You will have to change 'vobsub_id' value if you want another subtitle than number 0.
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
5 *
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
6 * HINT: you can view the subtitle that is being decoded with "display subtitle-*.pgm"
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
7 *
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
8 */
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
9
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
10 /* Make sure this accesses the CVS version of JOCR/GOCR */
10306
b7464c68bef3 Fixed: sync structs with spudec.c, implement fast_memcpy
kmkaplan
parents: 6830
diff changeset
11 #define GOCR_PROGRAM "gocr"
6830
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
12
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
13 #include <ctype.h>
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
14 #include <stdio.h>
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
15 #include <stdlib.h>
23657
d7ae37864b03 Fix implicit declaration of function warnings.
diego
parents: 22628
diff changeset
16 #include <string.h>
6830
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
17 #include <unistd.h>
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
18 #include <sys/types.h>
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
19 #include <sys/wait.h>
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
20 #include "libvo/video_out.h"
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
21 #include "vobsub.h"
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
22 #include "spudec.h"
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
23
23989
214c4a4a26ee Add a dummy guiMessageBox so it still compiles when MPlayer was configured with
reimar
parents: 23657
diff changeset
24 void guiMessageBox(int level, char * str) {};
214c4a4a26ee Add a dummy guiMessageBox so it still compiles when MPlayer was configured with
reimar
parents: 23657
diff changeset
25
10306
b7464c68bef3 Fixed: sync structs with spudec.c, implement fast_memcpy
kmkaplan
parents: 6830
diff changeset
26 /* XXX Kludge ahead, this MUST be the same as the definitions found in ../spudec.c */
b7464c68bef3 Fixed: sync structs with spudec.c, implement fast_memcpy
kmkaplan
parents: 6830
diff changeset
27 typedef struct packet_t packet_t;
b7464c68bef3 Fixed: sync structs with spudec.c, implement fast_memcpy
kmkaplan
parents: 6830
diff changeset
28 struct packet_t {
b7464c68bef3 Fixed: sync structs with spudec.c, implement fast_memcpy
kmkaplan
parents: 6830
diff changeset
29 unsigned char *packet;
b7464c68bef3 Fixed: sync structs with spudec.c, implement fast_memcpy
kmkaplan
parents: 6830
diff changeset
30 unsigned int palette[4];
b7464c68bef3 Fixed: sync structs with spudec.c, implement fast_memcpy
kmkaplan
parents: 6830
diff changeset
31 unsigned int alpha[4];
b7464c68bef3 Fixed: sync structs with spudec.c, implement fast_memcpy
kmkaplan
parents: 6830
diff changeset
32 unsigned int control_start; /* index of start of control data */
b7464c68bef3 Fixed: sync structs with spudec.c, implement fast_memcpy
kmkaplan
parents: 6830
diff changeset
33 unsigned int current_nibble[2]; /* next data nibble (4 bits) to be
b7464c68bef3 Fixed: sync structs with spudec.c, implement fast_memcpy
kmkaplan
parents: 6830
diff changeset
34 processed (for RLE decoding) for
b7464c68bef3 Fixed: sync structs with spudec.c, implement fast_memcpy
kmkaplan
parents: 6830
diff changeset
35 even and odd lines */
b7464c68bef3 Fixed: sync structs with spudec.c, implement fast_memcpy
kmkaplan
parents: 6830
diff changeset
36 int deinterlace_oddness; /* 0 or 1, index into current_nibble */
b7464c68bef3 Fixed: sync structs with spudec.c, implement fast_memcpy
kmkaplan
parents: 6830
diff changeset
37 unsigned int start_col, end_col;
b7464c68bef3 Fixed: sync structs with spudec.c, implement fast_memcpy
kmkaplan
parents: 6830
diff changeset
38 unsigned int start_row, end_row;
b7464c68bef3 Fixed: sync structs with spudec.c, implement fast_memcpy
kmkaplan
parents: 6830
diff changeset
39 unsigned int width, height, stride;
b7464c68bef3 Fixed: sync structs with spudec.c, implement fast_memcpy
kmkaplan
parents: 6830
diff changeset
40 unsigned int start_pts, end_pts;
b7464c68bef3 Fixed: sync structs with spudec.c, implement fast_memcpy
kmkaplan
parents: 6830
diff changeset
41 packet_t *next;
b7464c68bef3 Fixed: sync structs with spudec.c, implement fast_memcpy
kmkaplan
parents: 6830
diff changeset
42 };
6830
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
43 typedef struct {
10306
b7464c68bef3 Fixed: sync structs with spudec.c, implement fast_memcpy
kmkaplan
parents: 6830
diff changeset
44 packet_t *queue_head;
b7464c68bef3 Fixed: sync structs with spudec.c, implement fast_memcpy
kmkaplan
parents: 6830
diff changeset
45 packet_t *queue_tail;
6830
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
46 unsigned int global_palette[16];
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
47 unsigned int orig_frame_width, orig_frame_height;
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
48 unsigned char* packet;
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
49 size_t packet_reserve; /* size of the memory pointed to by packet */
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
50 unsigned int packet_offset; /* end of the currently assembled fragment */
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
51 unsigned int packet_size; /* size of the packet once all fragments are assembled */
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
52 unsigned int packet_pts; /* PTS for this packet */
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
53 unsigned int palette[4];
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
54 unsigned int alpha[4];
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
55 unsigned int cuspal[4];
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
56 unsigned int custom;
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
57 unsigned int now_pts;
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
58 unsigned int start_pts, end_pts;
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
59 unsigned int start_col, end_col;
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
60 unsigned int start_row, end_row;
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
61 unsigned int width, height, stride;
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
62 size_t image_size; /* Size of the image buffer */
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
63 unsigned char *image; /* Grayscale value */
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
64 unsigned char *aimage; /* Alpha value */
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
65 unsigned int scaled_frame_width, scaled_frame_height;
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
66 unsigned int scaled_start_col, scaled_start_row;
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
67 unsigned int scaled_width, scaled_height, scaled_stride;
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
68 size_t scaled_image_size;
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
69 unsigned char *scaled_image;
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
70 unsigned char *scaled_aimage;
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
71 int auto_palette; /* 1 if we lack a palette and must use an heuristic. */
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
72 int font_start_level; /* Darkest value used for the computed font */
25219
e82ecde2cbd4 Mark several uses of vo_functions_t as const to stop some of the current
reimar
parents: 24234
diff changeset
73 const vo_functions_t *hw_spu;
6830
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
74 int spu_changed;
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
75 } spudec_handle_t;
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
76
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
77 int use_gui;
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
78 int gtkMessageBox;
16297
c6e8ef454266 compile fix, vobsub.c needs identify variable.
reimar
parents: 10306
diff changeset
79 int identify=0;
6830
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
80 int vobsub_id=0;
10306
b7464c68bef3 Fixed: sync structs with spudec.c, implement fast_memcpy
kmkaplan
parents: 6830
diff changeset
81 int sub_pos=0;
6830
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
82
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
83 static spudec_handle_t *spudec;
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
84 static FILE *fsub = NULL;
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
85 static unsigned int sub_idx = 0;
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
86
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
87 static void
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
88 process_gocr_output(const char *const fname, unsigned int start, unsigned int end)
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
89 {
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
90 FILE *file;
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
91 int temp, h, m, s, ms;
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
92 int c, bol;
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
93 file = fopen(fname, "r");
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
94 if (file == NULL) {
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
95 perror("fopen failed");
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
96 return;
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
97 }
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
98 temp = start;
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
99 temp /= 90;
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
100 h = temp / 3600000;
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
101 temp %= 3600000;
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
102 m = temp / 60000;
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
103 temp %= 60000;
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
104 s = temp / 1000;
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
105 temp %= 1000;
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
106 ms = temp;
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
107 fprintf(fsub, "%d\n%02d:%02d:%02d,%03d --> ", ++sub_idx, h, m, s, ms);
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
108 temp = end;
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
109 temp /= 90;
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
110 h = temp / 3600000;
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
111 temp %= 3600000;
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
112 m = temp / 60000;
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
113 temp %= 60000;
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
114 s = temp / 1000;
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
115 temp %= 1000;
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
116 ms = temp;
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
117 fprintf(fsub, "%02d:%02d:%02d,%03d\n", h, m, s, ms);
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
118 bol = 1;
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
119 while ((c = getc(file)) != EOF) {
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
120 if (bol) {
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
121 if (!isspace(c)) {
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
122 putc(c, fsub);
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
123 bol=0;
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
124 }
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
125 }
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
126 else if (!bol) {
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
127 putc(c, fsub);
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
128 bol = c == '\n';
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
129 }
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
130 }
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
131 putc('\n', fsub);
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
132 fflush(fsub);
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
133 fclose(file);
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
134 }
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
135
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
136 static void
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
137 output_pgm(FILE *f, int w, int h, unsigned char *src, unsigned char *srca, int stride)
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
138 {
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
139 int x, y;
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
140 fprintf(f,
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
141 "P5\n"
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
142 "%d %d\n"
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
143 "255\n",
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
144 w, h);
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
145 for (y = 0; y < h; ++y) {
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
146 for (x = 0; x < w; ++x) {
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
147 int res;
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
148 if (srca[x])
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
149 res = src[x] * (256 - srca[x]);
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
150 else
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
151 res = 0;
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
152 res = (65535 - res) >> 8;
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
153 putc(res&0xff, f);
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
154
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
155 }
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
156 src += stride;
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
157 srca += stride;
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
158 }
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
159 putc('\n', f);
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
160 }
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
161
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
162 static void
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
163 draw_alpha(int x0, int y0, int w, int h, unsigned char *src, unsigned char *srca, int stride)
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
164 {
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
165 FILE *f;
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
166 char buf[128];
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
167 char cmd[512];
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
168 int cmdres;
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
169 const char *const tmpfname = tmpnam(NULL);
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
170 sprintf(buf, "subtitle-%d-%d.pgm", spudec->start_pts / 90, spudec->end_pts / 90);
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
171 f = fopen(buf, "w");
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
172 output_pgm(f, w, h, src, srca, stride);
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
173 fclose(f);
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
174 /* see <URL:http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/subtitleripper/subtitleripper/src/README.gocr?rev=HEAD&content-type=text/vnd.viewcvs-markup> */
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
175 sprintf(cmd, GOCR_PROGRAM" -v 1 -s 7 -d 0 -m 130 -m 256 -m 32 -i %s -o %s", buf, tmpfname);
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
176 cmdres = system(cmd);
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
177 if (cmdres < 0) {
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
178 perror("system failed");
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
179 exit(EXIT_FAILURE);
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
180 }
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
181 else if (cmdres) {
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
182 fprintf(stderr, GOCR_PROGRAM" returned %d\n", cmdres);
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
183 exit(cmdres);
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
184 }
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
185 process_gocr_output(tmpfname, spudec->start_pts, spudec->end_pts);
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
186 unlink(buf);
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
187 unlink(tmpfname);
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
188 }
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
189
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
190 int
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
191 main(int argc, char **argv)
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
192 {
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
193 const char *vobsubname, *subripname;
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
194 void *vobsub;
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
195 void *packet;
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
196 int packet_len;
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
197 unsigned int pts100;
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
198
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
199 if (argc < 2 || 4 < argc) {
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
200 fprintf(stderr, "Usage: %s <vobsub basename> [<subid> [<output filename>] ]\n", argv[0]);
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
201 exit(EXIT_FAILURE);
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
202 }
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
203 vobsubname = argv[1];
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
204 subripname = NULL;
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
205 fsub = stdout;
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
206 if (argc >= 3)
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
207 vobsub_id = atoi(argv[2]);
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
208 if (argc >= 4) {
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
209 subripname = argv[3];
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
210 fsub = fopen(subripname, "w");
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
211 }
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
212
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
213 vobsub = vobsub_open(vobsubname, NULL, 0, &spudec);
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
214 while ((packet_len=vobsub_get_next_packet(vobsub, &packet, &pts100)) >= 0) {
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
215 spudec_assemble(spudec, packet, packet_len, pts100);
10306
b7464c68bef3 Fixed: sync structs with spudec.c, implement fast_memcpy
kmkaplan
parents: 6830
diff changeset
216 if (spudec->queue_head) {
b7464c68bef3 Fixed: sync structs with spudec.c, implement fast_memcpy
kmkaplan
parents: 6830
diff changeset
217 spudec_heartbeat(spudec, spudec->queue_head->start_pts);
6830
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
218 if (spudec_changed(spudec))
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
219 spudec_draw(spudec, draw_alpha);
10306
b7464c68bef3 Fixed: sync structs with spudec.c, implement fast_memcpy
kmkaplan
parents: 6830
diff changeset
220 }
6830
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
221 }
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
222
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
223 if (vobsub)
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
224 vobsub_close(vobsub);
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
225 exit(EXIT_SUCCESS);
032137fe69a5 Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff changeset
226 }