本文整理汇总了C++中AP4_DataBuffer::SetData方法的典型用法代码示例。如果您正苦于以下问题:C++ AP4_DataBuffer::SetData方法的具体用法?C++ AP4_DataBuffer::SetData怎么用?C++ AP4_DataBuffer::SetData使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类AP4_DataBuffer
的用法示例。
在下文中一共展示了AP4_DataBuffer::SetData方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1:
/*----------------------------------------------------------------------
| AP4_DefaultFragmentHandler::ProcessSample
+---------------------------------------------------------------------*/
AP4_Result
AP4_DefaultFragmentHandler::ProcessSample(AP4_DataBuffer& data_in, AP4_DataBuffer& data_out)
{
if (m_TrackHandler == NULL) {
data_out.SetData(data_in.GetData(), data_in.GetDataSize());
return AP4_SUCCESS;
}
return m_TrackHandler->ProcessSample(data_in, data_out);
}
示例2: DecryptSampleData
/*----------------------------------------------------------------------
| WV_CencSingleSampleDecrypter::DecryptSampleData
+---------------------------------------------------------------------*/
AP4_Result WV_CencSingleSampleDecrypter::DecryptSampleData(
AP4_DataBuffer& data_in,
AP4_DataBuffer& data_out,
const AP4_UI08* iv,
unsigned int subsample_count,
const AP4_UI16* bytes_of_cleartext_data,
const AP4_UI32* bytes_of_encrypted_data)
{
// the output has the same size as the input
data_out.SetDataSize(data_in.GetDataSize());
if (!wv_adapter)
{
data_out.SetData(data_in.GetData(), data_in.GetDataSize());
return AP4_SUCCESS;
}
// check input parameters
if (iv == NULL) return AP4_ERROR_INVALID_PARAMETERS;
if (subsample_count) {
if (bytes_of_cleartext_data == NULL || bytes_of_encrypted_data == NULL) {
return AP4_ERROR_INVALID_PARAMETERS;
}
}
// transform ap4 format into cmd format
cdm::InputBuffer cdm_in;
if (subsample_count > max_subsample_count_)
{
subsample_buffer_ = (cdm::SubsampleEntry*)realloc(subsample_buffer_, subsample_count*sizeof(cdm::SubsampleEntry));
max_subsample_count_ = subsample_count;
}
for (cdm::SubsampleEntry *b(subsample_buffer_), *e(subsample_buffer_ + subsample_count); b != e; ++b, ++bytes_of_cleartext_data, ++bytes_of_encrypted_data)
{
b->clear_bytes = *bytes_of_cleartext_data;
b->cipher_bytes = *bytes_of_encrypted_data;
}
cdm_in.data = data_in.GetData();
cdm_in.data_size = data_in.GetDataSize();
cdm_in.iv = iv;
cdm_in.iv_size = 16; //Always 16, see AP4_CencSingleSampleDecrypter declaration.
cdm_in.key_id = wv_adapter->GetKeyId();
cdm_in.key_id_size = wv_adapter->GetKeyIdSize();
cdm_in.num_subsamples = subsample_count;
cdm_in.subsamples = subsample_buffer_;
CdmBuffer buf(&data_out);
CdmDecryptedBlock cdm_out;
cdm_out.SetDecryptedBuffer(&buf);
cdm::Status ret = wv_adapter->Decrypt(cdm_in, &cdm_out);
return (ret == cdm::Status::kSuccess) ? AP4_SUCCESS : AP4_ERROR_INVALID_PARAMETERS;
}
示例3: assert
/*----------------------------------------------------------------------
| AP4_LinearReader::PopSample
+---------------------------------------------------------------------*/
bool
AP4_LinearReader::PopSample(Tracker* tracker,
AP4_Sample& sample,
AP4_DataBuffer& sample_data)
{
SampleBuffer* head = NULL;
if (AP4_SUCCEEDED(tracker->m_Samples.PopHead(head))) {
assert(head->m_Sample);
sample = *head->m_Sample;
sample_data.SetData(head->m_Data.GetData(), head->m_Data.GetDataSize());
assert(m_BufferFullness >= sample.GetSize());
m_BufferFullness -= sample.GetSize();
delete head;
return true;
}
return false;
}
示例4: ProcessSample
virtual AP4_Result ProcessSample(AP4_DataBuffer& data_in,
AP4_DataBuffer& data_out) {
return data_out.SetData(data_in.GetData(), data_in.GetDataSize());
}
示例5: PrintUsageAndExit
/*----------------------------------------------------------------------
| main
+---------------------------------------------------------------------*/
int
main(int argc, char** argv)
{
AP4_Result result;
if (argc < 2) {
PrintUsageAndExit();
}
// open the input
AP4_ByteStream* input;
try {
input = new AP4_FileByteStream(argv[1], AP4_FileByteStream::STREAM_MODE_READ);
} catch (AP4_Exception&) {
AP4_Debug("ERROR: cannot open input (%s)\n", argv[1]);
return 1;
}
// open the output
AP4_ByteStream* output = new AP4_FileByteStream(
argv[2],
AP4_FileByteStream::STREAM_MODE_WRITE);
// create a sample table
AP4_SyntheticSampleTable* sample_table = new AP4_SyntheticSampleTable();
// create an ADTS parser
AP4_AdtsParser parser;
bool initialized = false;
unsigned int sample_description_index = 0;
// read from the input, feed, and get AAC frames
AP4_UI32 sample_rate = 0;
AP4_Cardinal sample_count = 0;
bool eos = false;
for(;;) {
// try to get a frame
AP4_AacFrame frame;
result = parser.FindFrame(frame);
if (AP4_SUCCEEDED(result)) {
AP4_Debug("AAC frame [%06d]: size = %d, %d kHz, %d ch\n",
sample_count,
frame.m_Info.m_FrameLength,
frame.m_Info.m_SamplingFrequency,
frame.m_Info.m_ChannelConfiguration);
if (!initialized) {
initialized = true;
// create a sample description for our samples
AP4_DataBuffer dsi;
unsigned char aac_dsi[2] = {0x12, 0x10};
dsi.SetData(aac_dsi, 2);
AP4_MpegAudioSampleDescription* sample_description =
new AP4_MpegAudioSampleDescription(
AP4_MPEG4_AUDIO_OTI, // object type
frame.m_Info.m_SamplingFrequency,
16, // sample size
frame.m_Info.m_ChannelConfiguration,
&dsi, // decoder info
6144, // buffer size
128000, // max bitrate
128000); // average bitrate
sample_description_index = sample_table->AddSampleDescription(sample_description);
sample_rate = frame.m_Info.m_SamplingFrequency;
}
AP4_MemoryByteStream* sample_data = new AP4_MemoryByteStream(frame.m_Info.m_FrameLength);
frame.m_Source->ReadBytes(sample_data->GetBuffer(), frame.m_Info.m_FrameLength);
printf("%02x %02x %02x %02x\n",
sample_data->GetBuffer()[0],
sample_data->GetBuffer()[1],
sample_data->GetBuffer()[2],
sample_data->GetBuffer()[3]);
sample_table->AddSample(*sample_data, 0, frame.m_Info.m_FrameLength, sample_description_index);
sample_data->Release();
sample_count++;
} else {
if (eos) break;
}
// read some data and feed the parser
AP4_UI08 input_buffer[4096];
AP4_Size bytes_read = 0;
AP4_Size to_read = parser.GetBytesFree();
if (to_read) {
if (to_read > sizeof(input_buffer)) to_read = sizeof(input_buffer);
result = input->Read(input_buffer, to_read, &bytes_read);
if (AP4_SUCCEEDED(result)) {
AP4_Size to_feed = bytes_read;
result = parser.Feed(input_buffer, &to_feed);
if (AP4_FAILED(result)) {
AP4_Debug("ERROR: parser.Feed() failed (%d)\n", result);
return 1;
}
} else {
if (result == AP4_ERROR_EOS) {
eos = true;
//.........这里部分代码省略.........