Mercurial > mplayer.hg
annotate TOOLS/subrip.c @ 27409:e2de11109139
If (has outline) blur(outline) else blur(glyph).
If there is an outline, the glyph itself should not be blurred. Keeps
the border between glyph and outline clear (unblurred), which is
probably how it should be.
Patch by Diogo Franco (diogomfranco gmail com).
author | eugeni |
---|---|
date | Thu, 07 Aug 2008 22:20:58 +0000 |
parents | 7a7a294e07e2 |
children | c54d67cf49f9 |
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 | 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 | 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 } |