Implemented MP4 "wave" box, added support for QuickTime-style ISOBMF AAC audio tracks ( = mp4a containing wave containing esds)
This commit is contained in:
parent
a2700aad17
commit
afbfd504fe
4 changed files with 25 additions and 3 deletions
|
@ -238,6 +238,7 @@ namespace MP4{
|
|||
case 0x6D646961: return ((MDIA *)this)->toPrettyString(indent); break;
|
||||
case 0x6D696E66: return ((MINF *)this)->toPrettyString(indent); break;
|
||||
case 0x64696E66: return ((DINF *)this)->toPrettyString(indent); break;
|
||||
case 0x77617665: return ((WAVE *)this)->toPrettyString(indent); break;
|
||||
case 0x6D66726F: return ((MFRO *)this)->toPrettyString(indent); break;
|
||||
case 0x68646C72: return ((HDLR *)this)->toPrettyString(indent); break;
|
||||
case 0x766D6864: return ((VMHD *)this)->toPrettyString(indent); break;
|
||||
|
|
|
@ -1318,6 +1318,8 @@ namespace MP4{
|
|||
|
||||
DINF::DINF(){memcpy(data + 4, "dinf", 4);}
|
||||
|
||||
WAVE::WAVE(){memcpy(data + 4, "wave", 4);}
|
||||
|
||||
MFRA::MFRA(){memcpy(data + 4, "mfra", 4);}
|
||||
|
||||
MFRO::MFRO(){memcpy(data + 4, "mfro", 4);}
|
||||
|
|
|
@ -346,6 +346,11 @@ namespace MP4{
|
|||
DINF();
|
||||
};
|
||||
|
||||
class WAVE : public containerBox{
|
||||
public:
|
||||
WAVE();
|
||||
};
|
||||
|
||||
class MFRO : public Box{
|
||||
public:
|
||||
MFRO();
|
||||
|
|
|
@ -373,9 +373,23 @@ namespace Mist{
|
|||
if (sType == "ac-3"){
|
||||
meta.setCodec(tNumber, "AC3");
|
||||
}else{
|
||||
MP4::ESDS esdsBox = (MP4::ESDS &)(aEntryBox.getCodecBox());
|
||||
meta.setCodec(tNumber, esdsBox.getCodec());
|
||||
meta.setInit(tNumber, esdsBox.getInitData());
|
||||
MP4::Box codingBox = aEntryBox.getCodecBox();
|
||||
if (codingBox.getType() == "esds"){
|
||||
MP4::ESDS & esdsBox = (MP4::ESDS &)codingBox;
|
||||
meta.setCodec(tNumber, esdsBox.getCodec());
|
||||
meta.setInit(tNumber, esdsBox.getInitData());
|
||||
}
|
||||
if (codingBox.getType() == "wave"){
|
||||
MP4::WAVE & waveBox = (MP4::WAVE &)codingBox;
|
||||
for (size_t c = 0; c < waveBox.getContentCount(); ++c){
|
||||
MP4::Box content = waveBox.getContent(c);
|
||||
if (content.getType() == "esds"){
|
||||
MP4::ESDS & esdsBox = (MP4::ESDS &)content;
|
||||
meta.setCodec(tNumber, esdsBox.getCodec());
|
||||
meta.setInit(tNumber, esdsBox.getInitData());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
meta.setSize(tNumber, 16); ///\todo this might be nice to calculate from mp4 file;
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue