Commit be3b26fed993dc9a21c1959a1c80d275b6a084b8
1 parent
c11fbf5f
Exists in
master
and in
1 other branch
Refatoração do componente ExtratorSRT
Showing
10 changed files
with
158 additions
and
283 deletions
Show diff stats
Makefile
@@ -24,10 +24,8 @@ ouvinteTradutor.o | @@ -24,10 +24,8 @@ ouvinteTradutor.o | ||
24 | 24 | ||
25 | extratorSRTObjs = \ | 25 | extratorSRTObjs = \ |
26 | extratorSRT.o \ | 26 | extratorSRT.o \ |
27 | -reader_exception.o \ | ||
28 | extratorSRT_exception.o \ | 27 | extratorSRT_exception.o \ |
29 | -reader_srt.o \ | ||
30 | -subtitle.o | 28 | +subtitle.o \ |
31 | 29 | ||
32 | extratorTXTObjs = \ | 30 | extratorTXTObjs = \ |
33 | extratorTXT.o \ | 31 | extratorTXT.o \ |
extratorSRT/src/extratorSRT.cpp
1 | + | ||
2 | + | ||
1 | #include "extratorSRT.h" | 3 | #include "extratorSRT.h" |
2 | 4 | ||
3 | using namespace std; | 5 | using namespace std; |
@@ -7,24 +9,31 @@ ExtratorSRT::ExtratorSRT(){ | @@ -7,24 +9,31 @@ ExtratorSRT::ExtratorSRT(){ | ||
7 | pcr_base = 0; | 9 | pcr_base = 0; |
8 | finish = false; | 10 | finish = false; |
9 | hasPCRBase = false; | 11 | hasPCRBase = false; |
12 | + seek_pos = 0; | ||
13 | + hasNextSub = true; | ||
10 | DPRINTF("Done!\n"); | 14 | DPRINTF("Done!\n"); |
11 | } | 15 | } |
12 | 16 | ||
13 | ExtratorSRT::~ExtratorSRT(){ | 17 | ExtratorSRT::~ExtratorSRT(){ |
14 | listeners->clear(); | 18 | listeners->clear(); |
15 | delete listeners; | 19 | delete listeners; |
16 | - //delete reader; | 20 | + if (bff_reader) delete bff_reader; |
21 | + if (file_io) delete file_io; | ||
17 | DDDPRINTF("Extractor STR finalized!\n"); | 22 | DDDPRINTF("Extractor STR finalized!\n"); |
18 | } | 23 | } |
19 | 24 | ||
20 | -void ExtratorSRT::initialize(){ | 25 | +void ExtratorSRT::initialize(){ |
26 | + | ||
27 | + file = new lavidlib::File(filepath); | ||
28 | + | ||
21 | try{ | 29 | try{ |
22 | - reader = new ReaderSRT(filepath, FileIO::MODE_READ); | ||
23 | - }catch(ReaderException ex){ | 30 | + file_io = new lavidlib::FileIO(file->getPath(), FileIO::MODE_READ); |
31 | + }catch(Exception ex){ | ||
24 | finish = true; | 32 | finish = true; |
25 | - Util::Logger::Instance()->writeLog((char*) ex.getMessage().c_str()); | ||
26 | - throw ExtratorSrtException("Falha ao abrir o arquivo de legenda! Verifique se o mesmo existe."); | 33 | + Util::Logger::Instance()->writeLog((char*) "[ERRO: extratorSRT.cpp] Arquivo de texto não encontrado."); |
34 | + throw ExtratorSrtException("Falha ao abrir o arquivo de texto! Verifique se o mesmo existe.\n"); | ||
27 | } | 35 | } |
36 | + | ||
28 | this->Start(); | 37 | this->Start(); |
29 | } | 38 | } |
30 | 39 | ||
@@ -57,15 +66,19 @@ bool ExtratorSRT::isFinished(){ | @@ -57,15 +66,19 @@ bool ExtratorSRT::isFinished(){ | ||
57 | return finish; | 66 | return finish; |
58 | } | 67 | } |
59 | 68 | ||
69 | +bool ExtratorSRT::hasNextSubtitle() { | ||
70 | + return hasNextSub; | ||
71 | +} | ||
72 | + | ||
60 | void ExtratorSRT::Run(){ | 73 | void ExtratorSRT::Run(){ |
61 | printf("\n"); | 74 | printf("\n"); |
62 | - DDPRINTF("[AGUARDE] Extraindo SRT...\n") | 75 | + DDPRINTF("[AGUARDE] Extraindo SRT...\n"); |
63 | 76 | ||
64 | int sub_index = 0; | 77 | int sub_index = 0; |
65 | string sub_text = ""; | 78 | string sub_text = ""; |
66 | 79 | ||
67 | - while(reader->hasNextSubtitle()){ | ||
68 | - subtitle = reader->next(); | 80 | + while(hasNextSubtitle()){ |
81 | + subtitle = next(); | ||
69 | sub_text = subtitle->getSubtitleText(); | 82 | sub_text = subtitle->getSubtitleText(); |
70 | notifyListeners((unsigned char*)sub_text.c_str(), calcula_pts((double) subtitle->getTimeIn())); | 83 | notifyListeners((unsigned char*)sub_text.c_str(), calcula_pts((double) subtitle->getTimeIn())); |
71 | cout << " . "; | 84 | cout << " . "; |
@@ -77,6 +90,88 @@ void ExtratorSRT::Run(){ | @@ -77,6 +90,88 @@ void ExtratorSRT::Run(){ | ||
77 | notifyEndExtraction(sub_index); | 90 | notifyEndExtraction(sub_index); |
78 | } | 91 | } |
79 | 92 | ||
93 | +Subtitle* ExtratorSRT::next() { | ||
94 | + | ||
95 | + if (seek_pos >= file_io->getSize()) | ||
96 | + throw ExtratorSrtException("[ERRO: reader_srt.cpp] Esse arquivo já foi lido."); | ||
97 | + | ||
98 | + file_io->seek(seek_pos); | ||
99 | + try{ | ||
100 | + bff_reader = new BufferedReader(file_io); | ||
101 | + }catch(Exception &ex){ | ||
102 | + throw ExtratorSrtException("[ERRO: reader_srt.cpp] O BufferedReader não foi inicializado."); | ||
103 | + } | ||
104 | + | ||
105 | + Subtitle* sub = new Subtitle(); | ||
106 | + std::string line = ""; | ||
107 | + std::string text_sub = ""; | ||
108 | + | ||
109 | + try { | ||
110 | + /* ID */ | ||
111 | + int id = 0; | ||
112 | + line = bff_reader->readLine(); | ||
113 | + seek_pos += (int64_t) line.size() + SIZE_CSCAPE; | ||
114 | + id = atoi(line.c_str()); | ||
115 | + sub->setID(id); | ||
116 | + | ||
117 | + /* TimeIn and TimeOut */ | ||
118 | + int64_t t_in = 0, t_out = 0; | ||
119 | + line = bff_reader->readLine(); | ||
120 | + seek_pos += (int64_t) line.size() + SIZE_CSCAPE; | ||
121 | + | ||
122 | + int target_pos = line.find(TARGET_TIME); | ||
123 | + t_in = str_to_time(line.substr(0, target_pos)); | ||
124 | + sub->setTimeIn(t_in); | ||
125 | + t_out = str_to_time(line.substr(target_pos + strlen(TARGET_TIME)+1, line.size())); | ||
126 | + sub->setTimeOut(t_out); | ||
127 | + | ||
128 | + /* Text: read until line be empty */ | ||
129 | + while ((line = bff_reader->readLine()).size() > 0) { | ||
130 | + text_sub += line; | ||
131 | + text_sub.append(" "); | ||
132 | + } | ||
133 | + seek_pos += (int64_t) text_sub.size() + SIZE_CSCAPE; | ||
134 | + | ||
135 | + } catch (lavidlib::EOFException &ex) { | ||
136 | + sub->setSubtitleText(text_sub); | ||
137 | + sub->setStatusOfReady(true); | ||
138 | + //delete(bff_reader); | ||
139 | + seek_pos += (int64_t) text_sub.size() + SIZE_CSCAPE; | ||
140 | + hasNextSub = false; | ||
141 | + return sub; | ||
142 | + } | ||
143 | + sub->setSubtitleText(text_sub); | ||
144 | + sub->setStatusOfReady(true); | ||
145 | + delete(bff_reader); | ||
146 | + return sub; | ||
147 | + | ||
148 | + } | ||
149 | + | ||
150 | + | ||
151 | +int64_t ExtratorSRT::str_to_time(std::string str_time) { | ||
152 | + | ||
153 | + int64_t ttime = 0; | ||
154 | + char* tokens = new char[4]; // hh, mm, ss, ms | ||
155 | + strcpy(tokens, (char*)str_time.c_str()); | ||
156 | + | ||
157 | + int index = 0; | ||
158 | + int values [4]; // hh, mm, ss, ms | ||
159 | + char * str = strtok(tokens, ":,"); | ||
160 | + while (str != NULL) { | ||
161 | + values[index] = atoi(str); | ||
162 | + str = strtok(NULL, ":,"); | ||
163 | + index++; | ||
164 | + } | ||
165 | + delete(tokens); | ||
166 | + | ||
167 | + /* calculate time */ | ||
168 | + ttime = /*hour to sec*/((((values[0] * 60) * 60) + | ||
169 | + /*min to sec*/(values[1] * 60) +/*sec*/values[2])*1000) + values[3]; | ||
170 | + | ||
171 | + return ttime; | ||
172 | + | ||
173 | + } | ||
174 | + | ||
80 | 175 | ||
81 | void ExtratorSRT::notifyPCRBase(uint64_t pcrbase){ | 176 | void ExtratorSRT::notifyPCRBase(uint64_t pcrbase){ |
82 | //DDPRINTF("PCRBase = %ld\n", pcrbase); | 177 | //DDPRINTF("PCRBase = %ld\n", pcrbase); |
@@ -86,4 +181,4 @@ void ExtratorSRT::notifyPCRBase(uint64_t pcrbase){ | @@ -86,4 +181,4 @@ void ExtratorSRT::notifyPCRBase(uint64_t pcrbase){ | ||
86 | 181 | ||
87 | uint64_t ExtratorSRT::calcula_pts(double msec) { | 182 | uint64_t ExtratorSRT::calcula_pts(double msec) { |
88 | return (uint64_t)(pcr_base + ((msec/1000) * 90000.0)); | 183 | return (uint64_t)(pcr_base + ((msec/1000) * 90000.0)); |
89 | -} | 184 | -} |
185 | +} | ||
90 | \ No newline at end of file | 186 | \ No newline at end of file |
extratorSRT/src/include/extratorSRT.h
@@ -8,17 +8,29 @@ | @@ -8,17 +8,29 @@ | ||
8 | #ifndef EXTRATORSRT_H | 8 | #ifndef EXTRATORSRT_H |
9 | #define EXTRATORSRT_H | 9 | #define EXTRATORSRT_H |
10 | 10 | ||
11 | -#include "listenerSRT.h" | ||
12 | -#include "reader_srt.h" | ||
13 | -#include "subtitle.h" | ||
14 | -#include "listenerMonitorPCRBase.h" | 11 | +//#define MAX_LINE 1024 |
12 | +#define SIZE_CSCAPE 1 | ||
13 | +#define TARGET_TIME "-->" | ||
14 | + | ||
15 | +#include <string.h> | ||
16 | +#include <stdlib.h> | ||
17 | +#include <fstream> | ||
18 | +#include <stdio.h> | ||
19 | +#include <list> | ||
20 | +#include <lavidlib/io/File.h> | ||
21 | +#include <lavidlib/io/FileIO.h> | ||
22 | +#include <lavidlib/io/BufferedReader.h> | ||
23 | +#include <lavidlib/io/IOException.h> | ||
24 | +#include <lavidlib/io/EOFException.h> | ||
15 | #include "jthread.h" | 25 | #include "jthread.h" |
16 | #include "dprintf.h" | 26 | #include "dprintf.h" |
27 | +#include "reader.h" | ||
17 | #include "logger.h" | 28 | #include "logger.h" |
18 | -#include <lavidlib/io/FileIO.h> | 29 | +#include "subtitle.h" |
30 | +#include "listenerSRT.h" | ||
31 | +#include "listenerMonitorPCRBase.h" | ||
19 | #include "extratorSRT_exception.h" | 32 | #include "extratorSRT_exception.h" |
20 | 33 | ||
21 | - | ||
22 | using namespace jthread; | 34 | using namespace jthread; |
23 | using namespace std; | 35 | using namespace std; |
24 | using namespace sndesc; | 36 | using namespace sndesc; |
@@ -34,10 +46,14 @@ public: | @@ -34,10 +46,14 @@ public: | ||
34 | void notifyListeners(unsigned char* subtitle, int64_t pts); | 46 | void notifyListeners(unsigned char* subtitle, int64_t pts); |
35 | void notifyEndExtraction(int sub_size); | 47 | void notifyEndExtraction(int sub_size); |
36 | 48 | ||
49 | + bool hasNextSubtitle(); | ||
37 | void setFilePath(char* path); | 50 | void setFilePath(char* path); |
38 | bool isFinished(); | 51 | bool isFinished(); |
39 | void initialize(); | 52 | void initialize(); |
40 | void Run(); | 53 | void Run(); |
54 | + | ||
55 | + /* @Override: reader.h */ | ||
56 | + Subtitle* next(); | ||
41 | 57 | ||
42 | void notifyPCRBase(uint64_t pcrbase); | 58 | void notifyPCRBase(uint64_t pcrbase); |
43 | 59 | ||
@@ -46,12 +62,18 @@ private: | @@ -46,12 +62,18 @@ private: | ||
46 | list<ListenerSRT*> *listeners; | 62 | list<ListenerSRT*> *listeners; |
47 | char* filepath; | 63 | char* filepath; |
48 | bool finish; | 64 | bool finish; |
65 | + File* file; | ||
66 | + FileIO *file_io; | ||
67 | + BufferedReader *bff_reader; | ||
68 | + Subtitle * subtitle; | ||
69 | + | ||
49 | uint64_t pcr_base; | 70 | uint64_t pcr_base; |
71 | + int64_t seek_pos; | ||
50 | bool hasPCRBase; | 72 | bool hasPCRBase; |
51 | - ReaderSRT * reader; | ||
52 | - Subtitle * subtitle; | ||
53 | - | 73 | + bool hasNextSub; |
74 | + | ||
54 | uint64_t calcula_pts(double msec); | 75 | uint64_t calcula_pts(double msec); |
76 | + int64_t str_to_time(std::string str_time); | ||
55 | 77 | ||
56 | }; | 78 | }; |
57 | 79 |
extratorSRT/src/include/extratorSRT_exception.h
@@ -9,19 +9,18 @@ | @@ -9,19 +9,18 @@ | ||
9 | * * | 9 | * * |
10 | **************************************************************************/ | 10 | **************************************************************************/ |
11 | 11 | ||
12 | - #ifndef EXTRATORSRTEXCEPTION_H | ||
13 | - #define EXTRATORSRTEXCEPTION_H | 12 | +#ifndef EXTRATORSRTEXCEPTION_H |
13 | +#define EXTRATORSRTEXCEPTION_H | ||
14 | 14 | ||
15 | - #include <lavidlib/base/RuntimeException.h> | 15 | +#include <lavidlib/base/RuntimeException.h> |
16 | 16 | ||
17 | - using namespace lavidlib; | 17 | +using namespace lavidlib; |
18 | 18 | ||
19 | - | ||
20 | - class ExtratorSrtException : public RuntimeException { | ||
21 | - public: | ||
22 | - ExtratorSrtException(const std::string message); | ||
23 | - ExtratorSrtException(const char* message); | 19 | + class ExtratorSrtException : public RuntimeException { |
20 | + public: | ||
21 | + ExtratorSrtException(const std::string message); | ||
22 | + ExtratorSrtException(const char* message); | ||
24 | }; | 23 | }; |
25 | 24 | ||
26 | 25 | ||
27 | - #endif /* EXTRATORSRTEXCEPTION_H */ | ||
28 | \ No newline at end of file | 26 | \ No newline at end of file |
27 | +#endif /* EXTRATORSRTEXCEPTION_H */ | ||
29 | \ No newline at end of file | 28 | \ No newline at end of file |
extratorSRT/src/include/reader_exception.h
@@ -1,28 +0,0 @@ | @@ -1,28 +0,0 @@ | ||
1 | -/*************************************************************************** | ||
2 | - * Universidade Federal da Paraíba * | ||
3 | - * Copyright (C) 2013 by Laboratório de Aplicações de Vídeo Digital * | ||
4 | - * * | ||
5 | - * Centro de Informática - UFPB - Campus I * | ||
6 | - * João Pessoa - PB - Brasil * | ||
7 | - * * | ||
8 | - * Author: Leonardo de Araújo Domingues (leonardo.araujo@lavid.ufpb.br) * | ||
9 | - * Date: Tue Jan 14 11:09:41 BRT 2014 * | ||
10 | - * * | ||
11 | - **************************************************************************/ | ||
12 | - | ||
13 | - #ifndef READEREXCEPTION_H | ||
14 | - #define READEREXCEPTION_H | ||
15 | - | ||
16 | - #include <lavidlib/base/RuntimeException.h> | ||
17 | - | ||
18 | - using namespace lavidlib; | ||
19 | - | ||
20 | - namespace sndesc { | ||
21 | - class ReaderException : public RuntimeException { | ||
22 | - public: | ||
23 | - ReaderException(const std::string message); | ||
24 | - ReaderException(const char* message); | ||
25 | - }; | ||
26 | - } | ||
27 | - | ||
28 | - #endif /* READEREXCEPTION_H */ | ||
29 | \ No newline at end of file | 0 | \ No newline at end of file |
extratorSRT/src/include/reader_srt.h
@@ -1,64 +0,0 @@ | @@ -1,64 +0,0 @@ | ||
1 | -/*************************************************************************** | ||
2 | - * Universidade Federal da Paraíba * | ||
3 | - * Copyright (C) 2013 by Laboratório de Aplicações de Vídeo Digital * | ||
4 | - * * | ||
5 | - * Centro de Informática - UFPB - Campus I * | ||
6 | - * João Pessoa - PB - Brasil * | ||
7 | - * * | ||
8 | - * Author: Leonardo de Araújo Domingues (leonardo.araujo@lavid.ufpb.br) * | ||
9 | - * Date: Qui Out 24 18:25:51 BRT 2013 * | ||
10 | - * * | ||
11 | - **************************************************************************/ | ||
12 | - | ||
13 | - #ifndef READERSRT_H | ||
14 | - #define READERSRT_H | ||
15 | - | ||
16 | - #define MAX_LINE 1024 | ||
17 | - #define SIZE_CSCAPE 1 | ||
18 | - #define TARGET_TIME "-->" | ||
19 | - | ||
20 | - #include <lavidlib/io/File.h> | ||
21 | - #include <lavidlib/io/FileIO.h> | ||
22 | - #include <lavidlib/io/BufferedReader.h> | ||
23 | - #include <lavidlib/io/IOException.h> | ||
24 | - #include <lavidlib/io/EOFException.h> | ||
25 | - #include <string> | ||
26 | - #include <string.h> | ||
27 | - #include <stdlib.h> | ||
28 | - #include <fstream> | ||
29 | - #include <stdio.h> | ||
30 | - #include <list> | ||
31 | - #include "reader.h" | ||
32 | - #include "reader_exception.h" | ||
33 | - #include "subtitle.h" | ||
34 | - | ||
35 | - using namespace lavidlib; | ||
36 | - | ||
37 | - namespace sndesc { | ||
38 | - | ||
39 | - class ReaderSRT : public Reader { | ||
40 | - | ||
41 | - public: | ||
42 | - | ||
43 | - ReaderSRT(std::string _filepath, FileIO::open_flags_t _mode); | ||
44 | - ~ReaderSRT(); | ||
45 | - bool hasNextSubtitle(); | ||
46 | - | ||
47 | - /* @Override: reader.h */ | ||
48 | - Subtitle* next(); | ||
49 | - | ||
50 | - private: | ||
51 | - | ||
52 | - File *file; | ||
53 | - FileIO *file_io; | ||
54 | - BufferedReader *bff_reader; | ||
55 | - int64_t seek_pos; | ||
56 | - bool hasNextSub; | ||
57 | - | ||
58 | - int64_t str_to_time(std::string str_time); | ||
59 | - | ||
60 | - }; | ||
61 | - | ||
62 | - } | ||
63 | - | ||
64 | - #endif // READERSRT_H | ||
65 | \ No newline at end of file | 0 | \ No newline at end of file |
extratorSRT/src/reader_exception.cpp
@@ -1,22 +0,0 @@ | @@ -1,22 +0,0 @@ | ||
1 | -/*************************************************************************** | ||
2 | - * Universidade Federal da Paraíba * | ||
3 | - * Copyright (C) 2013 by Laboratório de Aplicações de Vídeo Digital * | ||
4 | - * * | ||
5 | - * Centro de Informática - UFPB - Campus I * | ||
6 | - * João Pessoa - PB - Brasil * | ||
7 | - * * | ||
8 | - * Author: Leonardo de Araújo Domingues (leonardo.araujo@lavid.ufpb.br) * | ||
9 | - * Date: Tue Jan 14 11:15:37 BRT 2014 * | ||
10 | - * * | ||
11 | - **************************************************************************/ | ||
12 | - | ||
13 | - #include "reader_exception.h" | ||
14 | - | ||
15 | - namespace sndesc { | ||
16 | - ReaderException::ReaderException(const std::string message) | ||
17 | - : RuntimeException(message) | ||
18 | - { /* TODO */ } | ||
19 | - ReaderException::ReaderException(const char* message) | ||
20 | - : RuntimeException(message) | ||
21 | - { /* TODO */ } | ||
22 | - } | ||
23 | \ No newline at end of file | 0 | \ No newline at end of file |
extratorSRT/src/reader_srt.cpp
@@ -1,128 +0,0 @@ | @@ -1,128 +0,0 @@ | ||
1 | -/*************************************************************************** | ||
2 | - * Universidade Federal da Paraíba * | ||
3 | - * Copyright (C) 2013 by Laboratório de Aplicações de Vídeo Digital * | ||
4 | - * * | ||
5 | - * Centro de Informática - UFPB - Campus I * | ||
6 | - * João Pessoa - PB - Brasil * | ||
7 | - * * | ||
8 | - * Author: Leonardo de Araújo Domingues (leonardo.araujo@lavid.ufpb.br) * | ||
9 | - * Date: Qui Out 24 22:26:35 BRT 2013 * | ||
10 | - * * | ||
11 | - **************************************************************************/ | ||
12 | - | ||
13 | - #include "reader_srt.h" | ||
14 | - | ||
15 | - namespace sndesc { | ||
16 | - | ||
17 | - | ||
18 | - ReaderSRT::ReaderSRT(std::string _filepath, FileIO::open_flags_t _mode) { | ||
19 | - | ||
20 | - file = new lavidlib::File(_filepath); | ||
21 | - try{ | ||
22 | - file_io = new lavidlib::FileIO(file->getPath(), _mode); | ||
23 | - }catch(lavidlib::IOException){ | ||
24 | - throw ReaderException("[ERRO: reader_srt.cpp] Arquivo de legenda não encontrado."); | ||
25 | - } | ||
26 | - seek_pos = 0; | ||
27 | - hasNextSub = true; | ||
28 | - | ||
29 | - } | ||
30 | - | ||
31 | - | ||
32 | - ReaderSRT::~ReaderSRT() { | ||
33 | - | ||
34 | - if (bff_reader != NULL) delete bff_reader; | ||
35 | - if (file_io != NULL) delete file_io; | ||
36 | - | ||
37 | - } | ||
38 | - | ||
39 | - | ||
40 | - Subtitle* ReaderSRT::next() { | ||
41 | - | ||
42 | - if (seek_pos >= file_io->getSize()) | ||
43 | - throw ReaderException("[ERRO: reader_srt.cpp] Esse arquivo já foi lido."); | ||
44 | - | ||
45 | - file_io->seek(seek_pos); | ||
46 | - try{ | ||
47 | - bff_reader = new BufferedReader(file_io); | ||
48 | - }catch(lavidlib::IOException){ | ||
49 | - throw ReaderException("[ERRO: reader_srt.cpp] O BufferedReader não foi inicializado."); | ||
50 | - } | ||
51 | - | ||
52 | - Subtitle* sub = new Subtitle(); | ||
53 | - std::string line = ""; | ||
54 | - std::string text_sub = ""; | ||
55 | - | ||
56 | - try { | ||
57 | - /* ID */ | ||
58 | - int id = 0; | ||
59 | - line = bff_reader->readLine(); | ||
60 | - seek_pos += (int64_t) line.size() + SIZE_CSCAPE; | ||
61 | - id = atoi(line.c_str()); | ||
62 | - sub->setID(id); | ||
63 | - | ||
64 | - /* TimeIn and TimeOut */ | ||
65 | - int64_t t_in = 0, t_out = 0; | ||
66 | - line = bff_reader->readLine(); | ||
67 | - seek_pos += (int64_t) line.size() + SIZE_CSCAPE; | ||
68 | - | ||
69 | - int target_pos = line.find(TARGET_TIME); | ||
70 | - t_in = str_to_time(line.substr(0, target_pos)); | ||
71 | - sub->setTimeIn(t_in); | ||
72 | - t_out = str_to_time(line.substr(target_pos + strlen(TARGET_TIME)+1, line.size())); | ||
73 | - sub->setTimeOut(t_out); | ||
74 | - | ||
75 | - /* Text: read until line be empty */ | ||
76 | - while ((line = bff_reader->readLine()).size() > 0) { | ||
77 | - text_sub += line; | ||
78 | - text_sub.append(" "); | ||
79 | - } | ||
80 | - seek_pos += (int64_t) text_sub.size() + SIZE_CSCAPE; | ||
81 | - | ||
82 | - } catch (lavidlib::EOFException &ex) { | ||
83 | - sub->setSubtitleText(text_sub); | ||
84 | - sub->setStatusOfReady(true); | ||
85 | - delete(bff_reader); | ||
86 | - seek_pos += (int64_t) text_sub.size() + SIZE_CSCAPE; | ||
87 | - hasNextSub = false; | ||
88 | - return sub; | ||
89 | - } | ||
90 | - | ||
91 | - sub->setSubtitleText(text_sub); | ||
92 | - sub->setStatusOfReady(true); | ||
93 | - delete(bff_reader); | ||
94 | - return sub; | ||
95 | - | ||
96 | - } | ||
97 | - | ||
98 | - | ||
99 | - bool ReaderSRT::hasNextSubtitle() { | ||
100 | - return hasNextSub; | ||
101 | - } | ||
102 | - | ||
103 | - | ||
104 | - int64_t ReaderSRT::str_to_time(std::string str_time) { | ||
105 | - | ||
106 | - int64_t ttime = 0; | ||
107 | - char* tokens = new char[4]; // hh, mm, ss, ms | ||
108 | - strcpy(tokens, (char*)str_time.c_str()); | ||
109 | - | ||
110 | - int index = 0; | ||
111 | - int values [4]; // hh, mm, ss, ms | ||
112 | - char * str = strtok(tokens, ":,"); | ||
113 | - while (str != NULL) { | ||
114 | - values[index] = atoi(str); | ||
115 | - str = strtok(NULL, ":,"); | ||
116 | - index++; | ||
117 | - } | ||
118 | - delete(tokens); | ||
119 | - | ||
120 | - /* calculate time */ | ||
121 | - ttime = /*hour to sec*/((((values[0] * 60) * 60) + | ||
122 | - /*min to sec*/(values[1] * 60) +/*sec*/values[2])*1000) + values[3]; | ||
123 | - | ||
124 | - return ttime; | ||
125 | - | ||
126 | - } | ||
127 | - | ||
128 | - } | ||
129 | \ No newline at end of file | 0 | \ No newline at end of file |
main.cpp
@@ -278,7 +278,7 @@ void serviceOnlySRT(char* path_file, char* transparency, char* id){ | @@ -278,7 +278,7 @@ void serviceOnlySRT(char* path_file, char* transparency, char* id){ | ||
278 | service_srt = new ServiceWindowGenerationFromSRT(path_file, (int) atoi(transparency), id, 5); | 278 | service_srt = new ServiceWindowGenerationFromSRT(path_file, (int) atoi(transparency), id, 5); |
279 | try{ | 279 | try{ |
280 | service_srt->initialize(); | 280 | service_srt->initialize(); |
281 | - }catch(ServiceException ex){ | 281 | + }catch(ServiceException ex){ |
282 | fail(ex.getMessage()); | 282 | fail(ex.getMessage()); |
283 | hasFailed(); | 283 | hasFailed(); |
284 | return; | 284 | return; |
@@ -356,22 +356,25 @@ void hasInvalid(){ | @@ -356,22 +356,25 @@ void hasInvalid(){ | ||
356 | 356 | ||
357 | //Help do programa, explicando todos os parâmetros existentes... | 357 | //Help do programa, explicando todos os parâmetros existentes... |
358 | void help() { | 358 | void help() { |
359 | - cout <<"\n####################################################################################\n" | 359 | + cout <<"\n##################################################################################\n" |
360 | <<"# SERVICE_TYPE: 1 - means Closed Caption - doesn't use INPUT_SRT #\n" | 360 | <<"# SERVICE_TYPE: 1 - means Closed Caption - doesn't use INPUT_SRT #\n" |
361 | <<"# 2 - means With Subtitles (SRT) - requires INPUT_SRT #\n" | 361 | <<"# 2 - means With Subtitles (SRT) - requires INPUT_SRT #\n" |
362 | <<"# 3 - means Recognize - requires INPUT_VIDEO #\n" | 362 | <<"# 3 - means Recognize - requires INPUT_VIDEO #\n" |
363 | <<"# 4 - means Text - requires INPUT_FILE_TEXT #\n" | 363 | <<"# 4 - means Text - requires INPUT_FILE_TEXT #\n" |
364 | <<"# 5 - means Subtitles ONLY (SRT) - requires INPUT_SRT #\n" | 364 | <<"# 5 - means Subtitles ONLY (SRT) - requires INPUT_SRT #\n" |
365 | - <<"#----------------------------------------------------------------------------------#\n\n" | ||
366 | - /*<<"# INPUT_VIDEO: Path of the video file #\n" | 365 | + <<"# 6 - means Audio - requires INPUT_AUDIO #\n" |
366 | + <<"####################################################################################\n\n" | ||
367 | + /*<<"# INPUT_VIDEO: Path of the video file #\n" | ||
367 | <<"#----------------------------------------------------------------------------------#\n" | 368 | <<"#----------------------------------------------------------------------------------#\n" |
368 | <<"# INPUT_SRT: Path of the SRT file (only for SERVICE_TYPE = 2) #\n" | 369 | <<"# INPUT_SRT: Path of the SRT file (only for SERVICE_TYPE = 2) #\n" |
369 | <<"#----------------------------------------------------------------------------------#\n" | 370 | <<"#----------------------------------------------------------------------------------#\n" |
370 | - <<"# INPUT_FILE_TEXT: Path of the text file (doesn't use INPUT_VIDEO and INPUT_SRT) #\n" | 371 | + <<"# INPUT_FILE_TEXT: Path of the text file (doesn't use INPUT_VIDEO and INPUT_SRT) #\n" |
372 | + <<"#----------------------------------------------------------------------------------#\n" | ||
373 | + <<"# INPUT_AUDIO: Path of the audio file" #\n | ||
371 | <<"#----------------------------------------------------------------------------------#\n" | 374 | <<"#----------------------------------------------------------------------------------#\n" |
372 | - <<"# LANGUAGE: 1 - means Portuguese #\n" | ||
373 | - <<"# 2 - means Glosa #\n" | ||
374 | - <<"#----------------------------------------------------------------------------------#\n" | 375 | + <<"# LANGUAGE: 1 - means Portuguese #\n" |
376 | + <<"# 2 - means Glosa #\n" | ||
377 | + <<"#----------------------------------------------------------------------------------#\n" | ||
375 | <<"# POSITION: 1 - means TOP_LEFT #\n" | 378 | <<"# POSITION: 1 - means TOP_LEFT #\n" |
376 | <<"# 2 - means TOP_RIGHT #\n" | 379 | <<"# 2 - means TOP_RIGHT #\n" |
377 | <<"# 3 - means BOTTOM_RIGHT #\n" | 380 | <<"# 3 - means BOTTOM_RIGHT #\n" |
servico/src/serviceWindowGenerationFromSRT.cpp
@@ -4,7 +4,7 @@ using namespace std; | @@ -4,7 +4,7 @@ using namespace std; | ||
4 | 4 | ||
5 | //Construtor Service 2 | 5 | //Construtor Service 2 |
6 | ServiceWindowGenerationFromSRT::ServiceWindowGenerationFromSRT( | 6 | ServiceWindowGenerationFromSRT::ServiceWindowGenerationFromSRT( |
7 | - char* path_video, char* path_srt, int sublanguage, int position, int size, int transparency, char* id, int serviceType) { | 7 | + char* path_video, char* path_srt, int sublanguage, int position, int size, int transparency, char* id, int serviceType) { |
8 | setPathInput(path_video); | 8 | setPathInput(path_video); |
9 | setPathSRT(path_srt); | 9 | setPathSRT(path_srt); |
10 | setPosition(position); | 10 | setPosition(position); |