Commit 315c2c3793987752fd0713d17764ca49aa3275c5

Authored by Leonardo Domingues
1 parent e9b85bfd
Exists in devel

Fix the problem to read empty lines in the field text from SRT subtitle

extrator/src/extratorSRT.cpp
... ... @@ -4,11 +4,15 @@ ExtratorSRT::ExtratorSRT(){
4 4 listeners = new list<ListenerSub*>();
5 5 finish = false;
6 6 seek_pos = 0;
  7 +
  8 + // Used to watch a sequence of the subtitles during the extraction
  9 + index_counter = 1;
  10 +
7 11 hasNextSub = true;
8 12 PRINTL(util::_DEBUG, "ExtratorSTR Done!\n");
9 13 }
10 14  
11   -ExtratorSRT::~ExtratorSRT(){
  15 +ExtratorSRT::~ExtratorSRT() {
12 16 listeners->clear();
13 17 delete listeners;
14 18 if (file_io) delete file_io;
... ... @@ -110,14 +114,26 @@ Subtitle* ExtratorSRT::next() {
110 114 string text_sub = "";
111 115  
112 116 try {
113   - /* ID */
114   - int id = 0;
115   - line = bff_reader->readLine();
116   - seek_pos += (int64_t) line.size() + SIZE_CSCAPE;
117   - id = atoi(line.c_str());
118   - sub->setID(id);
  117 + // ID
  118 + int id_sub = -1;
  119 +
  120 + // Case exists some blank lines before index, read until find
  121 + do {
  122 + line = bff_reader->readLine();
  123 + printf("%s\n", line.c_str());
  124 + seek_pos++;
  125 + } while (line.size() < 1);
  126 +
  127 + //seek_pos += (int64_t) line.size() + SIZE_CSCAPE;
  128 + id_sub = atoi(line.c_str());
  129 + if (id_sub != index_counter)
  130 + {
  131 + PRINTL(util::_DEBUG, "[Error] The SRT file is bad formmated: indexes is not continuous.\n");
  132 + exit (1);
  133 + }
  134 + sub->setID(id_sub);
119 135  
120   - /* TimeIn and TimeOut */
  136 + // TimeIn and TimeOut
121 137 int64_t t_in = 0, t_out = 0;
122 138 line = bff_reader->readLine();
123 139 seek_pos += (int64_t) line.size() + SIZE_CSCAPE;
... ... @@ -128,24 +144,32 @@ Subtitle* ExtratorSRT::next() {
128 144 t_out = str_to_time(line.substr(target_pos + strlen(TARGET_TIME)+1, line.size()));
129 145 sub->setTimeOut(t_out);
130 146  
131   - /* Text: read until line be empty */
  147 + // Read until find an empty line
132 148 while ((line = bff_reader->readLine()).size() > 0) {
133 149 text_sub += line;
134 150 text_sub.append(" ");
135 151 }
  152 + printf("size of text: %d\n", text_sub.size());
136 153 seek_pos += (int64_t) text_sub.size() + SIZE_CSCAPE;
137 154  
138 155 } catch (lavidlib::EOFException &ex) {
  156 +
139 157 if(text_sub == "")
140 158 sub->setTimeIn(0); //seta o valor 0 para nao gerar um valor aleatório
141 159  
142 160 sub->setSubtitleText(formatText(text_sub));
143 161 seek_pos += (int64_t) text_sub.size() + SIZE_CSCAPE;
  162 +
144 163 hasNextSub = false;
145 164 delete(bff_reader);
146 165 return sub;
147 166 }
  167 + index_counter++;
  168 +
148 169 sub->setSubtitleText(formatText(text_sub));
  170 +
  171 + printf("%s\n\n", sub->toString().c_str());
  172 +
149 173 delete(bff_reader);
150 174 return sub;
151 175 }
... ...
extrator/src/include/extratorSRT.h
... ... @@ -104,6 +104,7 @@ private:
104 104 Subtitle *subtitle;
105 105 int64_t seek_pos;
106 106 bool hasNextSub;
  107 + int index_counter;
107 108  
108 109 void encodingfiletoUTF8();
109 110 string formatText(string line);
... ...
recognize/src/recognizer.cpp
... ... @@ -2,10 +2,10 @@
2 2  
3 3  
4 4 #include "recognizer.h"
5   -#include <json/json.h>
  5 +#include <jsoncpp/json/json.h>
6 6  
7 7  
8   -static boolean reconhecendo ;
  8 +static boolean reconhecendo;
9 9 static string sentence;
10 10 static float confidence;
11 11 string lenguage = "pt-BR";
... ...