Skip to content
Snippets Groups Projects
Commit 0ecf79ca authored by Vadim Seregin's avatar Vadim Seregin
Browse files

Merge branch 'check_stream_write' into 'master'

Add check whether writing to bitstream succeeded

See merge request !738
parents ebf22c36 717c840e
No related branches found
No related tags found
No related merge requests found
...@@ -42,6 +42,15 @@ ...@@ -42,6 +42,15 @@
//! \ingroup EncoderLib //! \ingroup EncoderLib
//! \{ //! \{
void checkWriteError(std::ostream& out)
{
if (out.fail())
{
printf ("\nError writing bitstream file\n");
exit (EXIT_FAILURE);
}
}
#if JVET_R0294_SUBPIC_HASH #if JVET_R0294_SUBPIC_HASH
uint32_t writeAnnexBNalUnit(std::ostream& out, const NALUnitEBSP& nalu, bool useLongStartcode) uint32_t writeAnnexBNalUnit(std::ostream& out, const NALUnitEBSP& nalu, bool useLongStartcode)
{ {
...@@ -52,14 +61,17 @@ uint32_t writeAnnexBNalUnit(std::ostream& out, const NALUnitEBSP& nalu, bool use ...@@ -52,14 +61,17 @@ uint32_t writeAnnexBNalUnit(std::ostream& out, const NALUnitEBSP& nalu, bool use
if (useLongStartcode) if (useLongStartcode)
{ {
out.write(reinterpret_cast<const char*>(startCodePrefix), 4); out.write(reinterpret_cast<const char*>(startCodePrefix), 4);
checkWriteError(out);
size += 4; size += 4;
} }
else else
{ {
out.write(reinterpret_cast<const char*>(startCodePrefix+1), 3); out.write(reinterpret_cast<const char*>(startCodePrefix+1), 3);
checkWriteError(out);
size += 3; size += 3;
} }
out << nalu.m_nalUnitData.str(); out << nalu.m_nalUnitData.str();
checkWriteError(out);
size += uint32_t(nalu.m_nalUnitData.str().size()); size += uint32_t(nalu.m_nalUnitData.str().size());
return size; return size;
...@@ -101,11 +113,13 @@ static std::vector<uint32_t> writeAnnexB(std::ostream& out, const AccessUnit& au ...@@ -101,11 +113,13 @@ static std::vector<uint32_t> writeAnnexB(std::ostream& out, const AccessUnit& au
* 7.4.1.2.3. * 7.4.1.2.3.
*/ */
out.write(reinterpret_cast<const char*>(start_code_prefix), 4); out.write(reinterpret_cast<const char*>(start_code_prefix), 4);
checkWriteError(out);
size += 4; size += 4;
} }
else else
{ {
out.write(reinterpret_cast<const char*>(start_code_prefix+1), 3); out.write(reinterpret_cast<const char*>(start_code_prefix+1), 3);
checkWriteError(out);
size += 3; size += 3;
} }
out << nalu.m_nalUnitData.str(); out << nalu.m_nalUnitData.str();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment