int UnescapeCEscapeString(const string& src, string* dest, vector<string> *errors) { scoped_array<char> unescaped(new char[src.size() + 1]); int len = UnescapeCEscapeSequences(src.c_str(), unescaped.get(), errors); GOOGLE_CHECK(dest); dest->assign(unescaped.get(), len); return len; }
virtual void UpdatePPSId(AP4_DataBuffer const &buffer) override { //Search the Slice header NALU const AP4_UI08 *data(buffer.GetData()); unsigned int data_size(buffer.GetDataSize()); for (; data_size;) { // sanity check if (data_size < naluLengthSize) break; // get the next NAL unit AP4_UI32 nalu_size; switch (naluLengthSize) { case 1:nalu_size = *data++; data_size--; break; case 2:nalu_size = AP4_BytesToInt16BE(data); data += 2; data_size -= 2; break; case 4:nalu_size = AP4_BytesToInt32BE(data); data += 4; data_size -= 4; break; default: data_size = 0; nalu_size = 1; break; } if (nalu_size > data_size) break; // Stop further NALU processing if (countPictureSetIds < 2) naluLengthSize = 0; unsigned int nal_unit_type = *data & 0x1F; if ( //nal_unit_type == AP4_AVC_NAL_UNIT_TYPE_CODED_SLICE_OF_NON_IDR_PICTURE || nal_unit_type == AP4_AVC_NAL_UNIT_TYPE_CODED_SLICE_OF_IDR_PICTURE //|| //nal_unit_type == AP4_AVC_NAL_UNIT_TYPE_CODED_SLICE_DATA_PARTITION_A || //nal_unit_type == AP4_AVC_NAL_UNIT_TYPE_CODED_SLICE_DATA_PARTITION_B || //nal_unit_type == AP4_AVC_NAL_UNIT_TYPE_CODED_SLICE_DATA_PARTITION_C ) { AP4_DataBuffer unescaped(data, data_size); AP4_NalParser::Unescape(unescaped); AP4_BitReader bits(unescaped.GetData(), unescaped.GetDataSize()); bits.SkipBits(8); // NAL Unit Type AP4_AvcFrameParser::ReadGolomb(bits); // first_mb_in_slice AP4_AvcFrameParser::ReadGolomb(bits); // slice_type pictureId = AP4_AvcFrameParser::ReadGolomb(bits); //picture_set_id } // move to the next NAL unit data += nalu_size; data_size -= nalu_size; } }
string UnescapeCEscapeString(const string& src) { scoped_array<char> unescaped(new char[src.size() + 1]); int len = UnescapeCEscapeSequences(src.c_str(), unescaped.get(), NULL); return string(unescaped.get(), len); }