Skip to content

Commit

Permalink
Merge pull request #12 from rajath-jain/sei_atc_message
Browse files Browse the repository at this point in the history
ATC(Alternative Transfer Characteristics) SEI message support
  • Loading branch information
virinext committed Jul 23, 2019
2 parents 4a96ccc + 8f59533 commit 6761264
Show file tree
Hide file tree
Showing 5 changed files with 38 additions and 0 deletions.
8 changes: 8 additions & 0 deletions hevcparser/include/Hevc.h
Expand Up @@ -268,6 +268,7 @@ namespace HEVC
KNEE_FUNCTION_INFO = 141,
COLOUR_REMAPPING_INFO = 142,
CONTENT_LIGHT_LEVEL_INFO = 144,
ALTERNATIVE_TRANSFER_CHARACTERISTICS = 147,
};

uint32_t num_payload_type_ff_bytes;
Expand Down Expand Up @@ -626,6 +627,13 @@ namespace HEVC
void toDefault() {};
};

class AlternativeTransferCharacteristics: public SeiPayload
{
public:
uint16_t alternative_transfer_characteristics;

void toDefault() {};
};

class PredWeightTable
{
Expand Down
13 changes: 13 additions & 0 deletions hevcparser/src/HevcParserImpl.cpp
Expand Up @@ -944,6 +944,14 @@ void HevcParserImpl::processSEI(std::shared_ptr<SEI> psei, BitstreamReader &bs,
msg.sei_payload = std::dynamic_pointer_cast<SeiPayload>(pseiPayload);
break;
}
case SeiMessage::ALTERNATIVE_TRANSFER_CHARACTERISTICS:
{
std::shared_ptr<AlternativeTransferCharacteristics> pseiPayload(new AlternativeTransferCharacteristics);
BitstreamReader tmpBs = bs;
processAlternativeTransferCharacteristics(pseiPayload, tmpBs);
msg.sei_payload = std::dynamic_pointer_cast<SeiPayload>(pseiPayload);
break;
}
}

bs.skipBits(payloadSize * 8);
Expand Down Expand Up @@ -1854,6 +1862,11 @@ void HevcParserImpl::processContentLightLevelInfo(std::shared_ptr<ContentLightLe
pSeiPayload -> max_pic_average_light_level = bs.getBits(16);
}

void HevcParserImpl::processAlternativeTransferCharacteristics(std::shared_ptr<AlternativeTransferCharacteristics> pSeiPayload, BitstreamReader &bs)
{
pSeiPayload -> alternative_transfer_characteristics = bs.getBits(8);
}

void HevcParserImpl::processFramePacking(std::shared_ptr<FramePacking> pSeiPayload, BitstreamReader &bs)
{
pSeiPayload -> frame_packing_arrangement_id = bs.getGolombU();
Expand Down
1 change: 1 addition & 0 deletions hevcparser/src/HevcParserImpl.h
Expand Up @@ -63,6 +63,7 @@ namespace HEVC
void processChromaResamplingFilterHint(std::shared_ptr<ChromaResamplingFilterHint> pSeiPayload, BitstreamReader &bs);
void processColourRemappingInfo(std::shared_ptr<ColourRemappingInfo> pSeiPayload, BitstreamReader &bs);
void processContentLightLevelInfo(std::shared_ptr<ContentLightLevelInfo> pSeiPayload, BitstreamReader &bs);
void processAlternativeTransferCharacteristics(std::shared_ptr<AlternativeTransferCharacteristics> pSeiPayload, BitstreamReader &bs);

void onWarning(const std::string &warning, const Info *pInfo, WarningType type);

Expand Down
15 changes: 15 additions & 0 deletions utils/hevc_es_browser_gui/SyntaxViewer.cpp
Expand Up @@ -1132,6 +1132,16 @@ void SyntaxViewer::createSEI(std::shared_ptr<HEVC::SEI> pSEI)
break;
}

case HEVC::SeiMessage::ALTERNATIVE_TRANSFER_CHARACTERISTICS:
{
std::shared_ptr<HEVC::AlternativeTransferCharacteristics> pSeiMessage = std::dynamic_pointer_cast<HEVC::AlternativeTransferCharacteristics>(pSEI -> sei_message[i].sei_payload);

QTreeWidgetItem *pitemSei = new QTreeWidgetItem(QStringList("alternative_transfer_characteristics(" + QString::number(payloadSize) + ")"));
pitem -> addChild(pitemSei);
createAlternativeTransferCharacteristics(pSeiMessage, pitemSei);
break;
}

default:
pitem -> addChild(new QTreeWidgetItem(QStringList("sei_payload(" + QString::number(payloadType) + ", " + QString::number(payloadSize) + ")")));
}
Expand Down Expand Up @@ -2074,6 +2084,11 @@ void SyntaxViewer::createContentLightLevelInfo(std::shared_ptr<HEVC::ContentLigh
pItem -> addChild(new QTreeWidgetItem(QStringList("max_pic_average_light_level = " + QString::number(pSeiPayload->max_pic_average_light_level))));
}

void SyntaxViewer::createAlternativeTransferCharacteristics(std::shared_ptr<HEVC::AlternativeTransferCharacteristics> pSeiPayload, QTreeWidgetItem *pItem)
{
pItem -> addChild(new QTreeWidgetItem(QStringList("alternative_transfer_characteristics = " + QString::number(pSeiPayload->alternative_transfer_characteristics))));
}


void SyntaxViewer::createFramePacking(std::shared_ptr<HEVC::FramePacking> pSei, QTreeWidgetItem *pItem)
{
Expand Down
1 change: 1 addition & 0 deletions utils/hevc_es_browser_gui/SyntaxViewer.h
Expand Up @@ -73,6 +73,7 @@ class SyntaxViewer: public QTreeWidget
void createChromaResamplingFilterHint(std::shared_ptr<HEVC::ChromaResamplingFilterHint> pSeiPayload, QTreeWidgetItem *pItem);
void createColourRemappingInfo(std::shared_ptr<HEVC::ColourRemappingInfo> pSeiPayload, QTreeWidgetItem *pItem);
void createContentLightLevelInfo(std::shared_ptr<HEVC::ContentLightLevelInfo> pSeiPayload, QTreeWidgetItem *pItem);
void createAlternativeTransferCharacteristics(std::shared_ptr<HEVC::AlternativeTransferCharacteristics> pSeiPayload, QTreeWidgetItem *pItem);

std::map<uint32_t, std::shared_ptr<HEVC::VPS> > m_vpsMap;
std::map<uint32_t, std::shared_ptr<HEVC::SPS> > m_spsMap;
Expand Down

0 comments on commit 6761264

Please sign in to comment.