From e6d6277466860e4dd779f566cead24a360a87d43 Mon Sep 17 00:00:00 2001 From: kos Date: Thu, 31 Oct 2013 15:14:39 +0900 Subject: [PATCH] fixed bug that audio in some of files does not played. --- src/main.cpp | 45 ++++++++++++++++++++++++++++++++++++--------- 1 file changed, 36 insertions(+), 9 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index 2baaf4d..967b64b 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -148,6 +148,23 @@ void eParser::FileName(char* aRequest, char* aHttp, std::string& aOutData) } //------------------------------------------------------------------------------- +namespace eCacheID { + enum { + cVPID = 0, + cAPID, + cTPID, + cPCRPID, + cAC3PID, + cVTYPE, + cACHANNEL, + cAC3DELAY, + cPCMDELAY, + cSUBTITLE, + cacheMax + }; +}; +//------------------------------------------------------------------------------- + /* f:40,c:00007b,c:01008f,c:03007b */ bool eParser::MetaData(std::string aMediaFileName) { @@ -179,26 +196,38 @@ bool eParser::MetaData(std::string aMediaFileName) return false; } + int setting_done = false; for (int ii = 0; ii < tokens.size(); ++ii) { std::string token = tokens[ii]; + if(token.at(0) != 'c') continue; + + int cache_id = atoi(token.substr(2,2).c_str()); #ifdef DEBUG_LOG - LOG("token : %d [%s]", ii, token.c_str()); + LOG("token : %d [%s], chcke_id : [%d]", ii, token.c_str(), cache_id); #endif - switch(ii) { - case(1): - gVideoPid = strtol(token.substr(4,8).c_str(), NULL, 16); + switch(cache_id) { + case(eCacheID::cVPID): + gVideoPid = strtol(token.substr(4,4).c_str(), NULL, 16); #ifdef DEBUG_LOG LOG("video pid : %d", gVideoPid); #endif + setting_done = (gVideoPid && gAudioPid) ? true : false; break; - case(2): - gAudioPid = strtol(token.substr(4,8).c_str(), NULL, 16); + case(eCacheID::cAC3PID): + gAudioPid = strtol(token.substr(4,4).c_str(), NULL, 16); #ifdef DEBUG_LOG - LOG("audio pid : %d", gAudioPid); #endif break; + case(eCacheID::cAPID): + gAudioPid = strtol(token.substr(4,4).c_str(), NULL, 16); +#ifdef DEBUG_LOG + LOG("audio pid : %d", gAudioPid); +#endif + setting_done = (gVideoPid && gAudioPid) ? true : false; + break; } + if(setting_done) break; } break; } @@ -207,5 +236,3 @@ bool eParser::MetaData(std::string aMediaFileName) return true; } //------------------------------------------------------------------------------- - - -- 2.7.4