Mercurial > mplayer.hg
annotate TOOLS/subrip.c @ 24744:d81eef9beb1b
DirectShow based tv:// driver for win32
Teletext is also supported (but 625 system parameters are hardcoded).
pthreads is required for teletext.
Code is still experimental.
author | voroshil |
---|---|
date | Sat, 13 Oct 2007 17:14:39 +0000 |
parents | d0991c8e2fee |
children | e82ecde2cbd4 |
rev | line source |
---|---|
18863 | 1 /* -*- compile-command: "gcc -g -Wall -I.. -o subrip subrip.c ../vobsub.o ../spudec.o ../mp_msg.o ../unrarlib.o ../libswscale/swscale.o ../libswscale/rgb2rgb.o ../libswscale/yuv2rgb.o ../libmpcodecs/img_format.o -lm" -*- */ |
6830
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
2 /* |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
3 * Use with CVS JOCR/GOCR. |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
4 * |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
5 * 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
|
6 * |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
7 * 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
|
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 |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
11 /* 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
|
12 #define GOCR_PROGRAM "gocr" |
6830
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
13 |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
14 #include <ctype.h> |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
15 #include <stdio.h> |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
16 #include <stdlib.h> |
23657 | 17 #include <string.h> |
6830
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
18 #include <unistd.h> |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
19 #include <sys/types.h> |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
20 #include <sys/wait.h> |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
21 #include "libvo/video_out.h" |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
22 #include "vobsub.h" |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
23 #include "spudec.h" |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
24 |
23989
214c4a4a26ee
Add a dummy guiMessageBox so it still compiles when MPlayer was configured with
reimar
parents:
23657
diff
changeset
|
25 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
|
26 |
10306
b7464c68bef3
Fixed: sync structs with spudec.c, implement fast_memcpy
kmkaplan
parents:
6830
diff
changeset
|
27 /* 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
|
28 typedef struct packet_t packet_t; |
b7464c68bef3
Fixed: sync structs with spudec.c, implement fast_memcpy
kmkaplan
parents:
6830
diff
changeset
|
29 struct packet_t { |
b7464c68bef3
Fixed: sync structs with spudec.c, implement fast_memcpy
kmkaplan
parents:
6830
diff
changeset
|
30 unsigned char *packet; |
b7464c68bef3
Fixed: sync structs with spudec.c, implement fast_memcpy
kmkaplan
parents:
6830
diff
changeset
|
31 unsigned int palette[4]; |
b7464c68bef3
Fixed: sync structs with spudec.c, implement fast_memcpy
kmkaplan
parents:
6830
diff
changeset
|
32 unsigned int alpha[4]; |
b7464c68bef3
Fixed: sync structs with spudec.c, implement fast_memcpy
kmkaplan
parents:
6830
diff
changeset
|
33 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
|
34 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
|
35 processed (for RLE decoding) for |
b7464c68bef3
Fixed: sync structs with spudec.c, implement fast_memcpy
kmkaplan
parents:
6830
diff
changeset
|
36 even and odd lines */ |
b7464c68bef3
Fixed: sync structs with spudec.c, implement fast_memcpy
kmkaplan
parents:
6830
diff
changeset
|
37 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
|
38 unsigned int start_col, end_col; |
b7464c68bef3
Fixed: sync structs with spudec.c, implement fast_memcpy
kmkaplan
parents:
6830
diff
changeset
|
39 unsigned int start_row, end_row; |
b7464c68bef3
Fixed: sync structs with spudec.c, implement fast_memcpy
kmkaplan
parents:
6830
diff
changeset
|
40 unsigned int width, height, stride; |
b7464c68bef3
Fixed: sync structs with spudec.c, implement fast_memcpy
kmkaplan
parents:
6830
diff
changeset
|
41 unsigned int start_pts, end_pts; |
b7464c68bef3
Fixed: sync structs with spudec.c, implement fast_memcpy
kmkaplan
parents:
6830
diff
changeset
|
42 packet_t *next; |
b7464c68bef3
Fixed: sync structs with spudec.c, implement fast_memcpy
kmkaplan
parents:
6830
diff
changeset
|
43 }; |
6830
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
44 typedef struct { |
10306
b7464c68bef3
Fixed: sync structs with spudec.c, implement fast_memcpy
kmkaplan
parents:
6830
diff
changeset
|
45 packet_t *queue_head; |
b7464c68bef3
Fixed: sync structs with spudec.c, implement fast_memcpy
kmkaplan
parents:
6830
diff
changeset
|
46 packet_t *queue_tail; |
6830
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
47 unsigned int global_palette[16]; |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
48 unsigned int orig_frame_width, orig_frame_height; |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
49 unsigned char* packet; |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
50 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
|
51 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
|
52 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
|
53 unsigned int packet_pts; /* PTS for this packet */ |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
54 unsigned int palette[4]; |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
55 unsigned int alpha[4]; |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
56 unsigned int cuspal[4]; |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
57 unsigned int custom; |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
58 unsigned int now_pts; |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
59 unsigned int start_pts, end_pts; |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
60 unsigned int start_col, end_col; |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
61 unsigned int start_row, end_row; |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
62 unsigned int width, height, stride; |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
63 size_t image_size; /* Size of the image buffer */ |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
64 unsigned char *image; /* Grayscale value */ |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
65 unsigned char *aimage; /* Alpha value */ |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
66 unsigned int scaled_frame_width, scaled_frame_height; |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
67 unsigned int scaled_start_col, scaled_start_row; |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
68 unsigned int scaled_width, scaled_height, scaled_stride; |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
69 size_t scaled_image_size; |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
70 unsigned char *scaled_image; |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
71 unsigned char *scaled_aimage; |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
72 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
|
73 int font_start_level; /* Darkest value used for the computed font */ |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
74 vo_functions_t *hw_spu; |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
75 int spu_changed; |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
76 } spudec_handle_t; |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
77 |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
78 int use_gui; |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
79 int gtkMessageBox; |
16297 | 80 int identify=0; |
6830
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
81 int vobsub_id=0; |
10306
b7464c68bef3
Fixed: sync structs with spudec.c, implement fast_memcpy
kmkaplan
parents:
6830
diff
changeset
|
82 int sub_pos=0; |
6830
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
83 |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
84 static spudec_handle_t *spudec; |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
85 static FILE *fsub = NULL; |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
86 static unsigned int sub_idx = 0; |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
87 |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
88 static void |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
89 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
|
90 { |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
91 FILE *file; |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
92 int temp, h, m, s, ms; |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
93 int c, bol; |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
94 file = fopen(fname, "r"); |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
95 if (file == NULL) { |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
96 perror("fopen failed"); |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
97 return; |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
98 } |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
99 temp = start; |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
100 temp /= 90; |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
101 h = temp / 3600000; |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
102 temp %= 3600000; |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
103 m = temp / 60000; |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
104 temp %= 60000; |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
105 s = temp / 1000; |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
106 temp %= 1000; |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
107 ms = temp; |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
108 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
|
109 temp = end; |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
110 temp /= 90; |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
111 h = temp / 3600000; |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
112 temp %= 3600000; |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
113 m = temp / 60000; |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
114 temp %= 60000; |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
115 s = temp / 1000; |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
116 temp %= 1000; |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
117 ms = temp; |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
118 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
|
119 bol = 1; |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
120 while ((c = getc(file)) != EOF) { |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
121 if (bol) { |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
122 if (!isspace(c)) { |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
123 putc(c, fsub); |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
124 bol=0; |
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 } |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
127 else if (!bol) { |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
128 putc(c, fsub); |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
129 bol = c == '\n'; |
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 } |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
132 putc('\n', fsub); |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
133 fflush(fsub); |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
134 fclose(file); |
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 |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
137 static void |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
138 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
|
139 { |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
140 int x, y; |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
141 fprintf(f, |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
142 "P5\n" |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
143 "%d %d\n" |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
144 "255\n", |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
145 w, h); |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
146 for (y = 0; y < h; ++y) { |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
147 for (x = 0; x < w; ++x) { |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
148 int res; |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
149 if (srca[x]) |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
150 res = src[x] * (256 - srca[x]); |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
151 else |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
152 res = 0; |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
153 res = (65535 - res) >> 8; |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
154 putc(res&0xff, f); |
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 } |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
157 src += stride; |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
158 srca += stride; |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
159 } |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
160 putc('\n', f); |
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 |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
163 static void |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
164 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
|
165 { |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
166 FILE *f; |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
167 char buf[128]; |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
168 char cmd[512]; |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
169 int cmdres; |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
170 const char *const tmpfname = tmpnam(NULL); |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
171 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
|
172 f = fopen(buf, "w"); |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
173 output_pgm(f, w, h, src, srca, stride); |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
174 fclose(f); |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
175 /* 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
|
176 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
|
177 cmdres = system(cmd); |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
178 if (cmdres < 0) { |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
179 perror("system failed"); |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
180 exit(EXIT_FAILURE); |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
181 } |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
182 else if (cmdres) { |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
183 fprintf(stderr, GOCR_PROGRAM" returned %d\n", cmdres); |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
184 exit(cmdres); |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
185 } |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
186 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
|
187 unlink(buf); |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
188 unlink(tmpfname); |
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 |
10306
b7464c68bef3
Fixed: sync structs with spudec.c, implement fast_memcpy
kmkaplan
parents:
6830
diff
changeset
|
191 void |
b7464c68bef3
Fixed: sync structs with spudec.c, implement fast_memcpy
kmkaplan
parents:
6830
diff
changeset
|
192 fast_memcpy(void *a, void *b, int s) |
b7464c68bef3
Fixed: sync structs with spudec.c, implement fast_memcpy
kmkaplan
parents:
6830
diff
changeset
|
193 { //FIXME |
b7464c68bef3
Fixed: sync structs with spudec.c, implement fast_memcpy
kmkaplan
parents:
6830
diff
changeset
|
194 memcpy(a, b, s); |
b7464c68bef3
Fixed: sync structs with spudec.c, implement fast_memcpy
kmkaplan
parents:
6830
diff
changeset
|
195 } |
b7464c68bef3
Fixed: sync structs with spudec.c, implement fast_memcpy
kmkaplan
parents:
6830
diff
changeset
|
196 |
6830
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
197 int |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
198 main(int argc, char **argv) |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
199 { |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
200 const char *vobsubname, *subripname; |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
201 void *vobsub; |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
202 void *packet; |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
203 int packet_len; |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
204 unsigned int pts100; |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
205 |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
206 if (argc < 2 || 4 < argc) { |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
207 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
|
208 exit(EXIT_FAILURE); |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
209 } |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
210 vobsubname = argv[1]; |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
211 subripname = NULL; |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
212 fsub = stdout; |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
213 if (argc >= 3) |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
214 vobsub_id = atoi(argv[2]); |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
215 if (argc >= 4) { |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
216 subripname = argv[3]; |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
217 fsub = fopen(subripname, "w"); |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
218 } |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
219 |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
220 vobsub = vobsub_open(vobsubname, NULL, 0, &spudec); |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
221 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
|
222 spudec_assemble(spudec, packet, packet_len, pts100); |
10306
b7464c68bef3
Fixed: sync structs with spudec.c, implement fast_memcpy
kmkaplan
parents:
6830
diff
changeset
|
223 if (spudec->queue_head) { |
b7464c68bef3
Fixed: sync structs with spudec.c, implement fast_memcpy
kmkaplan
parents:
6830
diff
changeset
|
224 spudec_heartbeat(spudec, spudec->queue_head->start_pts); |
6830
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
225 if (spudec_changed(spudec)) |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
226 spudec_draw(spudec, draw_alpha); |
10306
b7464c68bef3
Fixed: sync structs with spudec.c, implement fast_memcpy
kmkaplan
parents:
6830
diff
changeset
|
227 } |
6830
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
228 } |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
229 |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
230 if (vobsub) |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
231 vobsub_close(vobsub); |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
232 exit(EXIT_SUCCESS); |
032137fe69a5
Transform Vobsub subtitles into Subrip text subtitles using GOCR/JOCR.
kmkaplan
parents:
diff
changeset
|
233 } |