Better working TS input, Pro side. Code by Erik Zandvliet.

This commit is contained in:
Thulinma 2015-11-05 16:56:50 +01:00
parent 8bcda5e57b
commit 35b2dd6bee
15 changed files with 627 additions and 78 deletions

View file

@ -730,23 +730,37 @@ namespace MP4 {
return getInt8(18) & 0x07;
}
void setAverageFramerate(short newFramerate);
void HVCC::setAverageFramerate(short newFramerate) {
setInt16(newFramerate, 19);
}
short HVCC::getAverageFramerate(){
return getInt16(19);
}
void setConstantFramerate(char newFramerate);
void HVCC::setConstantFramerate(char newFramerate) {
setInt8((getInt8(21) & 0x3F) | ((newFramerate & 0x03) << 6), 21);
}
char HVCC::getConstantFramerate(){
return (getInt8(21) >> 6) & 0x03;
}
void setNumberOfTemporalLayers(char newNumber);
void HVCC::setNumberOfTemporalLayers(char newNumber) {
setInt8((getInt8(21) & 0xC7) | ((newNumber & 0x07) << 3), 21);
}
char HVCC::getNumberOfTemporalLayers(){
return (getInt8(21) >> 3) & 0x07;
}
void setTemporalIdNested(char newNested);
void HVCC::setTemporalIdNested(char newNested){
setInt8((getInt8(21) & 0xFB) | ((newNested & 0x01) << 2), 21);
}
char HVCC::getTemporalIdNested(){
return (getInt8(21) >> 2) & 0x01;
}
void setLengthSizeMinus1(char newLengthSizeMinus1);
void HVCC::setLengthSizeMinus1(char newLengthSizeMinus1) {
setInt8( (getInt8(21) & 0xFC) | (newLengthSizeMinus1 & 0x03), 21);
}
char HVCC::getLengthSizeMinus1(){
return getInt8(21) & 0x03;
}
@ -776,6 +790,25 @@ namespace MP4 {
return r;
}
void HVCC::setArrays(std::deque<HVCCArrayEntry> & arrays){
setInt8(arrays.size(), 22);
int offset = 23;
for (int i = 0; i < arrays.size(); i++){
HVCCArrayEntry & ref = arrays[i];
setInt8(((ref.arrayCompleteness & 0x01) << 7) | (arrays[i].nalUnitType & 0x3F), offset++);
setInt16(ref.nalUnits.size(), offset);
offset += 2;
for (int j = 0; j < ref.nalUnits.size(); j++){
std::string & nalUnit = ref.nalUnits[j];
setInt16(nalUnit.size(), offset);
offset += 2;
for (std::string::iterator it = nalUnit.begin(); it != nalUnit.end(); it++){
setInt8(*it, offset++);
}
}
}
}
std::string HVCC::toPrettyString(uint32_t indent) {
std::stringstream r;
r << std::string(indent, ' ') << "[hvcC] H.265 Init Data (" << boxedSize() << ")" << std::endl;