MP4 language support in input, Timed Text input support (rudimentary, without styles)
This commit is contained in:
parent
d0abad68b3
commit
f83a5525f4
1 changed files with 19 additions and 3 deletions
|
@ -9,6 +9,7 @@
|
||||||
#include <mist/flv_tag.h>
|
#include <mist/flv_tag.h>
|
||||||
#include <mist/defines.h>
|
#include <mist/defines.h>
|
||||||
#include <mist/h264.h>
|
#include <mist/h264.h>
|
||||||
|
#include <mist/bitfields.h>
|
||||||
|
|
||||||
#include "input_mp4.h"
|
#include "input_mp4.h"
|
||||||
|
|
||||||
|
@ -323,9 +324,10 @@ namespace Mist {
|
||||||
std::string mdiaBoxType = mdiaLoopPeek.getType();
|
std::string mdiaBoxType = mdiaLoopPeek.getType();
|
||||||
if (mdiaBoxType == "mdhd"){
|
if (mdiaBoxType == "mdhd"){
|
||||||
timeScale = ((MP4::MDHD&)mdiaLoopPeek).getTimeScale();
|
timeScale = ((MP4::MDHD&)mdiaLoopPeek).getTimeScale();
|
||||||
|
myMeta.tracks[trackNo].lang = ((MP4::MDHD&)mdiaLoopPeek).getLanguage();
|
||||||
}else if (mdiaBoxType == "hdlr"){//fi mdhd
|
}else if (mdiaBoxType == "hdlr"){//fi mdhd
|
||||||
std::string handlerType = ((MP4::HDLR&)mdiaLoopPeek).getHandlerType();
|
std::string handlerType = ((MP4::HDLR&)mdiaLoopPeek).getHandlerType();
|
||||||
if (handlerType != "vide" && handlerType !="soun"){
|
if (handlerType != "vide" && handlerType !="soun" && handlerType != "sbtl"){
|
||||||
myMeta.tracks.erase(trackNo);
|
myMeta.tracks.erase(trackNo);
|
||||||
//skip meta boxes for now
|
//skip meta boxes for now
|
||||||
break;
|
break;
|
||||||
|
@ -424,6 +426,9 @@ namespace Mist {
|
||||||
}
|
}
|
||||||
myMeta.tracks[trackNo].size = 16;///\todo this might be nice to calculate from mp4 file;
|
myMeta.tracks[trackNo].size = 16;///\todo this might be nice to calculate from mp4 file;
|
||||||
//get Visual sample entry -> esds -> startcodes
|
//get Visual sample entry -> esds -> startcodes
|
||||||
|
}else if (tmpType == "tx3g"){//plain text subtitles
|
||||||
|
myMeta.tracks[trackNo].type = "subtitle";
|
||||||
|
myMeta.tracks[trackNo].codec = "TTXT";
|
||||||
}else{
|
}else{
|
||||||
myMeta.tracks.erase(trackNo);
|
myMeta.tracks.erase(trackNo);
|
||||||
}
|
}
|
||||||
|
@ -595,7 +600,18 @@ namespace Mist {
|
||||||
thisPacket.null();
|
thisPacket.null();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
thisPacket.genericFill(curPart.time, curPart.offset, curPart.trackID, data, curPart.size, 0/*Note: no bpos*/, isKeyframe);
|
|
||||||
|
|
||||||
|
if (myMeta.tracks[curPart.trackID].codec == "TTXT"){
|
||||||
|
unsigned int txtLen = Bit::btohs(data);
|
||||||
|
if (!txtLen){
|
||||||
|
thisPacket.genericFill(curPart.time, curPart.offset, curPart.trackID, " ", 1, 0/*Note: no bpos*/, isKeyframe);
|
||||||
|
}else{
|
||||||
|
thisPacket.genericFill(curPart.time, curPart.offset, curPart.trackID, data+2, txtLen, 0/*Note: no bpos*/, isKeyframe);
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
thisPacket.genericFill(curPart.time, curPart.offset, curPart.trackID, data, curPart.size, 0/*Note: no bpos*/, isKeyframe);
|
||||||
|
}
|
||||||
|
|
||||||
//get the next part for this track
|
//get the next part for this track
|
||||||
curPart.index ++;
|
curPart.index ++;
|
||||||
|
|
Loading…
Add table
Reference in a new issue